Впрыскивая регистратор, сварка - PullRequest
1 голос
/ 07 мая 2010

Я пытаюсь заменить стандартную инициализацию логгера на какое-то внедрение

1-й.

Я пытался использовать сварку регистрацию сварных швов в bean-компоненте без состояния / веб-сервисах

@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 (Thread.java:619) Вызванный: java.lang.reflect.InvocationTargetException в sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) в java.lang.reflect.Method.invoke (Method.java:597) в org.glassfish.webservices.monitoring.WebServiceTesterServlet.doPost (WebServiceTesterServlet.java:297) ... еще 24 причины: javax.xml.ws.soap.SOAPFaultException: javax.ejb.EJBException at 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 at 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.intho.j.fho.jjвызвать (Method.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.Fiber .__ doRun (Fiber.java:629) по адресу com.sun.xml.ws.api.pipe.Fiber._doRun (Fiber.java:588) на com.sun.xml.ws.api.pipe.Fiber.doRun (Fiber.java:573) на com.sun.xml.ws.api.pipe.Fiber.runSync (Fiber.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.Fiber .__ doRun (Fiber.java:629) на com.sun.xml.ws.api.pipe.Fiber._doRun (Fiber.java:588) на com.sun.xml.ws.api.pipe.Fiber.doRun (Fiber.java:573) на com.sun.xml.ws.api.pipe.Fiber.runSync (Fiber.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.Fiber .__ doRun (Fiber.java:629) на com.sun.xml.ws.api.pipe.Fiber._doRun (Fiber.java:588) на com.sun.xml.ws.api.pipe.Fiber.doRun (Fiber.java:573) на com.sun.xml.ws.api.pipe.Fiber.runSync (Fiber.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.processReterest:115) на com.sun.xml.ws.api.pipe.Fiber .__ doRun (Fiber.java:629) на com.sun.xml.ws.api.pipe.Fiber._doRun (Fiber.java:588) на com.sun.xml.ws.api.pipe.Fiber.doRun (Fiber.java:573) на com.sun.xml.ws.api.pipe.Fiber.runSync (Fiber.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.Ejb3MessageDostpat (Ejb3MessageDispatcher.java:116) в org.glassfish.webservices.Ejb3MessageDispatcher.invoke (Ejb3MessageDispatcher.java:87) в org.glassfish.webservices.EjbWebServiceServlet..security.Hello.sayHello (Hello.java:33) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39.java: 25) в java.lang.reflect.Method.invoke (Method.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.conininInceptInterceptorManager.java:797) на com.sun.ejb.EjbInvocation.proceed (EjbInvocation.java:567) на com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround (SystemInterceptorProxy.java:157e) на com.sun.containers.interceptors.SystemInterceptorProxy.(DelegatingMethodAccessorImpl.java:25) в java.lang.reflect.Method.invoke (Method.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 .__ intercept (BaseContainer.java:5215) на com.sun.ejb.containers.BaseContainer.intercept (BaseContainer.java:5203) на com.sun.ejb.containers.WebServiceInvocationHandler.invoke (WebServiceInvocationHandler.java:188) ... еще 66

Что пропущено?

2-й

, чем я пробую этот учебник , на который ссылается это - Пользовательские инъекции

Но это такжене помогите.

зависимости 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>

Q1: Каково правило инжекции сварного регистратора в ejb / web-сервисах?

Q2: это может быть проблема с wsdl / EJB / WebService?

Ответы [ 4 ]

2 голосов
/ 29 мая 2010

Это мой подход:

Добавьте следующие зависимости в файл 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>

Введите Logger и используйте его как обычно:

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, я нашел эту страницу . Я попробовал это, но я не мог заставить это работать, поэтому я все еще придерживаюсь своего собственного решения.

0 голосов
/ 02 июля 2010

в этом случае я не поместил bean.xml в META-INF.

0 голосов
/ 07 мая 2010

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

0 голосов
/ 07 мая 2010

Убедитесь, что ваш бин находится в архиве бобов, т.е. у вас есть META-INF/beans.xml

Помимо расширения сварного шва, с которым я не могу помочь, если вы не дадите полное исключение, вы можете создать производителя, @Produces a Logger

...