Обещанный платеж

Разработка скриптов BGBS. Работа напрямую с БД. Структура системы и БД. Разработка экшенов. Доработка шаблонов. Вопросы переноса данных из других систем. Вопросы интеграции биллинга с внешними системами.

Обещанный платеж

Сообщение DVShatskikh » 15 мар 2019, 16:53

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

Re: Обещанный платеж

Сообщение Phricker » 15 мар 2019, 17:02

$this->bbcode_second_pass_code('', '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());
}
}')

$this->bbcode_second_pass_code('', '@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());
}
}')

$this->bbcode_second_pass_code('', '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;
}')

$this->bbcode_second_pass_code('', '<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. Видео снято до изменений, на рабочем уже не так как выше, но в целом путь ясен.
Последний раз редактировалось Phricker 15 мар 2019, 17:13, всего редактировалось 2 раз(а).
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn
Аватара пользователя
Phricker
Клиент
 
Сообщения: 5775
Зарегистрирован: 29 мар 2010, 23:11

Re: Обещанный платеж

Сообщение Phricker » 15 мар 2019, 17:05

Я даже уверен что на рабочем уже не так, т.к. человек заводящий и редактирующий тарифы вечно косячит
с установкой month/day и я туда впилил еще проверку на сумму лимита. Так же через AlarmSender.
А может и еще параллельно что-то поправил.
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn
Аватара пользователя
Phricker
Клиент
 
Сообщения: 5775
Зарегистрирован: 29 мар 2010, 23:11

Re: Обещанный платеж

Сообщение DVShatskikh » 15 мар 2019, 17:51

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

Re: Обещанный платеж

Сообщение DVShatskikh » 19 мар 2019, 18:08

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

Re: Обещанный платеж

Сообщение olegasp » 04 апр 2019, 14:04

UP!

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

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

Интерфейс:
$this->bbcode_second_pass_code('', '
// 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;
}
')
который положил в ЛК биллинга.

Класс:
$this->bbcode_second_pass_code('', '
// 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;
}
}
')
который лежит в самом биллинге - динамический код.

Контроллер:
$this->bbcode_second_pass_code('', '
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:
$this->bbcode_second_pass_code('', '
<?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>
')
то же в ЛК биллинга;

Так вот, при нажатии на кнопку Подключить платеж, в логах ЛК вижу следующее:
$this->bbcode_second_pass_code('', '
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
')

В логах сервера:
$this->bbcode_second_pass_code('', '
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)
')

Подскажите пожалуйста в какую сторону копать. В доках по собственной странице рассматривается простой пример без использования своего класса в рамках дин кода, да и здесь не удалось найти пример может более простой, но рабочий.
olegasp
 
Сообщения: 2
Зарегистрирован: 15 мар 2019, 11:01

Re: Обещанный платеж

Сообщение Phricker » 04 апр 2019, 16:45

В динкоде тоже должен быть сервис.

И совсем забыл. Надо в конфиг сервера добавить строку навроде
$this->bbcode_second_pass_code('', 'dynservice:ru.ellco.bgbilling.kernel.scripts.mybgbilling.MyBGBillingService=ru.ellco.bgbilling.kernel.scripts.mybgbilling.MyBGBillingServiceImpl')
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn
Аватара пользователя
Phricker
Клиент
 
Сообщения: 5775
Зарегистрирован: 29 мар 2010, 23:11

Re: Обещанный платеж

Сообщение Phricker » 04 апр 2019, 16:49

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

Re: Обещанный платеж

Сообщение olegasp » 04 апр 2019, 16:56

Спасибо, Phricker!

Буду пробовать.
olegasp
 
Сообщения: 2
Зарегистрирован: 15 мар 2019, 11:01


Вернуться в API, скрипты, BGBS, программирование, структура системы

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

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