2013-04-21 7 views
0

이상한 문제가 발생하여 도움이 필요합니다. Java 컨테이너로 oc4j 1013을 사용하고 있습니다. 나는 간단한 웹 서비스 "GetDates"를 가지고 있고 그것을 oc4j에 successfuly로 배치하고 그 안에 메소드를 호출하여 그것을 테스트하고 값을 성공적으로 리턴한다. 그런 다음 웹 서비스 용 wsdl을 사용하여 웹 서비스 프록시를 만들었고 jdeveloper에서 테스트했고 성공적으로 반환되었습니다. 마지막으로 나는 웹 애플리케이션을 만들었고, 보통의 서블릿과 그 내부에 나는 이전에 해 놓은 웹 서비스 프록시를 사용했다. 그리고 그것을 jdeveloper에서 실행하여 테스트 해 보았는데 결과가 성공적으로 반환되었다. 이상한 점은 웹 서비스 용 oc4j 인 외부 oc4j에 전개하기로 결정했을 때 서블릿을 호출한다는 것입니다. 예외는 다음과 같습니다.웹 서비스를 사용하여 웹 응용 프로그램을 배포 한 후 "java.lang.NoSuchMethodError"오류 발생

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) 

누락 된 항아리가있을 수 있다는 느낌이 들었습니다.

나는 1013 JDeveloper를 1013 OC4J를 사용하고 난 JDK 1.5

답변

0

마지막으로 오랜 시간 조사 끝에 웹 서비스 호출 방식을 변경했습니다. RPC 호출을 사용하여 웹 서비스를 호출하는 일반 클라이언트를 개발했습니다. 괜찮 았는데 :)

+0

그러면 정답으로 자신의 답변을 표시해야합니다! –

2

그것은 클래스가 발견되기 때문에 JAR이없는 가능성의를 사용하고 있습니다. 그 방법의 특정 방법이나 서명이 빠져 있습니다. 일반적으로 이것은 다른 버전의 동일한 종속성 (예 : 다른 JAR)이있을 때 발생합니다. 클래스 경로에 두 개의 동일한 클래스가있는 경우이 문제가 발생할 수 있습니다.

0

메소드 서명이 동일한 지 확인하고 패키지 이름을 확인하십시오. 클라이언트 및 서버 클래스는 동일한 패키지를 공유해야합니다.

+0

나는 패키지가 같은 이름을 가지고 있다고 확신한다. 하지만 방법에 대한 서명 ... 무슨 방법을 의미합니까? –