BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 18 июн 2019, 17:43

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Обещанный платеж
СообщениеДобавлено: 15 мар 2019, 16:53 
Не в сети

Зарегистрирован: 29 май 2018, 18:12
Сообщения: 44
Карма: 0
Пытаюсь сделать услугу "обещанный платеж" для абонентов. Но так, чтобы абонент не выбирал срок и сумму, а просто нажал на кнопку в новом ЛК. Срок фиксированный, а недостающая для активации сумма вычисляется и на нее понижается лимит.
Но как-то криво все выходит:
1. Событие понижения лимита пользователем вызывается после его понижения, что убивает возможность внесения изменений в сумму и срок постфактум, т.е. стандартный limitBean использовать не получается, ибо до его вызова надо как-то просчитать необходимую для активации сумму, но как воспользоваться calculator в limit.xhtml вариантов не вижу.
2. Можно сделать через дополнительное действие, но там надо тогда делать разнообразные проверки, типа не заблокирована ли у абонента возможность управления лимитом через web, есть ли у него просроченные платежи. Готовых инструментов для работы с этим я не нашел, остается вариант прямой работы с базой contract_limit_manage_mode.
Встает вопрос, я правильно мыслю, или чего-то не догоняю?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обещанный платеж
СообщениеДобавлено: 15 мар 2019, 17:02 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5779
Карма: 465
Код:
import java.io.Serializable;
import javax.annotation.PostConstruct;
import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.bitel.bgbilling.common.BGException;
import ru.bitel.bgbilling.common.BGMessageException;
import ru.bitel.mybgbilling.kernel.common.AbstractBean;
import ru.bitel.mybgbilling.kernel.common.inject.BGInject;
import ru.bitel.mybgbilling.kernel.common.inject.BGInjection;
import ru.bitel.mybgbilling.kernel.contract.BalanceBean;
import ru.bitel.mybgbilling.kernel.contract.LimitBean;
import ru.bitel.mybgbilling.kernel.contract.StatusBean;
import ru.ellco.bgbilling.kernel.scripts.mybgbilling.MyBGBillingService;

@Named
@ViewScoped
@BGInjection
public class MyLimitBean extends AbstractBean implements Serializable {
    private static final Logger logger = LoggerFactory.getLogger(MyLimitBean.class);
    @Inject
    private BalanceBean balanceBean;
    @Inject
    private LimitBean limitBean;
    @Inject
    private StatusBean statusBean;
    @BGInject
    private MyBGBillingService myBGBillingService;

    public MyLimitBean() {
    }

    @PostConstruct
    protected void init() throws BGException {
        super.init();
        this.populate();
    }

    public void populate() throws BGException {
    }

    public void lowerLimit() throws BGException {
        try {
            this.myBGBillingService.lowerLimit(this.getContractId());
            this.balanceBean.populateCurrentContractBalance();
            this.limitBean.populate();
            this.statusBean.populate();
            this.addInfoMessage((String)null, "Доверительный платёж подключен на 3 дня");
        } catch (BGMessageException var5) {
            this.addErrorMessage((String)null, var5.getMessage());
        } finally {
            this.populate();
        }

    }

    public String getContractMoveTasks() throws BGException {
        return this.myBGBillingService.getContractMoveTasks(this.getContractId());
    }
}


Код:
@Override
    public void lowerLimit(int contractId) throws BGMessageException {
        try {
            ContractService contractService = this.context.getService(ContractService.class, 0);
            ContractStatusService contractStatusService = this.context.getService(ContractStatusService.class, 0);
            ContractLimitService contractLimitService = this.context.getService(ContractLimitService.class, 0);
            BalanceService balanceService = this.context.getService(BalanceService.class, 0);
            Calendar cal = Calendar.getInstance();
            Calendar cal2 = (Calendar) cal.clone();
            cal2.add(Calendar.MONTH, -2);


            Contract contract = contractService.contractGet(contractId);
            if (contract.getBalanceMode() != 1 || contract.getPersonType() != 0) {
                throw new BGMessageException("Возможность получения доверительного платежа заблокирована");
            } else if (contract.getStatus() != 0 && contract.getStatus() != 3) {
                throw new BGMessageException("Текущий статус договора не позволяет воспользоваться доверительным платежом");
            } else if (balanceService.contractBalanceGet(contractId, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1).toBalance().compareTo(BigDecimal.ZERO) < 0) {
                throw new BGMessageException("Доверительный платёж можно получить при положительном балансе");
            } else if (contractLimitService.getCurrentContractLimit(contractId).compareTo(BigDecimal.ZERO) < 0) {
                throw new BGMessageException("Доверительный платёж уже подключён");
            } else if (TimeUtils.dateBefore(cal2.getTime(), contract.getDateFrom())) {
                throw new BGMessageException("Договор действует менее 2 месяцев");
            } else {
                BigDecimal newLimit = getLimitAmount(contractId);
                if (newLimit.compareTo(BigDecimal.ZERO) == 0) {
                    AlarmSender.sendAlarm(new AlarmErrorMessage("mybgbilling.limitService", "Ошибка при подключении доверительного платежа " + MyBGBillingServiceImpl.class, "Какая-то хуйня на договоре с id=" + contractId + " при подключении лимита из ЛК\n. Не удалось вычислить сумму тарифа."), System.currentTimeMillis());
                    throw new BGMessageException("Не удалось вычислить цену тарифного плана. Администраторы уведомлены о возникшей проблеме. Пожалуйста, попробуйте позже.");
                }
                contractLimitService.updateContractLimitPeriod(contractId, newLimit.negate(), COUNT_DAYS_LIMIT, "Доверительный платёж");
                if (contract.getStatus() != 0) {
                    ContractStatus contractStatus = new ContractStatus();
                    contractStatus.setStatus(0);
                    contractStatus.setDateFrom(new Date());
                    contractStatus.setContractId(contractId);
                    contractStatus.setComment("Установлен при взятии доверительного платежа");
                    contractStatusService.contractStatusChange(contractId, contractStatus, false);
                }
            }
        } catch (BGMessageException e) {
            throw new BGMessageException(e.getMessage());
        } catch (BGException e) {
            AlarmSender.sendAlarm(new AlarmErrorMessage("mybgbilling.limitService", "Ошибка при подключении доверительного платежа " + MyBGBillingServiceImpl.class, "Какая-то хуйня на договоре с id=" + contractId + " при подключении лимита из ЛК\n" + e), System.currentTimeMillis());
        }
    }


Код:
private BigDecimal getLimitAmount(int contractId) {
        BigDecimal result = BigDecimal.ZERO;
        try {
            ContractTariffService contractTariffService = this.context.getService(ContractTariffService.class, 0);
            TariffService tariffService = this.context.getService(TariffService.class, 0);
            List<ContractTariff> contractTariffList = contractTariffService.contractTariffList(contractId, new Date(), 0, 0);
            for (ContractTariff contractTariff : contractTariffList) {
                BigDecimal tariffPrice = Utils.parseBigDecimal(tariffService.tariffPlanGet(contractTariff.getTariffPlanId()).getConfigPreferences().get("price"), BigDecimal.ZERO);
                String tariffType = tariffService.tariffPlanGet(contractTariff.getTariffPlanId()).getConfigPreferences().get("type");
                if (tariffType != null && tariffType.equals("month") && tariffPrice.compareTo(BigDecimal.ZERO) > 0) {
                    tariffPrice = tariffPrice.divide(new BigDecimal(30), RoundingMode.HALF_UP);
                }
                tariffPrice = tariffPrice.multiply(new BigDecimal(COUNT_DAYS_LIMIT));
                tariffPrice = tariffPrice.divide(new BigDecimal(50), RoundingMode.CEILING).multiply(new BigDecimal(50));
                result = result.add(tariffPrice);
            }
        } catch (BGException e) {
            logger.error(e);

        }
        return result;
    }


Код:
<ui:define name="page-content-header">
      <h1>#{msg['myLimit.title']}</h1>
      <!--<f:event listener="#{limitBean.populate}" type="preRenderView" /> -->
   </ui:define>

   <ui:define name="page-content-data">
      <div class="panel panel-default">
         <div class="panel-body">
            <div jsf:id="currentLimit" class="well ">
               <!-- Текущий лимит: x руб -->
               <strong>#{msg['myLimit.currentLimit']} <h:outputText value="#{limitBean.contractLimit}" converter="#{currencyConverter}"/></strong> <br /> <br />
            <em jsf:rendered="#{not empty myLimitBean.getContractMoveTasks()}"><h:outputText value="#{myLimitBean.getContractMoveTasks()}"/></em>
            </div>
            <em><h:outputText value="#{msg['myLimit.about']}" escape="false" /></em> <br /> <br />
            <div class="form-group">
               <h:commandButton type="button" class="btn btn-primary" value="Подключить доверительный платёж" action="#{myLimitBean.lowerLimit()}"
                  a:update-target="page-content-data">
                  <f:ajax render=":page-content-data :currentLimit " listener="#{limitBean.populate}"/>
               </h:commandButton>
            </div>
         </div>
      </div>
   </ui:define>


https://www.youtube.com/watch?v=2Kgzc1sUSWg


P.S. Видео снято до изменений, на рабочем уже не так как выше, но в целом путь ясен.

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Последний раз редактировалось Phricker 15 мар 2019, 17:13, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обещанный платеж
СообщениеДобавлено: 15 мар 2019, 17:05 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5779
Карма: 465
Я даже уверен что на рабочем уже не так, т.к. человек заводящий и редактирующий тарифы вечно косячит
с установкой month/day и я туда впилил еще проверку на сумму лимита. Так же через AlarmSender.
А может и еще параллельно что-то поправил.

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обещанный платеж
СообщениеДобавлено: 15 мар 2019, 17:51 
Не в сети

Зарегистрирован: 29 май 2018, 18:12
Сообщения: 44
Карма: 0
Большое спасибо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обещанный платеж
СообщениеДобавлено: 19 мар 2019, 18:08 
Не в сети

Зарегистрирован: 29 май 2018, 18:12
Сообщения: 44
Карма: 0
Прошу прощения за глупый вопрос, но...как это скомпилировать? То javax... не находит, то ru.bitel.bgbilling...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обещанный платеж
СообщениеДобавлено: 04 апр 2019, 14:04 
Не в сети

Зарегистрирован: 15 мар 2019, 11:01
Сообщения: 2
Карма: 0
UP!

DVShatskikh, выше приведены отдельные куски кода. Попробуйте почитать тему "Создание собственной страницы" в документации к новому ЛК.

У меня же вопрос следующий возник. Задача все та же, по нажатию 1 кнопки делать клиенту хорошо. Исходя из примера я сделал следующее (прошу прощения если что-то не то сделал, впервые делаю свой экшен в ЛК):

Интерфейс:
Код:
// MyLimitService.java
package net.sparktell.Scripts;
 
import javax.jws.WebService;
import ru.bitel.bgbilling.common.*;

@WebService
public interface MyLimitService
{   
   public void lowerLimit(int contractId) throws BGMessageException;
}

который положил в ЛК биллинга.

Класс:
Код:
// MyLimitServiceImpl.java
package net.sparktell.Scripts.impl;

import net.sparktell.Scripts.MyLimitService;

import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Date;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
import javax.jws.WebService;

import bitel.billing.server.admin.errorlog.bean.*;
import bitel.billing.server.admin.errorlog.*;

import ru.bitel.common.Utils;
import ru.bitel.common.TimeUtils;
import ru.bitel.bgbilling.kernel.container.service.server.AbstractService;
import ru.bitel.bgbilling.kernel.contract.api.common.bean.*;
import ru.bitel.bgbilling.kernel.contract.api.common.service.*;
import ru.bitel.bgbilling.kernel.tariff.common.service.*;
import ru.bitel.bgbilling.kernel.contract.limit.common.service.ContractLimitService;
import ru.bitel.bgbilling.kernel.contract.balance.common.BalanceService;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.bgbilling.common.*;
 
@WebService(name = "MyLimitService", endpointInterface = "net.sparktell.Scripts.MyLimitService")
public class MyLimitServiceImpl extends AbstractService implements MyLimitService {
   
   private int COUNT_DAYS_LIMIT = 3;
   private Logger logger = Logger.getLogger("MyLimitServiceImpl");
   
   @Override
    public void lowerLimit(int contractId) throws BGMessageException {
        try {
            ContractService contractService = this.context.getService(ContractService.class, 0);
            ContractStatusService contractStatusService = this.context.getService(ContractStatusService.class, 0);
            ContractLimitService contractLimitService = this.context.getService(ContractLimitService.class, 0);
            BalanceService balanceService = this.context.getService(BalanceService.class, 0);
            Calendar cal = Calendar.getInstance();
            Calendar cal2 = (Calendar) cal.clone();
            cal2.add(Calendar.MONTH, -2);

            Contract contract = contractService.contractGet(contractId);
            if (contract.getBalanceMode() != 1 || contract.getPersonType() != 0) {
                throw new BGMessageException("Возможность получения доверительного платежа заблокирована");
            } else if (contract.getStatus() != 0 && contract.getStatus() != 3) {
                throw new BGMessageException("Текущий статус договора не позволяет воспользоваться доверительным платежом");
            } else if (balanceService.contractBalanceGet(contractId, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1).toBalance().compareTo(BigDecimal.ZERO) < 0) {
                throw new BGMessageException("Доверительный платёж можно получить при положительном балансе");
            } else if (contractLimitService.getCurrentContractLimit(contractId).compareTo(BigDecimal.ZERO) < 0) {
                throw new BGMessageException("Доверительный платёж уже подключён");
            } else if (TimeUtils.dateBefore(cal2.getTime(), contract.getDateFrom())) {
                throw new BGMessageException("Договор действует менее 2 месяцев");
            } else {
                BigDecimal newLimit = getLimitAmount(contractId);
                if (newLimit.compareTo(BigDecimal.ZERO) == 0) {
                    AlarmSender.sendAlarm(new AlarmErrorMessage("mybgbilling.limitService", "Ошибка при подключении доверительного платежа " + MyLimitServiceImpl.class, "Какая-то фигня на договоре с id=" + contractId + " при подключении лимита из ЛК\n. Не удалось вычислить сумму тарифа."), System.currentTimeMillis());
                    throw new BGMessageException("Не удалось вычислить цену тарифного плана. Администраторы уведомлены о возникшей проблеме. Пожалуйста, попробуйте позже.");
                }
                contractLimitService.updateContractLimitPeriod(contractId, newLimit.negate(), COUNT_DAYS_LIMIT, "Доверительный платёж");
                if (contract.getStatus() != 0) {
                    ContractStatus contractStatus = new ContractStatus();
                    contractStatus.setStatus(0);
                    contractStatus.setDateFrom(new Date());
                    contractStatus.setContractId(contractId);
                    contractStatus.setComment("Установлен при взятии доверительного платежа");
                    contractStatusService.contractStatusChange(contractId, contractStatus, false);
                }
            }
        } catch (BGMessageException e) {
            throw new BGMessageException(e.getMessage());
        } catch (BGException e) {
            AlarmSender.sendAlarm(new AlarmErrorMessage("mybgbilling.limitService", "Ошибка при подключении доверительного платежа " + MyLimitServiceImpl.class, "Какая-то фигня на договоре с id=" + contractId + " при подключении лимита из ЛК\n" + e), System.currentTimeMillis());
        }
    }
   
   
    private BigDecimal getLimitAmount(int contractId) {
        BigDecimal result = BigDecimal.ZERO;
        try {
            ContractTariffService contractTariffService = this.context.getService(ContractTariffService.class, 0);
            TariffService tariffService = this.context.getService(TariffService.class, 0);
            List<ContractTariff> contractTariffList = contractTariffService.contractTariffList(contractId, new Date(), 0, 0);
            for (ContractTariff contractTariff : contractTariffList) {
                BigDecimal tariffPrice = Utils.parseBigDecimal(tariffService.tariffPlanGet(contractTariff.getTariffPlanId()).getConfigPreferences().get("price"), BigDecimal.ZERO);
                String tariffType = tariffService.tariffPlanGet(contractTariff.getTariffPlanId()).getConfigPreferences().get("type");
                if (tariffType != null && tariffType.equals("month") && tariffPrice.compareTo(BigDecimal.ZERO) > 0) {
                    tariffPrice = tariffPrice.divide(new BigDecimal(30), RoundingMode.HALF_UP);
                }
                tariffPrice = tariffPrice.multiply(new BigDecimal(COUNT_DAYS_LIMIT));
                tariffPrice = tariffPrice.divide(new BigDecimal(50), RoundingMode.CEILING).multiply(new BigDecimal(50));
                result = result.add(tariffPrice);
            }
        } catch (BGException e) {
            logger.error(e);

        }
        return result;
    }
}

который лежит в самом биллинге - динамический код.

Контроллер:
Код:
import java.io.Serializable;
import javax.annotation.PostConstruct;
import javax.enterprise.context.RequestScoped;
import javax.enterprise.context.SessionScoped;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.bitel.bgbilling.common.BGException;
import ru.bitel.bgbilling.common.BGMessageException;
import ru.bitel.mybgbilling.kernel.common.AbstractBean;
import ru.bitel.mybgbilling.kernel.common.inject.BGInject;
import ru.bitel.mybgbilling.kernel.common.inject.BGInjection;
import ru.bitel.mybgbilling.kernel.contract.BalanceBean;
import ru.bitel.mybgbilling.kernel.contract.LimitBean;
import ru.bitel.mybgbilling.kernel.contract.StatusBean;
import net.sparktell.Scripts.MyLimitService;

@Named
@ViewScoped // 1.
@BGInjection // 2.
public class MyLimitBean extends AbstractBean implements Serializable {
    private static final Logger logger = LoggerFactory.getLogger(MyLimitBean.class);
    @Inject
    private BalanceBean balanceBean;
    @Inject
    private LimitBean limitBean;
    @Inject
    private StatusBean statusBean;
    @BGInject
    private MyLimitService myLimitService;

   @Override
    protected void init() throws BGException {
        populate();
    }

    public void populate() throws BGException {
    }

    public void lowerLimit() throws BGException {
        try {
            myLimitService.lowerLimit(60);
            balanceBean.populateCurrentContractBalance();
            limitBean.populate();
            statusBean.populate();
            addInfoMessage((String)null, "Доверительный платёж подключен на 3 дня");
        } catch (BGMessageException var5) {
            addErrorMessage((String)null, var5.getMessage());
        } finally {
            populate();
        }

    }

    public String getContractMoveTasks() throws BGException {
        return myLimitService.getContractMoveTasks(this.getContractId());
    }
}

который так же лежит в ЛК биллинга.

View:
Код:
<?xml version="1.0" encoding="UTF-8"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html" xmlns:jsf="http://xmlns.jcp.org/jsf"
    xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core"
    xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions"
    xmlns:b="http://java.sun.com/jsf/composite/composite" xmlns:namespace="http://java.sun.com/jsf/composite/namespace"
    xmlns:bts="http://java.sun.com/jsf/composite/bts" xmlns:a="http://xmlns.jcp.org/jsf/passthrough"
    template="/WEB-INF/template/page-wrapper.xhtml">
 
    <ui:define name="page-content-header">
      <h1>Доверительный платеж</h1>
   </ui:define>

   <ui:define name="page-content-data">
      <div class="panel panel-default">
         <div class="panel-body">
            <div jsf:id="currentLimit" class="well ">
               <strong>#{msg['limitBean.currentLimit']} <h:outputText value="#{limitBean.contractLimit}" converter="#{currencyConverter}"/></strong> <br /> <br />
           
            </div>
            <em><h:outputText value="#{msg['myLimit.about']}" escape="false" /></em> <br /> <br />
            <div class="form-group">
               <h:commandButton type="button" class="btn btn-primary" value="Подключить доверительный платёж" action="#{myLimitBean.lowerLimit()}"
                  a:update-target="page-content-data">
                  <f:ajax render=":page-content-data :currentLimit " listener="#{limitBean.populate}"/>
               </h:commandButton>
            </div>
         </div>
      </div>
   </ui:define>   
</ui:composition>

то же в ЛК биллинга;

Так вот, при нажатии на кнопку Подключить платеж, в логах ЛК вижу следующее:
Код:
2019-04-04 10:59:18,524 INFO  [ru.bitel.mybgbilling.kernel.navigation.NavigationBean] (default task-57) page=limit/myLimit => WEB-INF/content/limit/myLimit
2019-04-04 10:59:18,524 INFO  [ru.bitel.mybgbilling.kernel.navigation.NavigationBean] (default task-57) moduleId=0
2019-04-04 10:59:19,500 INFO  [stdout] (default task-58) http://billing.sparktell.net/bgbilling/executer/net.sparktell.Scripts/MyLimitService?wsdl
2019-04-04 10:59:19,512 INFO  [stdout] (default task-58) http://billing.sparktell.net/bgbilling/executer/net.sparktell.Scripts/MyLimitService?wsdl
2019-04-04 10:59:19,519 ERROR [ru.bitel.mybgbilling.kernel.common.inject.InjectManager] (default task-58) org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.: javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
   at org.apache.cxf.jaxws.ServiceImpl.initialize(ServiceImpl.java:163)
   at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:129)
   at org.jboss.wsf.stack.cxf.client.ProviderImpl$JBossWSServiceImpl.<init>(ProviderImpl.java:572)
   at org.jboss.wsf.stack.cxf.client.ProviderImpl.createServiceDelegate(ProviderImpl.java:256)
   at javax.xml.ws.Service.<init>(Service.java:57)
   at javax.xml.ws.Service.create(Service.java:687)
   at ru.bitel.bgbilling.kernel.container.ws.common.WSClient.getService(WSClient.java:293)
   at ru.bitel.bgbilling.kernel.container.ws.common.WSClient.getPort(WSClient.java:356)
   at ru.bitel.mybgbilling.kernel.ws.WSClient.getPort(WSClient.java:199)
   at ru.bitel.mybgbilling.kernel.ws.WSClient.getPort(WSClient.java:62)
   at ru.bitel.mybgbilling.kernel.common.MySessionBean.lambda$null$0(MySessionBean.java:130)
   at ru.bitel.mybgbilling.kernel.ws.Pool.take(Pool.java:78)
   at ru.bitel.mybgbilling.kernel.common.MySessionBean.lambda$getPort$2(MySessionBean.java:131)
   at java.util.HashMap.computeIfAbsent(HashMap.java:1127)
   at ru.bitel.mybgbilling.kernel.common.MySessionBean.getPort(MySessionBean.java:129)
   at ru.bitel.mybgbilling.kernel.common.MySessionBean$Proxy$_$$_WeldClientProxy.getPort(Unknown Source)
   at ru.bitel.mybgbilling.kernel.ws.WSInjectManager$1.process(WSInjectManager.java:127)
   at ru.bitel.mybgbilling.kernel.common.inject.InjectPlan.process(InjectPlan.java:33)
   at ru.bitel.mybgbilling.kernel.common.inject.InjectManager.process(InjectManager.java:35)
   at ru.bitel.mybgbilling.kernel.ws.WSInjectManager$Proxy$_$$_WeldClientProxy.process(Unknown Source)
   at ru.bitel.mybgbilling.kernel.ws.WSInjectInterceptor.initialize(WSInjectInterceptor.java:139)
   at sun.reflect.GeneratedMethodAccessor124.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:498)
   at org.jboss.weld.interceptor.reader.SimpleInterceptorInvocation$SimpleMethodInvocation.invoke(SimpleInterceptorInvocation.java:74)
   at org.jboss.weld.interceptor.proxy.WeldInvocationContext.invokeNext(WeldInvocationContext.java:83)
   at org.jboss.weld.interceptor.proxy.WeldInvocationContext.proceed(WeldInvocationContext.java:115)
   at ru.bitel.mybgbilling.kernel.directory.DirectoryInjectInterceptor.initialize(DirectoryInjectInterceptor.java:51)
   at sun.reflect.GeneratedMethodAccessor123.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:498)
   at org.jboss.weld.interceptor.reader.SimpleInterceptorInvocation$SimpleMethodInvocation.invoke(SimpleInterceptorInvocation.java:74)
   at org.jboss.weld.interceptor.proxy.WeldInvocationContext.invokeNext(WeldInvocationContext.java:83)
   at org.jboss.weld.interceptor.proxy.WeldInvocationContext.proceed(WeldInvocationContext.java:115)
   at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeLifecycleInterception(InterceptorMethodHandler.java:78)
   at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeInterception(InterceptorMethodHandler.java:74)
   at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.invoke(InterceptorMethodHandler.java:48)
   at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:84)
   at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:61)
   at org.jboss.weld.proxies.MyLimitBean$Proxy$_$$_WeldSubclass.lifecycle_mixin_$$_postConstruct(Unknown Source)
   at org.jboss.weld.interceptor.util.InterceptionUtils.executePostConstruct(InterceptionUtils.java:49)
   at org.jboss.weld.interceptor.util.InterceptionUtils.executePostConstruct(InterceptionUtils.java:61)
   at org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoker.postConstruct(DefaultLifecycleCallbackInvoker.java:79)
   at org.jboss.weld.injection.producer.BasicInjectionTarget.postConstruct(BasicInjectionTarget.java:126)
   at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:162)
   at org.jboss.weld.util.bean.IsolatedForwardingBean.create(IsolatedForwardingBean.java:45)
   at com.sun.faces.application.view.ViewScopeContextManager.createBean(ViewScopeContextManager.java:144)
   at com.sun.faces.application.view.ViewScopeContext.get(ViewScopeContext.java:137)
   at org.jboss.weld.context.PassivatingContextWrapper$AbstractPassivatingContextWrapper.get(PassivatingContextWrapper.java:76)
   at org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.get(ContextualInstanceStrategy.java:101)
   at org.jboss.weld.bean.ContextualInstance.get(ContextualInstance.java:50)
   at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:742)
   at org.jboss.weld.el.AbstractWeldELResolver.lookup(AbstractWeldELResolver.java:107)
   at org.jboss.weld.el.AbstractWeldELResolver.getValue(AbstractWeldELResolver.java:90)
   at org.jboss.as.jsf.injection.weld.ForwardingELResolver.getValue(ForwardingELResolver.java:46)
   at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:188)
   at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
   at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
   at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:116)
   at com.sun.el.parser.AstValue.getBase(AstValue.java:150)
   at com.sun.el.parser.AstValue.getTarget(AstValue.java:169)
   at com.sun.el.parser.AstValue.invoke(AstValue.java:274)
   at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304)
   at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
   at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
   at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
   at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
   at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
   at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
   at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
   at javax.faces.component.UICommand.broadcast(UICommand.java:315)
   at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
   at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
   at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
   at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
   at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
   at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
   at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
   at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
   at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
   at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
   at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
   at io.undertow.server.handlers.DisableCacheHandler.handleRequest(DisableCacheHandler.java:33)
   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
   at io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:53)
   at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
   at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
   at io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:59)
   at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
   at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
   at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
   at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
   at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
   at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
   at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
   at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
   at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
   at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
   at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
   at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
   at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
   at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
   at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
   at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
   at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
   at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
   at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
   at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
   at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:805)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
   at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
   at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:87)
   at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:218)
   at org.apache.cxf.jaxws.ServiceImpl.initialize(ServiceImpl.java:161)
   ... 116 more
Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character 'd' (code 100) after '<!' (malformed comment?)
 at [row,col,system-id]: [1,3,"http://billing.sparktell.net/bgbilling/executer/net.sparktell.Scripts/MyLimitService?wsdl"]
   at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:228)
   at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:163)
   at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:85)
   ... 118 more
Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character 'd' (code 100) after '<!' (malformed comment?)
 at [row,col,system-id]: [1,3,"http://billing.sparktell.net/bgbilling/executer/net.sparktell.Scripts/MyLimitService?wsdl"]
   at com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:647)
   at com.ctc.wstx.sr.BasicStreamReader.nextFromPrologBang(BasicStreamReader.java:2424)
   at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2065)
   at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1131)
   at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:1346)
   at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:1240)
   at org.apache.cxf.staxutils.StaxUtils.read(StaxUtils.java:1168)
   at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:219)
   ... 120 more

2019-04-04 10:59:19,529 WARNING [javax.enterprise.resource.webcontainer.jsf.lifecycle] (default task-58) #{myLimitBean.lowerLimit()}: java.lang.NullPointerException: Cannot invoke method lowerLimit() on null object: javax.faces.FacesException: #{myLimitBean.lowerLimit()}: java.lang.NullPointerException: Cannot invoke method lowerLimit() on null object
   at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
   at javax.faces.component.UICommand.broadcast(UICommand.java:315)
   at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
   at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
   at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
   at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
   at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
   at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
   at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
   at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
   at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
   at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
   at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
   at io.undertow.server.handlers.DisableCacheHandler.handleRequest(DisableCacheHandler.java:33)
   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
   at io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:53)
   at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
   at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
   at io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:59)
   at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
   at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
   at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
   at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
   at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
   at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
   at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
   at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
   at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
   at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
   at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
   at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
   at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
   at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
   at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
   at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
   at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
   at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
   at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
   at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
   at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:805)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
   at java.lang.Thread.run(Thread.java:748)
Caused by: javax.faces.el.EvaluationException: java.lang.NullPointerException: Cannot invoke method lowerLimit() on null object
   at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101)
   at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
   ... 47 more
Caused by: java.lang.NullPointerException: Cannot invoke method lowerLimit() on null object
   at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:91)
   at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48)
   at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
   at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:35)
   at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
   at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
   at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
   at MyLimitBean.lowerLimit(myLimitBean.java:44)
   at org.jboss.weld.proxies.MyLimitBean$Proxy$_$$_WeldSubclass.lowerLimit$$super(Unknown Source)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:498)
   at org.jboss.weld.interceptor.proxy.TerminalAroundInvokeInvocationContext.proceedInternal(TerminalAroundInvokeInvocationContext.java:49)
   at org.jboss.weld.interceptor.proxy.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:77)
   at ru.bitel.mybgbilling.kernel.ws.WSInjectInterceptor.aroundInvoke(WSInjectInterceptor.java:62)
   at sun.reflect.GeneratedMethodAccessor38.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:498)
   at org.jboss.weld.interceptor.reader.SimpleInterceptorInvocation$SimpleMethodInvocation.invoke(SimpleInterceptorInvocation.java:74)
   at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeAroundInvoke(InterceptorMethodHandler.java:84)
   at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeInterception(InterceptorMethodHandler.java:72)
   at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.invoke(InterceptorMethodHandler.java:56)
   at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:79)
   at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:68)
   at org.jboss.weld.proxies.MyLimitBean$Proxy$_$$_WeldSubclass.lowerLimit(Unknown Source)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:498)
   at javax.el.ELUtil.invokeMethod(ELUtil.java:300)
   at javax.el.BeanELResolver.invoke(BeanELResolver.java:415)
   at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:256)
   at com.sun.el.parser.AstValue.invoke(AstValue.java:285)
   at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304)
   at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
   at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
   at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
   at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
   at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
   at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
   ... 48 more

2019-04-04 10:59:19,530 INFO  [ru.bitel.mybgbilling.kernel.common.MyExceptionHandler] (default task-58) ERROR class javax.faces.FacesException
2019-04-04 10:59:19,530 SEVERE [javax.enterprise.resource.webcontainer.jsf.context] (default task-58) javax.faces.el.EvaluationException: java.lang.NullPointerException: Cannot invoke method lowerLimit() on null object
   at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101)
   at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
   at javax.faces.component.UICommand.broadcast(UICommand.java:315)
   at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
   at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
   at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
   at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
   at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
   at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
   at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
   at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
   at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
   at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
   at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
   at io.undertow.server.handlers.DisableCacheHandler.handleRequest(DisableCacheHandler.java:33)
   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
   at io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:53)
   at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
   at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
   at io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:59)
   at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
   at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
   at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
   at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
   at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
   at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
   at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
   at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
   at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
   at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
   at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
   at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
   at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
   at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
   at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
   at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
   at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
   at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
   at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
   at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
   at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:805)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
   at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException: Cannot invoke method lowerLimit() on null object
   at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:91)
   at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48)
   at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
   at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:35)
   at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
   at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
   at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
   at MyLimitBean.lowerLimit(myLimitBean.java:44)
   at org.jboss.weld.proxies.MyLimitBean$Proxy$_$$_WeldSubclass.lowerLimit$$super(Unknown Source)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:498)
   at org.jboss.weld.interceptor.proxy.TerminalAroundInvokeInvocationContext.proceedInternal(TerminalAroundInvokeInvocationContext.java:49)
   at org.jboss.weld.interceptor.proxy.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:77)
   at ru.bitel.mybgbilling.kernel.ws.WSInjectInterceptor.aroundInvoke(WSInjectInterceptor.java:62)
   at sun.reflect.GeneratedMethodAccessor38.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:498)
   at org.jboss.weld.interceptor.reader.SimpleInterceptorInvocation$SimpleMethodInvocation.invoke(SimpleInterceptorInvocation.java:74)
   at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeAroundInvoke(InterceptorMethodHandler.java:84)
   at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeInterception(InterceptorMethodHandler.java:72)
   at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.invoke(InterceptorMethodHandler.java:56)
   at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:79)
   at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:68)
   at org.jboss.weld.proxies.MyLimitBean$Proxy$_$$_WeldSubclass.lowerLimit(Unknown Source)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:498)
   at javax.el.ELUtil.invokeMethod(ELUtil.java:300)
   at javax.el.BeanELResolver.invoke(BeanELResolver.java:415)
   at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:256)
   at com.sun.el.parser.AstValue.invoke(AstValue.java:285)
   at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304)
   at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
   at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
   at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
   at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
   at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
   at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
   ... 48 more


В логах сервера:
Код:
04-04/10:59:19  WARN [http-nio-0.0.0.0-80-exec-1] AbstractJaxWsHandler - Class not found for net.sparktell.Scripts:MyLimitService
04-04/10:59:19 ERROR [http-nio-0.0.0.0-80-exec-1] JaxWSAdapter -
java.lang.NullPointerException
   at java.util.concurrent.ConcurrentHashMap.putVal(ConcurrentHashMap.java:1011)
   at java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:1006)
   at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler.getTarget(AbstractJaxWsHandler.java:179)
   at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler.getTarget(AbstractJaxWsHandler.java:111)
   at ru.bitel.bgbilling.kernel.container.ws.server.JaxWSAdapter.handle(JaxWSAdapter.java:300)
   at bitel.billing.server.Executer.doPost(SourceFile:175)
   at bitel.billing.server.Executer.doGet(SourceFile:145)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
   at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
   at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
   at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
   at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
   at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
   at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
   at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
   at java.lang.Thread.run(Thread.java:748)


Подскажите пожалуйста в какую сторону копать. В доках по собственной странице рассматривается простой пример без использования своего класса в рамках дин кода, да и здесь не удалось найти пример может более простой, но рабочий.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обещанный платеж
СообщениеДобавлено: 04 апр 2019, 16:45 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5779
Карма: 465
В динкоде тоже должен быть сервис.

И совсем забыл. Надо в конфиг сервера добавить строку навроде
Код:
dynservice:ru.ellco.bgbilling.kernel.scripts.mybgbilling.MyBGBillingService=ru.ellco.bgbilling.kernel.scripts.mybgbilling.MyBGBillingServiceImpl

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обещанный платеж
СообщениеДобавлено: 04 апр 2019, 16:49 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5779
Карма: 465
https://forum.bitel.ru/viewtopic.php?f=19&t=12831
Отсюда

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обещанный платеж
СообщениеДобавлено: 04 апр 2019, 16:56 
Не в сети

Зарегистрирован: 15 мар 2019, 11:01
Сообщения: 2
Карма: 0
Спасибо, Phricker!

Буду пробовать.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.054s | 37 Queries | GZIP : On ]