2013-02-14 3 views
1

CXF 기반 SOAP 웹 서비스가 있으며 SOAP UI에서 이러한 서비스를 아무런 문제없이 수행하고 있습니다. 이 서비스 중 하나를 사용하여 barebone WSO2 ESB 4.6.0에 ProxyService를 설치했습니다. 프록시 서비스가 관리 콘솔의 "Try it"옵션을 사용하는 것 같습니다. SOAPUI에서 액세스하려고하면 WSO2 ESB가 불평하기 시작합니다WSO2 프록시 서비스 URL이 SOAPUI와 작동하지 않음

"작업에 대한 엔드 포인트 참조 (EPR)는/services/HelloWorldProxyService 및 WSA Action =입니다.이 EPR에 이전에 도달 할 수 있었다면 서버 관리자에게 문의하십시오. "

이제 SOAPUI에서 끝점 URL을 http : // hostname : 8280/services/service-name.port-name/operation-name으로 변경하면 모든 작업이 시작됩니다.

누구든지이 문제를 해결하는 방법을 알고 있습니까? WSO2 ESB에서 기존 SOAPUI를 사용할 수 있도록 WSO2 ESB에 구성 옵션이 있습니까?

답변

0

soapui에서 프록시 서비스 url (특정 프록시의 서비스 대시 보드를 통해 볼 수 있음)을 가리키고 프록시의 속성 호출에서 속성 호출을 정의 할 수 있습니다. . 헤더 이름 = "액션"값 = "비누 액션"여기

는 vailable 특성

http://wso2.org/project/esb/java/3.0.0/docs/properties_guide.html

+0

이렇게하면 문제가 해결됩니다. 그러나 우리는 모든 SOAPUI 스크립트를 변경하여 SOAP 봉투에서 파생 될 수있는 헤더를 추가해야합니다. WSO2가 SOAP 봉투에서이 정보를 직접 파생시킬 수있는 방법이 있습니까? – user1431708

+0

귀하의 요청이 어떻게 보이는지 확실하지 않습니다. 일반적으로 axis2 구성에서는 여러 수준의 디스패처를 정의합니다. axis2 configuartion 파일에서이를 확인할 수 있습니다. "Inflow"디스패치 단계에서는 URIBasedDispatcher, SOAPActionBasedDispatcher, RequestURIOperationDispatcher, SOAPMessageBodyBasedDispatcher가 표시됩니다. 이것들은 메시지를 corrcet 엔드 포인트에 발송하는 데 사용됩니다. "soapaction"서버가 디스패치하도록 서버를 정의하고, 그렇지 않은 경우 URI에서 작업을 정의하면 사용됩니다. 그렇지 않으면 messagebode 기반 디스패치. 아무 것도 제시되지 않으면 메시지가 실패합니다. – Ratha

+0

분명히 SOAPUI 요청에 어떤 서비스 및 어떤 작업을 호출해야하는지에 대한 정보가 있습니다. 앱 서버에 직접 연결하면 앱 서버의 CXF 엔진이 어떤 클래스를 호출하는지 파악합니다. WSO2 내부의 AXIS2 ESB가 SOAP 요청에서 연산을 파악할 수없는 것 같습니다. 이름을 지정하는 Dispatcher 목록에서 SoapMessageBodyBasedDispatcher가이 작업을 수행해야하지만 어떻게 든 처리하지 않아야합니다. – user1431708

0

I는 WS URI의 단부 (http://somedomain.com/WebServiceProxyName/operation1)에 operation1 넣으면 I 같은 문제를 가지고의 가이드 하지만 다른 작업 (operation2,3,4,5 ...)에 대한 구문과 SOAP 메시지 본문 게시 그것은 작동합니다!

샘플

POST http://somedomain.com/..../operation1 HTTP/1.1 
.... 
.... 
<soap:Envelope ...> 
<soap:Header/> 
    <soap:Body> 
    <ws:operation2> 



    </ws:operation2> 
    </soap:Body> 
</soap:Envelope> 
0

시도는 (원본) WSDL을 변경하고 거기의 soapAction를 넣어 :

당신은 예컨대 결합 부분의 http://schemas.xmlsoap.org/wsdl/soap/:operation 요소의 속성으로 정의 할 수있다

<wsdl:binding name="healthcheck-1.0.0SOAP" type="tns:HealthCheck100PortType"> 
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> 
    <wsdl:operation name="doHealthCheck"> 
     <soap:operation soapAction="http://www.xyz.ch/healthcheck-1.0.0/doHealthCheck"/> 
관련 문제