2012-09-06 4 views
1
안녕 나는 다음과 같은 클래스 중재자가 탄소 Studio를 통해 만든

:WSO2 ESB 클래스 중재자가

package my.mediation; 

    import org.apache.synapse.MessageContext; 
    import org.apache.synapse.mediators.AbstractMediator; 

    public class Auth extends AbstractMediator { 


     public boolean mediate(MessageContext context) { 
      // TODO Implement your mediation logic here 

      context.setProperty("message","hello world!"); 

      return true; 
     } 

} 

그리고 순서가 같다 :

<inSequence xmlns="http://ws.apache.org/ns/synapse"> 
    <property name="message" value="nothing" scope="default" /> 
    <class name="my.mediation.Auth" /> 
    <log> 
     <property name="Message******" expression="get-property('message')" /> 
    </log> 
</inSequence 

> 문제는 대신 인쇄 메시지의 : "HelloWorld"는 항상 텍스트 "아무것도"를 인쇄하지 않습니다 ... 어떤 제안?

답변

3

귀하의 시나리오는 완벽하게 유효하며 귀하의 구성도 괜찮은 것 같습니다.

나는 당신의 시나리오를 묶었 고 그것은 나를 위해 잘 작동합니다.

다음은 나의 구성입니다.

클래스 중재자 :

package org.wso2.mediator; 

import org.apache.synapse.MessageContext; 
import org.apache.synapse.mediators.AbstractMediator; 

public class SampleMediator extends AbstractMediator { 

    public boolean mediate(MessageContext context) { 
     context.setProperty("Message", "HelloWorld!"); 
     return true; 
    } 
} 

내 프록시 서비스 : 나는 클래스 중재자없이 프록시 서비스를 호출 할 때

<proxy xmlns="http://ws.apache.org/ns/synapse" name="SimpleProxy" 
    statistics="disable" trace="disable" transports="http,https"> 
    <target> 
     <inSequence> 
      <log category="INFO" level="simple" separator=","/> 
      <property action="set" name="Message" scope="default" 
       type="STRING" value="DefaultMessage"/> 
      <class name="org.wso2.mediator.SampleMediator"/> 
      <log category="INFO" level="simple" separator=","> 
       <property expression="get-property('Message')" name="===========Message Value=========="/> 
      </log> 
      <drop/> 
     </inSequence> 
    </target> 
</proxy> 

, 그것은

INFO - LogMediator To: /services/SimpleProxy.SimpleProxyHttpSoap12Endpoint,WSAction: urn:mediate,SOAPAction: urn:mediate,MessageID: urn:uuid:81150094-cbc4-44f7-83eb-251e28149564,Direction: request,===========Message Value========== = DefaultMessage 

를 출력하고 나는를 호출 할 때 인쇄하는 클래스 조정자와의 프록시 서비스

INFO - LogMediator To: /services/SimpleProxy.SimpleProxyHttpSoap12Endpoint,WSAction: urn:mediate,SOAPAction: urn:mediate,MessageID: urn:uuid:e3a04341-907c-40fe-9f58-5a10d2ce346a,Direction: request,===========Message Value========== = HelloWorld! 

희망이 있습니다.

Harshana

1

문제가 log4j.properties에 기초한다. 클래스가 my.mediation 패키지에 있습니다. log4j.properties에는 존재하지 않습니다. 당신은 YOUR_WSO2/lib 디렉토리/log4j.properties로 이동 네임 스페이스/패키지의 로그 레벨을 추가 할 필요가 : 여기 Harashana의 예는 일을 왜도 볼

... 
log4j.logger.org.wso2=INFO 
log4j.logger.my.mediation=DEBUG 

- 그는 단지 변경 org.wso2에 패키지 - 당신은 자신의 커스텀 중개자를 위해서해서는 안된다.

+0

나는 당신에게 동의하지 않는다 :-). 중재자가 사용하는 패키지는 중재자 자체로부터이 메시지를 기록하지 않기 때문에 여기서는 중요하지 않습니다. 조정자의 작업은 로깅과 관련이없는 속성에 값을 설정하는 것입니다. 그러므로 아니오, 여기서 문제가되지 않습니다. 내 구성을 nuvio의 패키지 이름으로 바꾸면 구성이 오류없이 계속 작동합니다. 그래서 제 제안은 내 구성을 사용하고 내 것과 당신의 것을 비교하고 그 차이점을 확인하는 것입니다. –

+0

우리가 클래스 중재자 자체로부터 메시지를 기록하려고하면 패키지가 영향을 미쳤을 수 있습니다. –

+0

네 말이 맞아. 코드를 올바르게 보지 않았 으면 출력이 사용자 지정 조정자 내부에서 수행 될 것이라고 생각했습니다. 댓글 주셔서 감사합니다. 어쨌든 내 대답을 남겨두고 누군가가 중재자의 기록에 대한 문제를 정확히 조사 할 것입니다. – FiveO