【问题标题】:Sending JMS messages in WSO2 without specifying all JMS parameters in proxy definition在 WSO2 中发送 JMS 消息而不在代理定义中指定所有 JMS 参数
【发布时间】:2015-02-27 13:46:56
【问题描述】:

我有一个基于 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>

【问题讨论】:

    标签: oracle jms wso2


    【解决方案1】:

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

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

    <endpoint key="your_EP"/>
    

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

    【讨论】:

    • 保存端点时收到“提供的 URI 无效”(请参阅​​我的 OP 中的“我的新地址”部分)。看起来他不喜欢 LDAP 路径所需的 URI 中的逗号。
    • 另一方面,即使该解决方案可以使代理定义更清晰,我仍然必须包含每个端点的所有 JMS 连接参数。我希望有一个解决方案,我在一个中心位置指定所有 JMS 连接内容,无论是axis2.xml 还是其他地方,并且在定义我的端点或代理。
    • @Ya.:在您提供的地址 URI 中,您没有关闭双引号。定义端点使您可以更灵活地为不同的服务器/配置实际使用不同的参数。
    • 这是一个 &p 错误。我指定的实际 URI 是:jms:/cn=tro_Q_JMS2, cn=OracleDBQueues, cn=ORCL, cn=OracleContext, ou=Service, so=sgi, c=us?transport.jms.ConnectionFactoryJNDIName=cn=tro_jms cn =oracledbconnections cn=ORCL cn=OracleContext ou=Services o=sgi c=us&java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory&java.naming.provider.url=ldap://localhost:10389/&transport. jms.DestinationType=queue&server_dn=cn=ORCL cn=OracleContext ou=Services o=sgi c=us& java.naming.security.principal=uid=tromanow ou=Services o=sgi c=us& java.naming.security.credentials=tromanow& java (...续)
    • 我找到了解决 URI 验证问题的方法。 1- 使用虚拟但有效的 URI 填写地址 2- 切换到代码视图并在那里编辑地址 3- 保存并关闭。这将绕过验证并欺骗它接受逗号。不幸的是,每次进行修改时都必须重复。对我来说似乎是一个错误。
    猜你喜欢
    • 2013-06-25
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 2018-10-24
    • 2013-10-09
    • 2016-01-11
    相关资源
    最近更新 更多