Axis2 Web サービスとそのクライアントを作成しました。このクライアントをサーブレットで使用したいと考えています。ServiceStub に型があります (フィールドとこれらのフィールドのゲッター/セッターを持つクラス)。スタブとこれらの型を使用するクライアントを使用したい場合、エラーが発生します。タイプを使用しないようにしましたが、スタブで同じエラーが発生しました: これjava.lang.NoClassDefFoundError: services/ManagerServiceStub.
が私のコードの一部です:
public static Protocol[] someMethod(ServiceMessage srvMsg) {
try {
ProtocolMessage prMsg = ManagerServiceClient.getProtocols("user","pw");
if (prMsg.getCode() == 1)
return prMsg.getProtocolArray();
else
return null;
} catch (Exception e) {
System.err.println("Failed getting protocolos");
e.printStackTrace(System.err);
return null;
}
}
このメソッドは、サーブレットから呼び出されます。単純な Java アプリケーションから呼び出された場合、問題なく動作します。スタック トレース:
SEVERE: Servlet.service() for servlet [servlets.Node] in context with path [/nodeCreation] threw exception [Servlet execution threw an exception] with root cause
java.lang.NoClassDefFoundError: services/ManagerServiceStub
at client.ManagerServiceClient.getStub(ManagerServiceClient.java:28)
at client.ManagerServiceClient.getProtocols(ManagerServiceClient.java:116)
at jsp.Protocols.someMethod(Protocols.java:11)
at servlets.Node.doGet(Node.java:35)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
私の頭の中にあるのは、同じ tomcat サーバーでサーブレットと Web サービスを使用しているということです。一方、サーブレットが Web サービスを呼び出そうとしない場合は、どちらも機能します。