在 WSO2 中发送 JMS 消息而不在代理定义中指定所有 JMS 参数

Sending JMS messages in WSO2 without specifying all JMS parameters in proxy definition

我得到了一个基于 http://wso2.com/library/tutorials/2011/11/configuring-wso2-esb-with-oracle-as-messaging-media/ 与 Oracle 一起工作的 WSO2 示例。

我的问题是:不必在代理中指定所有 JMS 连接参数,是否可以在 axis2.xml 中定义传输发送方并在代理中引用它,类似于您的操作它与接收器?我尝试定义发件人并将地址减少为目的地名称,如下所示。它有点管用,但我时不时会收到一个错误:

org.apache.axis2.AxisFault: The system cannot infer the transport information from the /services/WsdlToJmsSender URL

我的新地址:

<address uri="jms:/cn=tro_Q_JMS2,cn=OracleDBQueues,cn=ORCL,cn=OracleContext,ou=Services, o=sgi,c=us/> 

我的axis2.xml:

 <transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender">
        <parameter name="default" locked="false">
            <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.ldap.LdapCtxFactory</parameter>
            <parameter name="java.naming.provider.url" locked="false">ldap://localhost:10389/</parameter>
            <parameter name="server_dn" locked="false">cn=ORCL,cn=OracleContext,ou=Services, o=sgi,c=us</parameter>
            <parameter name="java.naming.security.principal" locked="false">uid=tromanow,ou=Services,o=sgi,c=us</parameter>
            <parameter name="java.naming.security.credentials" locked="false">tromanow</parameter>
            <parameter name="java.naming.security.authentication" locked="false">simple</parameter>
            <parameter name="transport.jms.UserName" locked="false">tromanow</parameter>
            <parameter name="transport.jms.Password" locked="false">tromanow</parameter>
            <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">cn=tro_jms,cn=oracledbconnections,cn=ORCL, cn=OracleContext,ou=Services, o=sgi,c=us</parameter>
            <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
        </parameter>
  </transportSender>

与其尝试在 axis2.xml 文件中定义它,不如创建一个单独的端点组件(Main -> Manage -> Service Bus -> Endpoints),然后在你的代理服务(或多个代理)中引用那个端点。我不确定在您的 axis2 文件中通过单个端点定义它会获得什么优势。

所以在你定义它之后,你可以通过以下方式在你的代理中引用它:

<endpoint key="your_EP"/>

其中 key 属性是您为端点设置的名称。