WSO2 - EI 6.2.0 - 使用 EI 配置 Oracle AQ JMS 数据库,以便在 Oracle AQ J



这是Radhakrishnan,是WSO2世界的新手。希望使用 EI 配置 Oracle AQ JMS,以便 EI 可以使用/发布来自 Oracle AQ JMS 的消息。

axis2.xml 的配置已经完成,并编写了一个代理来使用来自 Oracle AQ JMS 的消息。

现在,当我们发布到 Oracle AQ JMS 时,我们得到以下错误,有人有建议/有价值的意见吗?

Caused by: javax.naming.NameNotFoundException: Name [dynamicQueues//RIB_AQ_USER.ETEXTPAYTERM] is not bound in this Context. Unable to find [dynamicQueues].
at org.apache.naming.NamingContext.lookup(NamingContext.java:825)
at org.apache.naming.NamingContext.lookup(NamingContext.java:173)
at org.wso2.carbon.context.internal.CarbonContextDataHolder$CarbonInitialJNDIContext.lookup(CarbonContextDataHolder.java:709)

以下是代码片段:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="RMSPayTermOutToRMSProxy"
startOnLoad="true"
statistics="disable"
trace="disable"
transports="http,https">
<target>
<inSequence>
<log level="full"/>
<property name="OUT_ONLY" scope="default" type="STRING" value="true"/>
<property name="FORCE_SC_ACCEPTED" scope="axis2" value="true"/>
<send>
<endpoint>
<address format="pox"
uri="jms2:/RIB_AQ_USER.ETEXTPAYTERM?transport.jms.ConnectionFactoryJNDIName=JMSSenderTopicConnectionFactory"/>
</endpoint>
</send>
</inSequence>
</target>
<parameter name="serviceType">proxy</parameter>
<description/>
</proxy>

一年前我遇到了类似的问题,我们使用以下配置进行了修复。

我们已经在 axis2 中配置了连接工厂(AqQueueConnectionFactory.xml

<!-- Oracle AQ Listener Start-->
<transportReceiver name="oracleaq" class="org.apache.axis2.transport.jms.JMSListener">
<parameter name="AqQueueConnectionFactory" locked="false">
<parameter name="java.naming.factory.initial" locked="false">oracle.jms.AQjmsInitialContextFactory</parameter>
<parameter name="db_url" locked="false">jdbc:oracle:thin:@hostname:port:schema</parameter>
<parameter name="java.naming.security.principal" locked="false">username</parameter>
<parameter name="java.naming.security.credentials" locked="false">password</parameter>
<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
<parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
</parameter>
<parameter name="AqTopicConnectionFactory" locked="false">
<parameter name="java.naming.factory.initial" locked="false">oracle.jms.AQjmsInitialContextFactory</parameter>
<parameter name="db_url" locked="false">jdbc:oracle:thin:@hostname:port:schema</parameter>
<parameter name="java.naming.security.principal" locked="false">username</parameter>
<parameter name="java.naming.security.credentials" locked="false">password</parameter>
<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">TopicConnectionFactory</parameter>
<parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter>
</parameter>
</transportReceiver>
<!-- Oracle AQ Listener End -->

我们必须在更改 axis2.xml 并在 lib 文件夹中添加以下 jar 文件(aqapi-10.1.3.1.jar 及其依赖项(后重新启动服务器。

在代理的参数部分中,我们定义了代理侦听的队列配置。

<parameter name="transport.jms.DestinationType">queue</parameter>
<parameter name="transport.jms.Destination">Queues/QueueName</parameter>
<parameter name="transport.jms.ContentType">
<rules xmlns="">
<jmsProperty>contentType</jmsProperty>
<default>application/xml</default>
</rules>
</parameter>
<parameter name="transport.jms.ConnectionFactory">AqQueueConnectionFactory</parameter>

如上面 axis2.xml 中所述,如果代理的传输,我们将预言机作为一个

。完成上述设置后,我们可以毫无问题地收听来自 Oracle AQ 的队列/主题。

谢谢。

最新更新