이미 구현 된 metro
기반 웹 서비스 클라이언트가있는 프로젝트에서 작업하고 있습니다. 이제 다른 서비스를 위해 다른 클라이언트를 추가해야했습니다. 새 클라이언트를 구현했지만 이제는 헤더가있을 때 예외가 발생합니다 (헤더가 필요함). 모든 메트로 항아리를 제거하면이 새로운 클라이언트는 정상적으로 작동하지만 분명히 내 메트로 클라이언트는 실패합니다. 가능한 옵션, 해결 방법 또는 해결 방법에 대한 지침이 필요합니다. 비누 요청을 보내는 동안 ClassCastException이 발생했습니다.
Caused by: javax.xml.ws.WebServiceException: java.lang.ClassCastException: com.sun.xml.ws.message.saaj.SAAJHeader cannot be cast to com.sun.xml.ws.security.opt.impl.outgoing.SecurityHeader
at com.sun.xml.wss.jaxws.impl.SecurityClientTube.processRequest(SecurityClientTube.java:250)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:961)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:910)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:873)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:775)
at com.sun.xml.ws.client.Stub.process(Stub.java:429)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:168)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:119)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:102)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:151)
at com.sun.proxy.$Proxy70.methodName(Unknown Source)
... 15 more
Caused by: java.lang.ClassCastException: com.sun.xml.ws.message.saaj.SAAJHeader cannot be cast to com.sun.xml.ws.security.opt.impl.outgoing.SecurityHeader
at com.sun.xml.ws.security.opt.impl.JAXBFilterProcessingContext.setJAXWSMessage(JAXBFilterProcessingContext.java:166)
at com.sun.xml.wss.jaxws.impl.SecurityTubeBase.secureOutboundMessage(SecurityTubeBase.java:381)
at com.sun.xml.wss.jaxws.impl.SecurityClientTube.processClientRequestPacket(SecurityClientTube.java:323)
at com.sun.xml.wss.jaxws.impl.SecurityClientTube.processRequest(SecurityClientTube.java:247)
나는
here 같은 비슷한 문제를 가진 몇 가지 질문을 찾았지만, 그들은 모두 나를 위해 옵션을하지 않은 헤더를 제거하기 위해 제안 끝낸다.
추신 : 메트로 항아리를 사용하는 기존 웹 서비스 클라이언트의 경우 서버 연결자가 서버에 연결하기 위해 클라이언트 (실제로는 모든 메트로 관련 클래스를 포함하는 항아리)와 같은 커넥터를 사용합니다 매우 이상하다). 커넥터에서 아무 것도 움직이면 지원 계약이 무효화됩니다. 따라서 나는 지하철 항아리를 제거하지 않고 대신 그것을 수용 할 대체 방법을 찾는다.
헤더를 직접 마샬링/언 마샬링 할 수있는 사용자 정의 SoapHandler/Interceptor를 구현하는 방법은 무엇입니까? – Mechkov
getHeaders()와 같은 'Headers'메소드를 살펴보십시오. – Mechkov
https://docs.oracle.com/cd/E13222_01/wls/docs103/webserv_adv/handlers.html – Mechkov