質問

私は標準のロガーの初期化を何らかの注入によって置き換えようとしています

1-st。

溶接を使用しようとしていました 溶接ロギング ステートレスビーン/ウェブサービスで

@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.refllect.invocationtargetexception at org.glassfish.webservices.monitoring.webservicetesterservlet.dopost(webservicetesterervlet.java:326) )org.glassfish.webservices.ejbwebserviceservlet.service(ejbwebserviceservlet.java:110)at javax.servlet.httpservlet.service(httpservlet.java:847) filterchainimpl.java:195)atcom.sun.grizzly.http.servlet.filterchainimpl.invokefilterchain(filterchainimpl.java:139)at com.sun.grizzly.http.servlet.servletadapter.doservice(combletadapter.java:376) .sun.grizzly.http.servlet.servletadapter.service(servletadapter.java:329)at com.sun.grizzly.tcp.http11.grizzlyadapter.service(grizzlyadapter.java:166) .hk2dispatcher.dispath(hk2dispatcher.java:100)at com.sun.enterprise.v3.services.impl.containermapper.service(conta inermapper.java:245)at com.sun.grizzly.http.processortask.invokeadapter(processortask.java:791)com.sun.grizzly.http.processortask.doprocess(processortask.java:693) .http.processortask.process(processortask.java:954)at com.sun.grizzly.http.defaultprotocolfilter.execute(defaultprotocolfilter.java:170)at com.sun.sun.grizzly.grizzly.defaultprotocolchain.exexeprotocolcher(edexecuteprotocolfter(145protocolfter) com.sun.grizzly.defaultprotocolchain.execute(defaultprotocolchain.java:102)のcom.sun.grizzly.defaultprotocolchain.execute(defaultprotocolchain.java:88)at com.sun.grizzly.http.httptprotocolchain(htpprotocolchain)akppprotocolchain execute 76)com.sun.grizzly.protocolchaincontexttask.docall(protocolchaincontexttask.java:53)at com.sun.grizzly.selectionkeycontextttask.call(selectionkeycontextttask.java:57) :69)com.sun.grizzly.util.util.abstractthreadpool $ worker.dowork(abstractthreadpool.java:330)at com.sun.grizzly.util.abstractthreadpo ol $ worker.run(abstractthreadpool.java:309)at java.lang.thread.run(thread.java:619)に原因:java.lang.lang.lang.reft.invocationTargetException at sun.reflt.nativemethodaccessorimpl.invoke0(在来方法) sun.refllect.nativemethodacsessimpl.invoke(nativemethodaccessorimpl.java:39)at sun.refllect.delegatingmethodaccessorimpl.invoke(Delegatingmethodaccessorimpl.java:25)at java.lang.reflect.method.Invake(Method.Invake( .webservices.monitoring.webservicetesterservlet.dopost(webservicetesterservlet.java:297)... 24さらに原因:javax.xml.ws.soap.soapfaultexception:javax.ejb.ejbexception com.sun.xml.ws.fault.fault.fault.fault.fault.fault. .getProtoColexception(soap11fault.java:189)at com.sun.xml.wault.soapfaultbuilder.createexception(soapfaultbuilder.java:130)at com.sun.xml.ws.client.sein.synvake(sycmethhandler.invake( :119)com.sun.xml.ws.client.sei.syncmethodhandler.invoke(syncmethodhandler.java:89)at com.sun.xml.ws.client.sei.seistub.invoke(seistub.java:1400) $ proxy484.sayhello(不明な情報源)... 29詳細:javax.ejb.ejbexception at com.sun.ejb.containers.baseconsystemexception(basecontainer.java:5070)at com.sun.ejb.containers。 basecontainer.completenewtx(basecontainer.java:4968)com.sun.ejb.containers.basecontainer.postinvoketx(basecontainer.java:4756)at com.sun.ejb.ejb.containers.webservoceinvococehnvoke(webservococehnvoke)at com.sun.ejb.containers. proxy464.sayhello(未知のソース)sun.reflt.nativemethodaccessorimpl.invoke0(ネイティブ方法)sun.reflect.nativemethodacsessorimpl.invoke(nativemethodaccessorimpl.java:39) java.lang.reflt.method.invoke(method.java:597)at org.glassfish.webservices.invokerimpl.invoke(invokerimpl.java:78)at org.glassfish.webservices.ejbinvokerimpl.invoke(ejbinimpl.javapl.javapl.javapl.javapl.javapl.javap com.sun.xml.ws.server.invokertube $ 2.invoke(invokertube.java:146)at com.sun.xml.ws.server.sei.endpoin tmethodhandler.invoke(endpointmethodhandler.java:257)at com.sun.xml.ws.server.sei.seiinvokertube.processrequest(seiinvokertube.java:95)at com.sun.xml.ws.api.pipe.fiber。 fiber.java:629)com.sun.xml.ws.api.pipe.fiber._dorun(fiber.java:588)at 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) atorg.glassfish.webservices.monitoringpipe.pipe.pipe.pipe.pipe.java:138)atcom.sun.xml.ws.api.pipe.helper.pipeadapter.processrequest(pipeadapter.java:115)at com.sun.xml.wswsws .api.pipe.fiber .__ dorun(fiber.java:629)com.sun.xml.ws.api.piper.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.abstracttubeimplp .process(abstracttubeimpl.java:112)at com.sun.xml.ws.tx.service.txserverpipe.process(txserverpipe.java:306) un.xml.ws.api.pipe.helper.pipeadapter.processrequest(pipeadapter.java:115)at com.sun.xml.ws.api.piber .__ dorun(fiber.java:629)at com.sun。 xml.ws.api.pipe.fiber._dorun(fiber.java:588)at com.sun.xml.ws.api.pipe.fiber.dorun(fiber.java:573)at com.sun.xml.ws. api.pipe.fiber.runsync(fiber.java:470)at com.sun.xml.ws.api.pipe.helper.abstracttubeimpl.process(abstracttubeimpl.java:112)at com.sun.enterprise.security.weerservices。 commonserversecuritypipe.processrequest(commonserversecuritypipe.java:195)at com.sun.enterprise.security.webservices.commonserversecuritypipe.process(commonserversecuritypipe.java:127) pipeadapter.java:115)at com.sun.xml.ws.api.pipe.fiber .__ dorun(fiber.java:629)at com.sun.xml.ws.api.pipe.fiber._dorun(fiber.java: 588)com.sun.xml.ws.api.pipe.fiber.dorun(fiber.java:573)at com.sun.xml.ws.api.pipe.fiber.runsync(fiber.java:470)でcom .sun.xml.ws.server.wsendpointimpl $ 2.process(wsendpointimpl.java:295)at com.sun.xml.ws.transport.http.httpadapter $ httptoolkit.handle(httpadapter.java:519)at com.sun.xml.ws.transport.http.httpadapter.handle(httpadapter.java:288)at com。 sun.xml.ws.transport.http.servlet.servletadapter.handle(servletadapter.java:143)at org.glassfish.webservices.ejb3messagedispatcher.handlepost(ejb3messagedispatcher.java:116) ejb3messagedispatcher.java:87)at org.glassfish.webservices.ejbwebserviceservlet.dispatchtoejbendpoint(ejbwebserviceservlet.java:196)at org.glassfish.webservices.ejbweervices.ejbweervice.servevice.servervice。 lang.nullpointerexception at ua.eset.inferno.heresy.ws.security.hello.sayhello(hello.java:33)at sun.reflect.nativemethodaccessorimpl.invoke0(ネイティブ方法) :39)sun.reflt.delegatingmethodaccessorimpl.invoke(DelegatingMethodaccessorImpl.java:25)at java.lang.reflt.metでhod.invoke(method.java:597)at org.glassfish.ejb.security.application.ejbsecuritymanager.runmethod(ejbsecuritymanager.java:1056)at org.glassfish.ejb.security.application 1128)com.sun.ejb.containers.basecontainer.invokebeanmethod(basecontainer.java:5243)at com.sun.ejb.ejbinvocation.invokebeanmethod(ejbinvocation.java:615) .invokenext(interceptormanager.java:797)com.sun.ejb.ejbinvocation.proceed.proceed(ejbinvocation.java:567)at com.sun.ejb.containers.interceptors.interceptors.stercectors.systeminterceptorproxy.doaround sun.ejb.containers.interceptors.systeminterceptorproxy.arondinvoke(SystemEnterceptorproxy.java:139)sun.reflect.nativemethodaccessorimpl.invoke0(native method)at sun.refllect.nativemethodacsessimpersimpl.Invakecsessimpl.Invakecsessimpl.ivemethoke Java.lang.R eflect.method.invoke(method.java:597)at com.sun.ejb.containers.interceptors.arundinvokeInterceptor.intercept(interceptormanager.java:858)at com.sun.ejb.containers.interceptors.aroundininvokechainimpl.invokenpl.invokenpl.invokenpl.invokenpl.incempl.invoken Java:797)atcom.sun.ejb.ejb.containers.interceptors.interceptormanager.intercept(interceptormanager.java:367)at com.sun.ejb.containers.basecontainer .__インターセプト(basecontainer.java:5215)com.sun.ejb .containers.basecontainer.intercept(basecontainer.java:5203)at com.sun.ejb.containers.webserviceinvocationhandler.invoke(webserviceinvocationhandler.java:188)... 66 more

何が見逃されていますか?

2-nd

私がこれを試してみるより チュートリアル それはこれを参照しています - カスタムインジェクション

しかし、それは助けにもなりません。

メイブン依存関係 -

<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の問題になる可能性がありますか?

役に立ちましたか?

解決

あなたの豆が豆のアーカイブにあることを確認してください - つまり、あなたが持っている META-INF/beans.xml

溶接延長とは別に、例外全体を与えない限り私はあなたを助けることができません、あなたはプロデューサーを作成することができます @Produces a 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!");
  }
}

slf4j-jdk14バインディングの代わりにlog4jを使用したい場合、私は見つけました このページ. 。私はそれを試しましたが、私はそれを動作させることができなかったので、私はまだ自分の解決策に固執します。

デフォルトのslf4jロガープロデューサーはで定義されています 溶接拡張機能. 。プロデューサーがどのように書かれているかを見ることができます ここ すべての溶接拡張機能を含めることなく、独自に配線したい場合。

この場合、私はbean.xmlをMeta-infに配置していません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top