0

我正面临一个奇怪的问题,我需要你的帮助。我使用 oc4j 1013 作为 java 容器。我有一个简单的 Web 服务“GetDates”,我在 oc4j 上成功地部署了它,并通过调用其中的方法对其进行了测试,它成功地返回了值。然后我使用 wsdl 为我的 Web 服务创建了一个 Web 服务代理,我从 jdeveloper 进行了测试,它也成功返回。最后我创建了一个 Web 应用程序,只是一个普通的 servlet,在其中我使用了我之前刚刚做的 Web 服务代理,并通过从 jdeveloper 运行它来测试它,它成功返回了结果。奇怪的是,当我决定将它部署在外部 oc4j 上时,它是用于 Web 服务的 oc4j,并通过下面的异常调用 servlet。

java.lang.NoSuchMethodError: datespackage.runtime.GetDatesWS_getDateHence_ResponseStruct_LiteralSerializer.setSOAPVersion(Loracle/j2ee/ws/common/soap/SOAPVersion;)
at datespackage.runtime.GetDatesWS_getDateHence_ResponseStruct_LiteralSerializer.<init>(GetDatesWS_getDateHence_ResponseStruct_LiteralSerializer.java:37)
at datespackage.runtime.GetDatesService_SerializerRegistry.getRegistry(GetDatesService_SerializerRegistry.java:31)
at datespackage.runtime.GetDatesService_Impl.<init>(GetDatesService_Impl.java:26)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at oracle.j2ee.ws.client.ServiceFactoryImpl.createService(ServiceFactoryImpl.java:92)
at oracle.j2ee.ws.client.ServiceFactoryImpl.loadService(ServiceFactoryImpl.java:121)
at datespackage.GetDatesWSSoapHttpPortClient.<init>(GetDatesWSSoapHttpPortClient.java:22)
at webproject.indexClass.doGet(indexClass.java:27)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:719)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:376)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:870)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:451)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:218)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:119)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)
at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
at java.lang.Thread.run(Thread.java:619)

我有一种感觉,可能是缺少罐子或其他东西。

我正在使用 JDeveloper 1013 和 oc4j 1013,我正在使用 JDK 1.5

4

3 回答 3

2

因为找到了类,所以 JAR 不太可能丢失。它缺少特定的方法或该方法的签名不同。通常,当您具有相同依赖项的不同版本(例如不同的 JAR)时,就会发生这种情况。如果类路径中有两个相同的类,就会发生这种情况。

于 2013-04-21T09:22:30.243 回答
0

确保方法签名相同并检查包名称。客户端和服务器类应该共享同一个包。

于 2013-04-21T11:28:57.087 回答
0

最后经过长时间的调查,我改变了调用 Web 服务的方式,我开发了一个通用客户端,使用 RPC Call 调用 Web 服务。它工作得很好:)

于 2013-04-22T07:55:15.513 回答