Я пытаюсь заменить стандартную инициализацию регистратора некоторой инжекцией
1-й.
Я пытался использовать сварку сварки, входящую в систему боб/веб-сервисы не сохраняющий состояние
@Stateless
@WebService
public class EchoSSL {
@Inject
private Logger log;
public EchoSSL() {
}
public String echo(String msg) {
log.debug("Log test");
return "Echoing: " + msg;
}
}
Но это не работающий на меня.. я получаю java.lang.reflect. InvocationTargetException
javax.servlet. ServletException: java.lang.reflect. InvocationTargetException в org.glassfish.webservices.monitoring. WebServiceTesterServlet.doPost(WebServiceTesterServlet.java:326) в org.glassfish.webservices.monitoring. WebServiceTesterServlet.invoke(WebServiceTesterServlet.java:102) в org.glassfish.webservices. EjbWebServiceServlet.service(EjbWebServiceServlet.java:110) в javax.servlet.http. HttpServlet.service(HttpServlet.java:847) в com.sun.grizzly.http.servlet. FilterChainImpl.doFilter(FilterChainImpl.java:195) в com.sun.grizzly.http.servlet. FilterChainImpl.invokeFilterChain(FilterChainImpl.java:139) в com.sun.grizzly.http.servlet. ServletAdapter.doService(ServletAdapter.java:376) в com.sun.grizzly.http.servlet. ServletAdapter.service(ServletAdapter.java:329) в com.sun.grizzly.tcp.http11. GrizzlyAdapter.service(GrizzlyAdapter.java:166) в com.sun.enterprise.v3.server. HK2Dispatcher.dispath (HK2Dispatcher.java:100) в com.sun.enterprise.v3.services.impl. ContainerMapper.service(ContainerMapper.java:245) в com.sun.grizzly.http. ProcessorTask.invokeAdapter(ProcessorTask.java:791) в com.sun.grizzly.http. ProcessorTask.doProcess(ProcessorTask.java:693) в com.sun.grizzly.http. ProcessorTask.process(ProcessorTask.java:954) в com.sun.grizzly.http. DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170) в com.sun.grizzly. DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135) в com.sun.grizzly. DefaultProtocolChain.execute(DefaultProtocolChain.java:102) в com.sun.grizzly. DefaultProtocolChain.execute(DefaultProtocolChain.java:88) в com.sun.grizzly.http. HttpProtocolChain.execute(HttpProtocolChain.java:76) в com.sun.grizzly. ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53) в com.sun.grizzly. SelectionKeyContextTask.call(SelectionKeyContextTask.java:57) в com.sun.grizzly. ContextTask.run(ContextTask.java:69) в com.sun.grizzly.util. AbstractThreadPool$Worker.doWork (AbstractThreadPool.java:330) в com.sun.grizzly.util. AbstractThreadPool$Worker.run (AbstractThreadPool.java:309) в java.lang. Thread.run (Поток java:619), Вызванный: java.lang.reflect. InvocationTargetException в sun.reflect. NativeMethodAccessorImpl.invoke0 (Собственный метод) в sun.reflect. NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) в sun.reflect. DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) в java.lang.reflect. Method.invoke (Метод java:597) в org.glassfish.webservices.monitoring. WebServiceTesterServlet.doPost(WebServiceTesterServlet.java:297)... 24 Более вызванных: javax.xml.ws.soap. SOAPFaultException: javax.ejb. EJBException в com.sun.xml.ws.fault. SOAP11Fault.getProtocolException (SOAP11Fault.java:189) в com.sun.xml.ws.fault. SOAPFaultBuilder.createException (SOAPFaultBuilder.java:130) в com.sun.xml.ws.client.sei. SyncMethodHandler.invoke(SyncMethodHandler.java:119) в com.sun.xml.ws.client.sei. SyncMethodHandler.invoke(SyncMethodHandler.java:89) в com.sun.xml.ws.client.sei. SEIStub.invoke (SEIStub.java:140) на уровне $Proxy484.sayHello (Неизвестный Источник)... 29 Более вызванных: javax.ejb. EJBException в com.sun.ejb.containers. BaseContainer.processSystemException(BaseContainer.java:5070) в com.sun.ejb.containers. BaseContainer.completeNewTx(BaseContainer.java:4968) в com.sun.ejb.containers. BaseContainer.postInvokeTx(BaseContainer.java:4756) в com.sun.ejb.containers. WebServiceInvocationHandler.invoke(WebServiceInvocationHandler.java:200) на уровне $Proxy464.sayHello (Неизвестный Источник) в sun.reflect. NativeMethodAccessorImpl.invoke0 (Собственный метод) в sun.reflect. NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) в sun.reflect. DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) в java.lang.reflect. Method.invoke (Метод java:597) в org.glassfish.webservices. InvokerImpl.invoke(InvokerImpl.java:78) в org.glassfish.webservices. EjbInvokerImpl.invoke(EjbInvokerImpl.java:78) в com.sun.xml.ws.server. InvokerTube$2.invoke (InvokerTube.java:146) в com.sun.xml.ws.server.sei. EndpointMethodHandler.invoke(EndpointMethodHandler.java:257) в com.sun.xml.ws.server.sei. SEIInvokerTube.processRequest (SEIInvokerTube.java:95) в com.sun.xml.ws.api.pipe. Волокно. __ doRun (Волокно java:629) в com.sun.xml.ws.api.pipe. Волокно. _ doRun (Волокно java:588) в com.sun.xml.ws.api.pipe. Fiber.doRun (Волокно java:573) в com.sun.xml.ws.api.pipe. Fiber.runSync (Волокно java:470) в com.sun.xml.ws.api.pipe.helper. AbstractTubeImpl.process(AbstractTubeImpl.java:112) в org.glassfish.webservices. MonitoringPipe.process(MonitoringPipe.java:138) в com.sun.xml.ws.api.pipe.helper. PipeAdapter.processRequest(PipeAdapter.java:115) в com.sun.xml.ws.api.pipe. Волокно. __ doRun (Волокно java:629) в com.sun.xml.ws.api.pipe. Волокно. _ doRun (Волокно java:588) в com.sun.xml.ws.api.pipe. Fiber.doRun (Волокно java:573) в com.sun.xml.ws.api.pipe. Fiber.runSync (Волокно java:470) в com.sun.xml.ws.api.pipe.helper. AbstractTubeImpl.process(AbstractTubeImpl.java:112) в com.sun.xml.ws.tx.service. TxServerPipe.process(TxServerPipe.java:306) в com.sun.xml.ws.api.pipe.helper. PipeAdapter.processRequest(PipeAdapter.java:115) в com.sun.xml.ws.api.pipe. Волокно. __ doRun (Волокно java:629) в com.sun.xml.ws.api.pipe. Волокно. _ doRun (Волокно java:588) в com.sun.xml.ws.api.pipe. Fiber.doRun (Волокно java:573) в com.sun.xml.ws.api.pipe. Fiber.runSync (Волокно java:470) в com.sun.xml.ws.api.pipe.helper. AbstractTubeImpl.process(AbstractTubeImpl.java:112) в com.sun.enterprise.security.webservices. CommonServerSecurityPipe.processRequest(CommonServerSecurityPipe.java:195) в com.sun.enterprise.security.webservices. CommonServerSecurityPipe.process(CommonServerSecurityPipe.java:127) в com.sun.xml.ws.api.pipe.helper. PipeAdapter.processRequest(PipeAdapter.java:115) в com.sun.xml.ws.api.pipe. Волокно. __ doRun (Волокно java:629) в com.sun.xml.ws.api.pipe. Волокно. _ doRun (Волокно java:588) в com.sun.xml.ws.api.pipe. Fiber.doRun (Волокно java:573) в com.sun.xml.ws.api.pipe. Fiber.runSync (Волокно java:470) в com.sun.xml.ws.server. WSEndpointImpl$2.process (WSEndpointImpl.java:295) в com.sun.xml.ws.transport.http. HttpAdapter$HttpToolkit.handle (HttpAdapter.java:519) в com.sun.xml.ws.transport.http. HttpAdapter.handle(HttpAdapter.java:288) в com.sun.xml.ws.transport.http.servlet. ServletAdapter.handle(ServletAdapter.java:143) в org.glassfish.webservices. Ejb3MessageDispatcher.handlePost(Ejb3MessageDispatcher.java:116) в org.glassfish.webservices. Ejb3MessageDispatcher.invoke(Ejb3MessageDispatcher.java:87) в org.glassfish.webservices. EjbWebServiceServlet.dispatchToEjbEndpoint(EjbWebServiceServlet.java:196) в org.glassfish.webservices. EjbWebServiceServlet.service(EjbWebServiceServlet.java:127)... 22 Более вызванных: java.lang. NullPointerException в ua.eset.inferno.heresy.ws.security. Hello.sayHello (Привет java:33) в sun.reflect. NativeMethodAccessorImpl.invoke0 (Собственный метод) в sun.reflect. NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) в sun.reflect. DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) в java.lang.reflect. Method.invoke (Метод java:597) в org.glassfish.ejb.security.application. EJBSecurityManager.runMethod (EJBSecurityManager.java:1056) в org.glassfish.ejb.security.application. EJBSecurityManager.invoke (EJBSecurityManager.java:1128) в com.sun.ejb.containers. BaseContainer.invokeBeanMethod(BaseContainer.java:5243) в com.sun.ejb. EjbInvocation.invokeBeanMethod(EjbInvocation.java:615) в com.sun.ejb.containers.interceptors. AroundInvokeChainImpl.invokeNext(InterceptorManager.java:797) в com.sun.ejb. EjbInvocation.proceed(EjbInvocation.java:567) в com.sun.ejb.containers.interceptors. SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:157) в com.sun.ejb.containers.interceptors. SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:139) в sun.reflect. NativeMethodAccessorImpl.invoke0 (Собственный метод) в sun.reflect. NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) в sun.reflect. DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) в java.lang.reflect. Method.invoke (Метод java:597) в com.sun.ejb.containers.interceptors. AroundInvokeInterceptor.intercept(InterceptorManager.java:858) в com.sun.ejb.containers.interceptors. AroundInvokeChainImpl.invokeNext(InterceptorManager.java:797) в com.sun.ejb.containers.interceptors. InterceptorManager.intercept(InterceptorManager.java:367) в com.sun.ejb.containers. BaseContainer. __ прерывание (BaseContainer.java:5215) в com.sun.ejb.containers. BaseContainer.intercept(BaseContainer.java:5203) в com.sun.ejb.containers. WebServiceInvocationHandler.invoke(WebServiceInvocationHandler.java:188)... Еще 66
Что пропущено?
2-й
чем я пробую это учебное руководство, на которое ссылаются к этому - Пользовательские Инжекции
Но это также dosen't справка.
зависимости знатока -
org.jboss.weld
weld-logger
1.0.0-CR2
org.jboss.weld
weld-extensions
1.0.0.Alpha1
org.jboss.weld
weld-api
1.0-CR2
org.jboss.weld
weld-core
1.0.1-CR2
Q1: Каково правило инжекции Регистратора сварки в ejb / веб-сервисы?
Q2: это могла быть проблема wsdl/EJB/WebService?
Убедитесь, что ваш bean-компонент находится в архиве bean-компонентов, т.е. что у вас есть META-INF / beans.xml
помимо расширения weld , с чем я не могу вам помочь, если вы не укажете исключение целиком, вы можете создать производителя, который @Produces
a Logger
Производитель регистратора slf4j по умолчанию определен в Weld Extensions . Вы можете увидеть, как записывается производитель здесь , если вы хотите подключить свой собственный, не включая все расширения Weld Extensions.
Вот мой подход:
Добавьте следующие зависимости в pom.xml:
<!-- SL4J API -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.0</version>
</dependency>
<!-- SLF4J JDK14 Binding -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>1.6.0</version>
</dependency>
<!-- Injectable Weld-Logger -->
<dependency>
<groupId>org.jboss.weld</groupId>
<artifactId>weld-logger</artifactId>
<version>1.0.0-CR2</version>
</dependency>
Вставьте логгер и используйте его как обычно:
import javax.inject.Inject;
import org.slf4j.Logger;
public class Example {
@Inject
private Logger logger;
public void exampleFunc() {
logger.info("Hello Logger!");
}
}
Если вы хотите использовать Log4J вместо SLF4J-JDK14-binding, я нашел эту страницу. Я попробовал, но не смог заставить его работать, так что я по-прежнему придерживаюсь своего собственного решения.