2012-04-18 6 views
1

Glassfish 3.1.1에서 잘 실행되는 Netbeans 7.1에서 웹 서비스를 만들었습니다. 이제 서비스 응용 프로그램을 Jboss 4.2.3 GA-JDK6으로 옮겨야합니다. Jboss에 웹 서비스를 배포 할 때 문제는 발견되지 않지만 웹 서비스를 호출하면 예외가 발생합니다. - "setProperty는 SOAPMessage 클래스"의 모든 하위 클래스로 재정의되어야합니다. 이 문제를 극복하기 위해 JBOSS_HOME/lib/endorsed에 jboss-native-saaj.jar을 추가했습니다. 이는 문제를 해결하고 서비스가 호출있어하지만 응답을 반환하는 데 실패하지만, 새로운 예외 결과 : - Jboss에서 웹 서비스를 호출 할 때 클래스 캐스트 예외 4.2.3 GA

Caused by: java.lang.ClassCastException: com.sun.xml.messaging.saaj.soap.ver1_1.Envelope1_1Impl cannot be cast to org.jboss.ws.core.soap.SOAPElementImpl 
at org.jboss.ws.core.soap.SOAPEnvelopeImpl.<init>(SOAPEnvelopeImpl.java:60) 
at org.jboss.ws.core.soap.EnvelopeBuilderDOM.build(EnvelopeBuilderDOM.java:124) 
at org.jboss.ws.core.soap.EnvelopeBuilderDOM.build(EnvelopeBuilderDOM.java:96) 
at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:280) 
at org.jboss.ws.core.soap.SOAPMessageUnMarshallerHTTP.read(SOAPMessageUnMarshallerHTTP.java:84) 
at org.jboss.remoting.transport.http.HTTPClientInvoker.readResponse(HTTPClientInvoker.java:518) 
at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:307) 
... 54 more 

이 또한 내가 실제로 웹 서비스 내에서 웹 서비스를 호출하고있어 것을 말씀 드리고 싶습니다. 동일한 문서 나 솔루션을 사용할 수 없으므로이 문제를 해결하십시오. 이전에 발생한 오류의 전체 스택 트레이스를 추가 사전

에서

감사합니다 : -

javax.xml.ws.WebServiceException: java.lang.UnsupportedOperationException: setProperty must be overridden by all subclasses of SOAPMessage 
at org.jboss.ws.core.jaxws.client.ClientImpl.handleRemoteException(ClientImpl.java:404) 
at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:314) 
at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:172) 
at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:152) 
at $Proxy183.authenticateUser(Unknown Source) 
at com.liaison.soi.sts.usermgmt.service.impl.UserManagementServiceImpl.authenticateUser(UserManagementServiceImpl.java:46) 
at com.liaison.soi.sts.usermgmt.service.impl.UserManagementServiceImpl.authenticateUser(UserManagementServiceImpl.java:25) 
at com.liaison.soi.sts.auth.AuthenticationHandler.validate(AuthenticationHandler.java:24) 
at com.sun.xml.wss.impl.callback.PasswordValidationCallback.getResult(PasswordValidationCallback.java:80) 
at com.sun.xml.wss.impl.misc.DefaultSecurityEnvironmentImpl.authenticateUser(DefaultSecurityEnvironmentImpl.java:1166) 
at com.sun.xml.ws.security.opt.impl.incoming.UsernameTokenHeader.validate(UsernameTokenHeader.java:160) 
at com.sun.xml.ws.security.opt.impl.incoming.SecurityRecipient.handleSecurityHeader(SecurityRecipient.java:341) 
at com.sun.xml.ws.security.opt.impl.incoming.SecurityRecipient.cacheHeaders(SecurityRecipient.java:275) 
at com.sun.xml.ws.security.opt.impl.incoming.SecurityRecipient.validateMessage(SecurityRecipient.java:225) 
at com.sun.xml.wss.jaxws.impl.SecurityTubeBase.verifyInboundMessage(SecurityTubeBase.java:450) 
at com.sun.xml.wss.jaxws.impl.SecurityServerTube.processRequest(SecurityServerTube.java:295) 
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:641) 
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:600) 
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:585) 
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:482) 
at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:314) 
at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:608) 
at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:259) 
at com.sun.xml.ws.transport.http.servlet.ServletAdapter.invokeAsync(ServletAdapter.java:213) 
at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doGet(WSServletDelegate.java:159) 
at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doPost(WSServletDelegate.java:194) 
at com.sun.xml.ws.transport.http.servlet.WSServlet.doPost(WSServlet.java:80) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524) 
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) 
at java.lang.Thread.run(Thread.java:662) 
Caused by: java.lang.UnsupportedOperationException: setProperty must be overridden by all subclasses of SOAPMessage 
at javax.xml.soap.SOAPMessage.setProperty(SOAPMessage.java:454) 
at org.jboss.ws.core.soap.SOAPMessageImpl.<init>(SOAPMessageImpl.java:83) 
at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:171) 
at org.jboss.ws.core.CommonSOAP11Binding.createMessage(CommonSOAP11Binding.java:59) 
at org.jboss.ws.core.CommonSOAPBinding.bindRequestMessage(CommonSOAPBinding.java:158) 
at org.jboss.ws.core.CommonClient.invoke(CommonClient.java:291) 
at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:302) 
+0

SAAJ 구현은 JDK 자체와 함께 제공되기 때문에이 예외가 발생하며,이 경우 구현시 JBoss에서 재정의 된 것입니다. 일반적으로 SOAP 팩토리는 라이브러리 자체에 의해 정의되지만, 사용자의 경우에는 작동하지 않습니다. 나는 1 차 예외로 돌아와 거기에서 문제를 해결하려고 노력할 것을 제안합니다. 'setProperty' 문제에 대한 더 완전한 스택 추적을 보여 준다면 아마도 몇 가지 아이디어를 얻게 될 것입니다. –

+0

안녕하세요 @ dma_k, 빠른 응답을 주셔서 감사합니다. 요청한대로 위의 질문 자체에 전체 스택 추적을 추가했습니다. 또한 Sun의 Metro Framework를 사용하여 서비스를 구축했으며 다른 서비스에서 웹 서비스를 호출하려고한다고 말하고 싶습니다. –

답변

0

나는 당신의 문제는 다음에 생각합니다.

구현 SOAPMessageImpl은 JBoss 3.2.2.GA (확인 here)까지만 jboss-native-saaj.jar에 패키지되었습니다. 최신 JBoss는이 클래스가 jbossws-native-core.jar입니다. 따라서 jboss-native-saaj.jarserver/libs (또는 애플리케이션과 함께 패키지)에 넣으면 클래스 충돌이 발생합니다. 따라서 솔루션은 : jboss-native-saaj.jar을 그냥 제거하십시오. jbossws-native-core.jar은 이미 거기에 있습니다.

jboss-native-saaj.jar에 대해 META-INF을 확인하려면 JBoss 4.2.3 용으로 패키지 되었습니까? 포장 날짜는 언제입니까? 이것은 올바른 결정으로 당신을 데려 갈 것입니다.

0

이것은 쉽게 검색 될 수 있습니다.

https://issues.jboss.org/browse/JBWS-1439https://community.jboss.org/message/618306을 참조하십시오.

자바 6에서는 잘 알려지지 않은 jax-ws jars가 번들로 포함되어 있기 때문에 잘 알려진 문제입니다.

위의 문제에서 언급 한 것처럼 특정 항아리를 승인 된 Dir로 이동해야합니다.

대체 솔루션은 upgrade에서 JBossWS-3.1.1 (마지막 하나는 JBoss AS 4.2.3.GA를 지원)입니다.