При написание dynservice-а возникла следующая проблема. После переопределения стандартного сервиса DeviceInterfaceServiceImpl, биллинг начинает выдавать exeption при вызове метода devicePortList. при этом данный метод не переопределялся. В настройках добавил следующую строку
Код:
dynservice:ru.bitel.oss.systems.inventory.resource.DeviceInterfaceService=ru.dsi.oss.systems.inventory.resource.common.DeviceInterfaceServiceImpl
Используемая версия билинга 5.2 jdk 1.6 . Код обертки
Код:
import javax.jws.WebService;
import org.apache.log4j.Logger;
import ru.bitel.bgbilling.common.BGException;
import ru.bitel.oss.systems.inventory.resource.common.DeviceInterfaceService;
import ru.bitel.oss.systems.inventory.resource.common.bean.DeviceInterface;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
/**
* Переопределение класса обработчика запросов на обновление/добавление порта
*/
@WebService(endpointInterface = "ru.bitel.oss.systems.inventory.resource.common.DeviceInterfaceService")
public class DeviceInterfaceServiceImpl
extends ru.bitel.oss.systems.inventory.resource.server.DeviceInterfaceServiceImpl
implements DeviceInterfaceService {
private static final Logger logger = Logger.getLogger(DeviceInterfaceServiceImpl.class);
@Override
public void devicePortUpdate(DeviceInterface port) throws BGException {
logger.debug("devicePortUpdate MID: " + this.moduleId);
try {
/**
* Проверить наличие интерфейса с таким title.
* Если интерфейс найден, запретить его создавать.
*/
Statement pst = this.getSlaveConnection().createStatement();
String sql = "SELECT 1 FROM inv_device_port_" + this.moduleId + " WHERE title='" + port.getTitle() + "'";
logger.debug("devicePortUpdate SQL: " + sql);
ResultSet result = pst.executeQuery(sql);
if (result.first()) {
throw new BGException("Вы не можете зарезервировать интерфейс " + port.getSubscriberTitle() + ", так как такой интерфейс уже существует.");
}
super.devicePortUpdate(port);
} catch (SQLException e) {
logger.error(e.getMessage());
throw new BGException(e);
}
}
}
Ошибка следующего содержания "javax.xml.ws.soap.SOAPFaultExeption:java.lang.NullPointerExeption"
Логи
Код:
java.lang.NullPointerException
at ru.bitel.oss.systems.inventory.resource.server.DeviceInterfaceServiceImpl.devicePortList(DeviceInterfaceServiceImpl.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at ru.bitel.bgbilling.kernel.container.service.server.ServiceInfo.invoke(ServiceInfo.java:102)
at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler.invoke(AbstractJaxWsHandler.java:192)
at ru.bitel.bgbilling.kernel.container.ws.server.JaxWsHandler.access$1(JaxWsHandler.java:1)
at ru.bitel.bgbilling.kernel.container.ws.server.JaxWsHandler$2.run(JaxWsHandler.java:312)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at ru.bitel.bgbilling.kernel.container.ws.server.JaxWsHandler.invoke(JaxWsHandler.java:306)
at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler$ServiceInstanceResolver$1.invoke(AbstractJaxWsHandler.java:304)
at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:150)
at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:261)
at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:100)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:641)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:600)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:585)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:482)
at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:314)
at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:608)
at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:259)
at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:162)
at ru.bitel.common.server.JaxWSAdapter.handle(JaxWSAdapter.java:389)
at bitel.billing.server.Executer.doPost(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at bitel.billing.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:48)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:403)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:301)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:162)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)