2013-05-13 1 views
2

프록시 서비스 즉, 프록시 B & 프록시 C.WSO2 서비스 체인 -. 내가 요청 그것은 두 개의 서로 다른 프록시에 복제 된 프록시 A.로 전송되는 사용 사례를

프록시의 응답 B & 프록시 C가 프록시 A의 순서대로 캡처되어야합니다.

이 논리가 작동합니까? 이 오류를 얻을 수 있기 때문에 :

[2013-05-13 17:15:08,304] ERROR - ClientUtils The system cannot infer the transp 
ort information from the /services/LIS/ URL. 
[2013-05-13 17:15:08,304] ERROR - Axis2Sender Unexpected error during sending me 
ssage out 
org.apache.axis2.AxisFault: The system cannot infer the transport information fr 
om the /services/LIS/ URL. 
     at org.apache.axis2.description.ClientUtils.inferOutTransport(ClientUtil 
s.java:81) 
     at org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationCl 
ient.executeImpl(DynamicAxisOperation.java:115) 
     at org.apache.axis2.client.OperationClient.execute(OperationClient.java: 
149) 
     at org.apache.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2Flexib 
leMEPClient.java:456) 
     at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:57) 

     at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2Synap 
seEnvironment.java:316) 
     at org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediato 
r.java:92) 
     at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractLis 
tMediator.java:71) 
     at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMe 
diator.java:114) 
     at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(Pro 
xyServiceMessageReceiver.java:154) 
     at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) 
     at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEn 
closingRESTHandler(ServerWorker.java:367) 
     at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclo 
singRequest(ServerWorker.java:408) 
     at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.j 
ava:219) 
     at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(Native 
WorkerPool.java:172) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. 
java:1110) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor 
.java:603) 
     at java.lang.Thread.run(Thread.java:722) 
[2013-05-13 17:16:08,228] WARN - TargetHandler Connection time out while in sta 
te: REQUEST_DONE 
[2013-05-13 17:16:08,229] WARN - SourceHandler Connection time out after reques 
t is read: 127.0.0.1:53170->127.0.0.1:8280 
[2013-05-13 17:16:08,235] WARN - EndpointContext Endpoint : LIS will be marked 
SUSPENDED as it failed 
[2013-05-13 17:16:08,231] WARN - SourceHandler Connection time out after reques 
t is read: 127.0.0.1:53169->127.0.0.1:8280 
[2013-05-13 17:16:08,237] WARN - EndpointContext Suspending endpoint : LIS - cu 
rrent suspend duration is : 30000ms - Next retry after : Mon May 13 17:16:38 IST 
2013 
[2013-05-13 17:16:08,247] WARN - TargetHandler Connection closed by target host 
before receiving the request 
[2013-05-13 17:16:08,250] WARN - EndpointContext Endpoint : RIS will be marked 
SUSPENDED as it failed 
[2013-05-13 17:16:08,253] WARN - EndpointContext Suspending endpoint : RIS - cu 
rrent suspend duration is : 30000ms - Next retry after : Mon May 13 17:16:38 IST 

내 프록시 :

<proxy xmlns="http://ws.apache.org/ns/synapse" name="hospital" transports="https,http,jms,local" statistics="enable" trace="enable" startOnLoad="true"> 
    <target> 
     <inSequence> 
     <property name="ContentType" value="text/xml" scope="default"/> 
     <class name="com.test.custommediator"/> 
     <clone> 
      <target> 
       <endpoint name="LIS"> 
        <address uri="http://localhost:8280/services/LIS/"/> 
       </endpoint> 
      </target> 
      <target> 
       <endpoint name="RIS"> 
        <address uri="http://localhost:8280/services/RIS/"/> 
       </endpoint> 
      </target> 
     </clone> 
     </inSequence> 
     <outSequence> 
     <log level="full"/> 
     <log separator="Entering Aggregator"/> 
     <aggregate> 
      <completeCondition> 
       <messageCount min="2"/> 
      </completeCondition> 
      <onComplete xmlns:m1="http://services.samples/xsd" xmlns:m0="http://services.samples" expression="//m0:return"> 
       <send> 
        <endpoint> 
        <address uri="jms:/REPORT?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://localhost:61616"/> 
        </endpoint> 
       </send> 
      </onComplete> 
     </aggregate> 
     </outSequence> 
     <faultSequence/> 
    </target> 
    <publishWSDL uri="http://localhost:8280/services/LIS?wsdl"/> 
    <parameter name="transport.jms.ContentType"> 
     <rules>                                                    
     <jmsProperty>contentType</jmsProperty>                                                    
     <default>application/xml</default>                                   
     </rules> 
    </parameter> 
    <description></description> 
</proxy> 

나를 위해 어떤 생각?

감사 전문가 @gnanagurus

답변

2

올바른 논리입니다. 이 프록시가 jms 큐에서 메시지를 선택하는 경우 inSequence에서 복제 중재자 앞에 다음 특성을 설정하고 다시 시도하십시오.

<property name="messageType" value="text/xml" scope="axis2"/> 
+0

안녕하세요, Isuru, 멋지다. – gnanagurus

0

당신의 논리와 프록시의 conf는 right..The 문제는 시스템이 엔드 포인트를 인식 할 수 없습니다입니다 .. 서비스 URL이 옳다? 이렇게 만들 수 있습니까? (끝에 백 슬래시를 제거하십시오)

http://localhost:8280/services/LIS 
+0

안녕하세요. Ratha도 사용해 봤습니다. 그것은 작동하지 않았다. 다른 해결 방법이 있습니까? - 전문가 – gnanagurus

+0

위의 문제의 원인이 전송 발신자가 제대로 정의되지 않았거나 엔드 포인트 URL이 잘못되었습니다 .btw, classmediator에서 얻는 결과는 무엇입니까? – Ratha

+0

클래스 조정자는 Ratha. 자열을 리턴합니다. 또한 다른 사람은 내 운송 발신자가 누락되었습니다. 나는 다른 것 : ( – gnanagurus

관련 문제