2013-02-21 2 views
0

나는이 문제에 대한 포럼을 수색했다. 나는 거의 동일한 질문을 발견했다. 그러나 대답은 나에게 여전히 궁금해했다. Timed Mule 웹 서비스 클라이언트 흐름

거의 동일한 포스트

여기에서 발견되었다 :

Mule - Schedule a flow to consume a web service

이 포스터는 내가 아주 잘 데 문제를 언급했다.

나는 또한 Mule을 처음 사용하며 매우 똑같은 것을 시도하고있다. 필자는 작동 사양이 기본적으로 페이로드라고 생각했기 때문에 페이로드가 필요하다는 것을 알지 못했습니다.

cxf : jaxws-client가 포함 된 흐름이 있으며 해당 클라이언트가 서비스 URL과 작업 "listTest"를 지정합니다.

실제로 서비스 요청을 실행하기 위해 다른 페이로드를 지정해야합니까?

이벤트 생성기에 더미 페이로드를 추가하려고했는데 (참조 된 게시물에 제안 된대로) 차이가 없습니다.

내가 뮬 응용 프로그램을 실행하고 (wireshark를 사용하여) "테스트 감사 자 웹 서비스"를 모니터링 할 때 wsdl에 대한 네 가지 요청이 표시되고 wsdl이 반환되는 것을 볼 수 있지만 listTest 작업이 실제로 표시되지는 않습니다. 호출됩니다.

내 흐름은 다음과 같습니다

<http:connector name="HTTP_HTTPS" cookieSpec="netscape" 
    validateConnections="true" sendBufferSize="0" receiveBufferSize="0" 
    receiveBacklog="0" clientSoTimeout="10000" serverSoTimeout="10000" 
    socketSoLinger="0" doc:name="HTTP\HTTPS" /> 
    <flow name="TestAuditorClient_CheckerFlow1" doc:name="TestAuditorClient_CheckerFlow1"> 
    <quartz:outbound-endpoint jobName="GetTestList" 
     repeatInterval="10000" responseTimeout="10000" doc:name="Quartz"> 
     <quartz:event-generator-job jobGroupName="GetTestList" /> 
    </quartz:outbound-endpoint> 
    <cxf:jaxws-client operation="listTest" 
     clientClass="server.TestService_Service" port="TestServicePort" 
     wsdlLocation="http://192.168.66.7:8080/TestAuditorWebApp/TestService?wsdl" 
     doc:name="SOAPY" /> 
    <outbound-endpoint 
     address="http://192.168.66.7:8080/TestAuditorWebApp/TestService" 
     doc:name="HTTP" /> 
    <logger message="Received HTTP Response #[payload]" level="INFO" 
     doc:name="Logger" /> 
    <!-- <outbound-endpoint exchange-pattern="request-response" address="http://192.168.66.17:8080/TestAuditorWebApp/TestService" 
     doc:name="HTTP"/> --> 
    <file:outbound-endpoint path="C:\tmp" 
     outputPattern="#[function:datestamp:dd-MM-yy]_#[function:systime].txt" 
     responseTimeout="10000" doc:name="Output File" /> 
</flow> 

내가 스택 오버플로 할뿐만 아니라 노새에 새로운뿐만 아니라입니다. 따라서 관련 질문을하는 더 좋은 방법이 있다면 조언하고 변명하십시오. 사전에

감사합니다.

+0

'server.TestService_Service'의'listTest' 메소드는 어떤 객체 매개 변수를 사용합니까? –

+0

public class TestService_Service extends Service –

+0

@WebResult (name = "listTestResponse", targetNamespace = "http : // server /", partName = "매개 변수") @Action (input = "http : // server/TestService/listTestRequest" , 출력 = "http : // server/TestService/listTestResponse") @WebMethod public ListTestResponse listTest ( @WebParam (partName = "parameters", name = "listTest", targetNamespace = "http : // server /") ListTest 매개 변수 ); –

답변

0

Quartz 대신 poll 메시지 프로세서를 사용하여 ListTest 인스턴스를 생성 할 수 있습니다.

FQDN이 server.TestService.ListTest 인이 클래스를 가정 (당신이 말하지 않았다), 다음 작동합니다 : 당신이 그것을 만들어 표현에서 직접 POJO에 값을 설정하는 방법

<flow name="TestAuditorClient_CheckerFlow1"> 
    <poll frequency="10000"> 
    <set-payload value="#[lt=new server.TestService.ListTest(); lt.aField='aValue'; lt]" /> 
    </poll> 
... 

알 수 있습니다.

+0

고마워, 나는 너의 제안을 시도하고있어 : "lt = new server.TestService.ListTest(); lt.aField = 'aValue'; lt "실패했습니다. (org.mule.api.expression.ExpressionRuntimeException). 메시지 페이로드는 다음 형식입니다. String –

+0

글쎄, 이것은 * 예제 *입니다. 'ListTest'가 지원하는 필드를 지정하지 않았습니다. FQDN을 지정하지 않았습니다. 따라서 표현식을 실제 코드로 작동하도록 수정해야합니다. –

+0

예. 이것은 일 : \t \t <폴링 빈도 = "10000"> \t \t \t <설정 페이 \t \t \t \t 값 = "# [LT = 새로운 server.ListTest(); LT]"/> \t \t을 –