2016-04-19 6 views
0

サーブレットのコンテキストにアクセスするために必要なWebサービス用のこの論理ハンドラがあります(私は考えています)。私が展開Jax-WS論理ハンドラにWebServiceContextを挿入できない理由

package test; 

public class NewLogicalHandler implements LogicalHandler<LogicalMessageContext> { 

    @Resource 
    private WebServiceContext context; 

エラー:

@WebService(..stuff...) 
@HandlerChain(file = "handler.xml") 
public class ws1 { 

    @Resource 
    private WebServiceContext context;  

正常に動作します:

<Servlet: "test.ws1" failed to preload on startup in Web application: "web". 
java.lang.ClassNotFoundException: test.NewLogicalHandler 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 

私は、適切なWebサービスに注入した場合。

+0

クラスパス内にクラスが見つかりませんでしたので、まずクラスパスにあることを確認する必要があります。 – gigadot

+0

です。 @Resouceを削除すると、それはうまく配置され、ハンドラを呼び出すことができるためです。私はそれが読み込みの問題のいくつかの順序かもしれないと思っていますか? – OldProgrammer

+0

'ClassNotFoundException'は、クラスローダーによってクラスパスの下にクラスが見つからない場合に発生します。この場合、' test.NewLogicalHandler'が見つかりません。これは通常、warアプリケーションをビルドするときに発生しますが、依存関係はwarファイルにはありません。または、classparthの下にあるあなたのjarファイルの中に 'test.NewLogicalHandler'を見つけることができないクラスローダーを使用しています。他の理由は考えられません。 – gigadot

答えて

0

気にしないでください。 LogicalMessageContext.get(MessageContext.SERVLET_CONTEXT)からサーブレットコンテキストを取得できます。

関連する問題