【问题标题】:Cannot use Axis2 web service stubs in servlets无法在 servlet 中使用 Axis2 Web 服务存根
【发布时间】:2013-04-12 01:53:14
【问题描述】:

我已经为它创建了一个 Axis2 Web 服务和一个客户端。我想在我的 servlet 中使用这个客户端。我的 ServiceStub 中有类型(带有字段的类和这些字段的 getter/setter)。如果我想使用使用存根和这些类型的客户端,我会得到错误。我尝试不使用这些类型,但存根遇到了同样的错误: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;
        }
    }

从 servlet 调用此方法。如果从简单的 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 服务器上使用 servlet 和 web 服务。另一方面,如果 servlet 不尝试调用 Web 服务,它们都可以工作。

【问题讨论】:

    标签: java servlets axis2


    【解决方案1】:

    它清楚地表明在运行时您的 servlet 找不到存根。您是否将存根类保存在 servlet 可以访问的类路径中? 确保存根在类路径中可用。

    【讨论】:

    • 问题是因为我没有将axis2库添加到服务器类路径中。但是感谢有关类路径的提示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多