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サービスに注入した場合。
クラスパス内にクラスが見つかりませんでしたので、まずクラスパスにあることを確認する必要があります。 – gigadot
です。 @Resouceを削除すると、それはうまく配置され、ハンドラを呼び出すことができるためです。私はそれが読み込みの問題のいくつかの順序かもしれないと思っていますか? – OldProgrammer
'ClassNotFoundException'は、クラスローダーによってクラスパスの下にクラスが見つからない場合に発生します。この場合、' test.NewLogicalHandler'が見つかりません。これは通常、warアプリケーションをビルドするときに発生しますが、依存関係はwarファイルにはありません。または、classparthの下にあるあなたのjarファイルの中に 'test.NewLogicalHandler'を見つけることができないクラスローダーを使用しています。他の理由は考えられません。 – gigadot