Вопрос

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

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 at org.glassfish.webservices.monitoring.webserviCeTesterServlet.dopost (WebServiceTesterServlet.java:326) на org.glassfish.webservices.hritoring.webserviceTerServlet.java: ) на org.glassfish.webservices.ejbwebserservicesevlet.service (ejbwebserviseervte.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.invokefilterCheain (filterchainimpl.java:139) в com.sun.grizzly.http.servlet.servletaDAppter.doservice (серветаапеттер.java:376) .sun.grizzly.http.servlet.servletAdapter.service (серветаапеттер.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 (CONTA inermapper.java:245) на com.sun.grizzly.http.processortask.invoxeadapter (Trocessordask.java:791) на com.sun.grizzly.http.processortask.doProcess (Trocessordask.java:693) в com.sun.grizzly .http.processortask.process (Processordask.java:954) на com.sun.grizzly.http.defaultprotocolfilter.efaultprotocolfilter.efecute (defaultprotocolfilter.java:170) на com.sun.grizzly.defaultProtocolChain.executeProtocolfilter (defaultProtocolChain.java:135) com.sun.grizzly.defaultProtocolChain.efececute (defaultprotocolcheain.java:102) на com.sun.grizzly.defaultprotocolcheain.execute (defaultprotocolcheain.java:88) на com.sun.grizzly.http.httpprotocolChain.execute (httpprotocolchain.java: 76. : 69) на com.sun.grizzly.util.abstractTractTreadpool $ Worker.dowork (Abstralthreadpool.java:330) в com.sun.grizzly.util.abstracttreadpo ol $ worker.run (fabletreadpool.java:309) в java.lang.thread.run (thread.java:619), вызванные: java.lang.reflect.invocationTargetexception на Sun.reflect.nativemethodaccessorimpl.invoke0 (родной метод) в sun.reflect.nativemethodaccessorimpl.invoke (NativeMethodaccessorimpl.java:39) на sun.reflect.delegatingmethodaccessorimpl.invoke (делегированиеМЕТАКСCESCESSORIMPHEL.java:25) на java.lang.reflect.method.invoke (method.java:597) на org.lassfish .webservices.monoritoring.webseviceTeSterServlet.DOPOST (WebserviceTesterServlet.java:297) ... 24 Более 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.c.client.Sei.syncmethodhnher.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 (NativeMeMethodaccessorimpl.java:39) на Sun.reflect.delegatingMethodaccessorimpl.invoka (делегированиеМЕТАКСCESSCESSORIMPLIMPLIMPLIMPLECT) java.lang.reflect.method.invoke (метод.java:597) на org.glassfish.webservices.invokerimpl.invoke (invoximpl.java:78) в org.glassfish.webservices.ejbinvokerimpl.invoke (ejbinvokerimpl.java:78) at com.sun.xml.ws.server.invokertube $ 2.invoke (invokertube.java:146) на com.sun.xml.ws.server.sei.endpoin tmethodhandler.invoke (endpointmethodhnhandler.java:257) на com.sun.xml.ws.server.sei.seiinvokertube.processRequest (seiinvokertube.java:95) на com.sun.xml.ws.api.pipe.fibr .__ Dorun ( Fiber.java:629) на com.sun.xml.ws.api.pipe.fiber._dorun (fiber.java:588) на com.sun.xml.ws.api.pipe.fiber.dorun (fible.java: 573) на com.sun.xml.ws.api.pipe.fiber.runsync (fiber.java:470) на com.sun.xml.ws.api.pipe.helper.abstractubeiMpl.process (AnabletubeiMpl.java:112) на org.glassfish.webservices.monitoringPipe.process (мониторингPipe.java:138) на com.sun.xml.ws.api.pipe.helper.pipeadapter.processRequest (pipadapter.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 (fibre.java:573) на com.sun.xml.ws.api.pipe.fiber.runsync (fiber.java:470) на com.sun.xml.ws.api.pipe.helper.abstractTubeimplpl .Процесс (Anffultubeimpl.java:112) на com.sun.xml.ws.tx.service.txserverpipe.process (txserverpipe.java:306) в Com.s un.xml.ws.api.pipe.helper.pipeAdapter.processRequest (pipadapter.java:115) на com.sun.xml.ws.api.pipe.fiber .__ Dorun (Fiber.java:629) в Com.sun. xml.ws.api.pipe.fiber._dorun (fibre.java:588) на com.sun.xml.ws.api.pipe.fiber.dorun (fiber.java:573) в com.sun.xml.ws. api.pipe.fiber.runsync (fibre.java:470) на com.sun.xml.ws.api.pipe.helper.abstractubeiMpl.process (AnableTubeiMPl.java:112) на com.sun.enterprise.security.webservices. CommonsiverseCurityPipe.ProcessRequest (CommonsiverseCurityPipe.java:195) на com.sun.enterprise.security.webservices.comMonserverseasurityPipe.process (CommonsiverseasuratePipe.java:127) на com.sun.xml.ws.api.pipe.helper.pipeadapter.PoCessRequest. PipeDapter.java:115) на com.sun.xml.ws.api.pipe.fiber .__ dorun (Fiber.java:629) на com.sun.xml.ws.api.pipe.fiber._dorun (fible.java: 588) на com.sun.xml.ws.api.pipe.fiber.dorun (fiber.java:573) на com.sun.xml.ws.api.pipe.fiber.runsync (fible.java:470) в ком .sun.xml.ws.server.wsendpointImpls $ 2.process (wsendpointimpl.java:295) в com.sun.xml.ws.transport.http.httpadapter $ httptoollkit.handle (httphadAdapter.java:519) на com.sun.xml.ws.transport.http.httpadapter.handle (httphadapter.java:288) в com. sun.xml.ws.transport.http.servlet.servletadapter.handle.servletadapter.handle (серветаапеттер.java:143) на org.glassfish.webservices.ejb3messagedispatcher.handlepost (ejb3messageDispatcher.java:116) в org.glassfish.webservices.ejb3messagedispatcher.invoke ( Ejb3messagedispatcher.java:87) на org.glassfish.webservices.ejbwebserviceServite.dispatchtoejbendpoint.java:196) на org.glassfish.webservices.ejbwebservicesevte.service. lang.nullpointerexception на ua.eset.inferno.heresy.ws.security.hello.sayhello (hello.java:33) на sun.reflect.nativemethodaccessorimpl.invoke0 (родной метод) на sun.reflect.nativeMethodaccessorimpl.invoke (NativeMethodaccessorimple.java : 39) на Sun.reflect.DelegatingMethadaccessorImpl.invoke (делегированиеМЕТМЕТАКТАКСCESSORIMPL.java:25) на java.lang.reflect.met hod.invoke (method.java:597) в org.glassfish.ejb.security.Application.ejbsecuritymanager.runmethod (ejbsecuritymanager.java:1056) на org.glassfish.ejb.security.Appoke.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.intercepts. .inveblextext (Interceptormanager.java:797) на com.sun.ejb.ejbinvocation.proup (ejbinvocation.java:567) на com.sun.ejb.containers.interceptors.systeminter rectorprxy.doaround (systemiverectorProxy.java:157) в ком. sun.ejb.containers.ine_jb.containers.siverceptors.systeminter rectorproxy.arundinvoke (SystemInterplectorProxy.java:139) на Sun.reflect.nativemethodaccessorimpl.invoke0 (родной метод) на Sun.reflect.nativeMethodaccessorimpl.invoke (NativeMethodaccessoriMPl.java:39) на солнце. ДелегированиеМЕТАКСCESCESSORIMPL.INVOKE (делегированиеMethodaccessorimpl.java:25) в Java.lang.r eflect.method.invoke (метод.java:597) на com.sun.ejb.containers.interceptors.aroundinvokeInterceptor.iveroundinvokeInter.java: 858) на com.sun.ejb.containers.interceptors.aroundinvokeChainimpl.invedext (Interextormanager. Java: 797) на com.sun.ejb.containers.interceptors.interceptormanager.intercept (Interextormanager.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-я

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

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

Зависимости 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 Services?

Q2: это может быть проблема WSDL / EJB / Webservice?

Это было полезно?

Решение

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

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

Другие советы

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

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

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

В этом случае я не помещал bean.xml в мета-инф.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top