Iniettare logger, saldare
-
04-10-2019 - |
Domanda
che sto cercando di sostituire l'inizializzazione logger standard con qualche iniezione
1-st.
I stava cercando di utilizzare saldatura saldatura accedendo in bean senza stato / webservices
@Stateless
@WebService
public class EchoSSL {
@Inject
private Logger log;
public EchoSSL() {
}
public String echo(String msg) {
log.debug("Log test");
return "Echoing: " + msg;
}
}
Ma non funziona per me .. io ottenere java.lang.reflect.InvocationTargetException
javax.servlet.ServletException: java.lang.reflect.InvocationTargetException a org.glassfish.webservices.monitoring.WebServiceTesterServlet.doPost (WebServiceTesterServlet.java:326) a org.glassfish.webservices.monitoring.WebServiceTesterServlet.invoke (WebServiceTesterServlet.java:102) a org.glassfish.webservices.EjbWebServiceServlet.service (EjbWebServiceServlet.java:110) a javax.servlet.http.HttpServlet.service (HttpServlet.java:847) a com.sun.grizzly.http.servlet.FilterChainImpl.doFilter (FilterChainImpl.java:195) a com.sun.grizzly.http.servlet.FilterChainImpl.invokeFilterChain (FilterChainImpl.java:139) a com.sun.grizzly.http.servlet.ServletAdapter.doService (ServletAdapter.java:376) a com.sun.grizzly.http.servlet.ServletAdapter.service (ServletAdapter.java:329) a com.sun.grizzly.tcp.http11.GrizzlyAdapter.service (GrizzlyAdapter.java:166) a com.sun.enterprise.v3.server.HK2Dispatcher.dispath (HK2Dispatcher.java:100) a com.sun.enterprise.v3.services.impl.ContainerMapper.service (ContainerMapper.java:245) a com.sun.grizzly.http.ProcessorTask.invokeAdapter (ProcessorTask.java:791) a com.sun.grizzly.http.ProcessorTask.doProcess (ProcessorTask.java:693) a com.sun.grizzly.http.ProcessorTask.process (ProcessorTask.java:954) a com.sun.grizzly.http.DefaultProtocolFilter.execute (DefaultProtocolFilter.java:170) a com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter (DefaultProtocolChain.java:135) a com.sun.grizzly.DefaultProtocolChain.execute (DefaultProtocolChain.java:102) a com.sun.grizzly.DefaultProtocolChain.execute (DefaultProtocolChain.java:88) a com.sun.grizzly.http.HttpProtocolChain.execute (HttpProtocolChain.java:76) a com.sun.grizzly.ProtocolChainContextTask.doCall (ProtocolChainContextTask.java:53) a com.sun.grizzly.SelectionKeyContextTask.call (SelectionKeyContextTask.java:57) a com.sun.grizzly.ContextTask.run (ContextTask.java:69) a com.sun.grizzly.util.AbstractThreadPool $ Worker.doWork (AbstractThreadPool.java:330) a com.sun.grizzly.util.AbstractThreadPool $ Worker.run (AbstractThreadPool.java:309) a java.lang.Thread.run (Thread.java:619) Causato da: java.lang.reflect.InvocationTargetException a sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) a sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) a sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) a java.lang.reflect.Method.invoke (Method.java:597) a org.glassfish.webservices.monitoring.WebServiceTesterServlet.doPost (WebServiceTesterServlet.java:297) ... 24 maggiori causati da: javax.xml.ws.soap.SOAPFaultException: javax.ejb.EJBException a com.sun.xml.ws.fault.SOAP11Fault.getProtocolException (SOAP11Fault.java:189) a com.sun.xml.ws.fault.SOAPFaultBuilder.createException (SOAPFaultBuilder.java:130) a com.sun.xml.ws.client.sei.SyncMethodHandler.invoke (SyncMethodHandler.java:119) a com.sun.xml.ws.client.sei.SyncMethodHandler.invoke (SyncMethodHandler.java:89) a com.sun.xml.ws.client.sei.SEIStub.invoke (SEIStub.java:140) a $ Proxy484.sayHello (fonte sconosciuta) ... 29 maggiori causati da: javax.ejb.EJBException a com.sun.ejb.containers.BaseContainer.processSystemException (BaseContainer.java:5070) a com.sun.ejb.containers.BaseContainer.completeNewTx (BaseContainer.java:4968) a com.sun.ejb.containers.BaseContainer.postInvokeTx (BaseContainer.java:4756) a com.sun.ejb.containers.WebServiceInvocationHandler.invoke (WebServiceInvocationHandler.java:200) a $ Proxy464.sayHello (fonte sconosciuta) a sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) a sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) a sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) a java.lang.reflect.Method.invoke (Method.java:597) a org.glassfish.webservices.InvokerImpl.invoke (InvokerImpl.java:78) a org.glassfish.webservices.EjbInvokerImpl.invoke (EjbInvokerImpl.java:78) a com.sun.xml.ws.server.InvokerTube $ 2.invoke (InvokerTube.java:146) a com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke (EndpointMethodHandler.java:257) a com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest (SEIInvokerTube.java:95) a com.sun.xml.ws.api.pipe.Fiber .__ doRun (Fiber.java:629) a com.sun.xml.ws.api.pipe.Fiber._doRun (Fiber.java:588) a com.sun.xml.ws.api.pipe.Fiber.doRun (Fiber.java:573) a com.sun.xml.ws.api.pipe.Fiber.runSync (Fiber.java:470) a com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process (AbstractTubeImpl.java:112) a org.glassfish.webservices.MonitoringPipe.process (MonitoringPipe.java:138) a com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest (PipeAdapter.java:115) a com.sun.xml.ws.api.pipe.Fiber .__ doRun (Fiber.java:629) a com.sun.xml.ws.api.pipe.Fiber._doRun (Fiber.java:588) a com.sun.xml.ws.api.pipe.Fiber.doRun (Fiber.java:573) a com.sun.xml.ws.api.pipe.Fiber.runSync (Fiber.java:470) a com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process (AbstractTubeImpl.java:112) a com.sun.xml.ws.tx.service.TxServerPipe.process (TxServerPipe.java:306) a com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest (PipeAdapter.java:115) a com.sun.xml.ws.api.pipe.Fiber .__ doRun (Fiber.java:629) a com.sun.xml.ws.api.pipe.Fiber._doRun (Fiber.java:588) a com.sun.xml.ws.api.pipe.Fiber.doRun (Fiber.java:573) a com.sun.xml.ws.api.pipe.Fiber.runSync (Fiber.java:470) a com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process (AbstractTubeImpl.java:112) a com.sun.enterprise.security.webservices.CommonServerSecurityPipe.processRequest (CommonServerSecurityPipe.java:195) a com.sun.enterprise.security.webservices.CommonServerSecurityPipe.process (CommonServerSecurityPipe.java:127) a com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest (PipeAdapter.java:115) a com.sun.xml.ws.api.pipe.Fiber .__ doRun (Fiber.java:629) a com.sun.xml.ws.api.pipe.Fiber._doRun (Fiber.java:588) a com.sun.xml.ws.api.pipe.Fiber.doRun (Fiber.java:573) a com.sun.xml.ws.api.pipe.Fiber.runSync (Fiber.java:470) a com.sun.xml.ws.server.WSEndpointImpl $ 2.Process (WSEndpointImpl.java:295) a com.sun.xml.ws.transport.http.HttpAdapter $ HttpToolkit.handle (HttpAdapter.java:519) a com.sun.xml.ws.transport.http.HttpAdapter.handle (HttpAdapter.java:288) a com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle (ServletAdapter.java:143) a org.glassfish.webservices.Ejb3MessageDispatcher.handlePost (Ejb3MessageDispatcher.java:116) a org.glassfish.webservices.Ejb3MessageDispatcher.invoke (Ejb3MessageDispatcher.java:87) a org.glassfish.webservices.EjbWebServiceServlet.dispatchToEjbEndpoint (EjbWebServiceServlet.java:196) a org.glassfish.webservices.EjbWebServiceServlet.service (EjbWebServiceServlet.java:127) ... 22 maggiori causati da: java.lang.NullPointerException a ua.eset.inferno.heresy.ws.security.Hello.sayHello (Hello.java:33) a sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) a sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) a sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) a java.lang.reflect.Method.invoke (Method.java:597) a org.glassfish.ejb.security.application.EJBSecurityManager.runMethod (EJBSecurityManager.java:1056) a org.glassfish.ejb.security.application.EJBSecurityManager.invoke (EJBSecurityManager.java:1128) a com.sun.ejb.containers.BaseContainer.invokeBeanMethod (BaseContainer.java:5243) a com.sun.ejb.EjbInvocation.invokeBeanMethod (EjbInvocation.java:615) a com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext (InterceptorManager.java:797) a com.sun.ejb.EjbInvocation.proceed (EjbInvocation.java:567) a com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround (SystemInterceptorProxy.java:157) a com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke (SystemInterceptorProxy.java:139) a sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) a sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) a sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) a java.lang.reflect.Method.invoke (Method.java:597) a com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept (InterceptorManager.java:858) a com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext (InterceptorManager.java:797) a com.sun.ejb.containers.interceptors.InterceptorManager.intercept (InterceptorManager.java:367) a com.sun.ejb.containers.BaseContainer .__ intercetta (BaseContainer.java:5215) a com.sun.ejb.containers.BaseContainer.intercept (BaseContainer.java:5203) a com.sun.ejb.containers.WebServiceInvocationHandler.invoke (WebServiceInvocationHandler.java:188) ... altro 66
Che cosa è mancato?
2-nd
che provo questo esercitazione cui viene fatto riferimento a questo - Le iniezioni personalizzati
Ma anche dosen`t aiuto.
dipendenze Maven -
<dependencies>
<dependency>
<groupId>org.jboss.weld</groupId>
<artifactId>weld-logger</artifactId>
<version>1.0.0-CR2</version>
</dependency>
<dependency>
<groupId>org.jboss.weld</groupId>
<artifactId>weld-extensions</artifactId>
<version>1.0.0.Alpha1</version>
</dependency>
<dependency>
<groupId>org.jboss.weld</groupId>
<artifactId>weld-api</artifactId>
<version>1.0-CR2</version>
</dependency>
<dependency>
<groupId>org.jboss.weld</groupId>
<artifactId>weld-core</artifactId>
<version>1.0.1-CR2</version>
</dependency>
</dependencies>
D1: Qual è lo stato di iniezione Logger saldare nei servizi ejb / web
?Q2:? Potrebbe essere WSDL / EJB / WebService problema
Soluzione
Assicurati che il tuo Bean è in un archivio bean - vale a dire che si deve META-INF/beans.xml
A parte l'estensione della saldatura, che io non posso aiutarti con meno che si dà tutta eccezione, è possibile creare un produttore che @Produces
un Logger
Altri suggerimenti
Questo è il mio approccio:
Aggiungere le seguenti dipendenze al 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>
Inject il Logger e usarlo come al solito:
import javax.inject.Inject;
import org.slf4j.Logger;
public class Example {
@Inject
private Logger logger;
public void exampleFunc() {
logger.info("Hello Logger!");
}
}
Se si vuole utilizzare Log4J al posto del SLF4J-JDK14 vincolante, ho trovato questa pagina . Ho provato, ma non ho potuto farlo funzionare così ho ancora bastone con la mia soluzione.
L'impostazione predefinita slf4j produttore logger è definito in Weld estensioni . Si può vedere come il produttore è scritto qui se si voleva legare il proprio senza includere tutti Weld estensioni.
in questo caso ho messo haven`t bean.xml in META-INF.