2012-09-06 136 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