2012-09-06 177 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並添加日誌的水平,爲您的命名空間/包:

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

這裏還可以看到爲什麼從Harashana的例子工作 - 他只是改變了包到org.wso2 - 你不應該爲你自己的自定義調解器做。

+0

我不同意你:-)。我們用於調解器的包在這裏並不重要,因爲我們不會從調解器本身記錄此消息。調解員的任務是將值設置爲與記錄無關的屬性。因此,不,這裏不是問題。如果你用nuvio的包名替換我的配置,我的配置仍然可以正常工作。所以我的建議是使用我的配置,並與我的比較,看看有什麼不同。 –

+0

如果我們嘗試從類中介本身記錄消息,該包可能會產生影響。 –

+0

你說得對。沒有正確地查看代碼,認爲輸出將在Custom Mediator內完成。感謝您的評論。無論如何,我離開我的答案,也許有人會仔細研究調解人內部的日誌問題。 – FiveO