我找不到任何體面的,清晰的示例來學習使用Spring配置的JMS組件。所以我寫了這樣的事情:在Weblogic服務器上使用Spring的駱駝JMS組件
<bean id="weblogic" class="org.apache.camel.component.jms.JmsComponent">
<property name="connectionFactory" ref="jmsConnectionFactory"/>
</bean>
<bean id="jmsJndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
<prop key="java.naming.provider.url">t3://${ip}:${port}</prop>
</props>
</property>
</bean>
<bean id="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate" ref="jmsJndiTemplate"/>
<property name="jndiName" value="jms/cdrPreMO-connfact-jndi"/>
</bean>
<camelContext id="camelContext" xmlns="http://camel.apache.org/schema/spring">
<camel:endpoint id="jmsQueue" uri="weblogic:queue:jms/cdrPreMO-queue-jndi"/>
<route>
<from ref="jmsQueue"/>
<bean ref="test" method="writeFile"/>
<to uri="log:errors?level=ERROR"/>
</route>
</camelContext>
但它給了異常:
Caused by: javax.naming.NameNotFoundException: Unable to resolve 'weblogic.jms.backend.jms'. Resolved 'weblogic.jms.backend'; remaining name 'jms'
at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139)
at weblogic.jndi.internal.BasicNamingNode.lookupHere(BasicNamingNode.java:252)
at weblogic.jndi.internal.ServerNamingNode.lookupHere(ServerNamingNode.java:182)
at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:206)
at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:214)
at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:214)
at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:214)
at weblogic.jndi.internal.WLEventContextImpl.lookup(WLEventContextImpl.java:254)
at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:393)
at weblogic.jms.frontend.FEManager.destinationCreate(FEManager.java:287)
... 8 more
JMS CONF是真實的(IP端口和JNDI名稱)。它正在獲得連接,但會話卻給出了例外 有人能告訴我我的錯誤是什麼?
Thanx
編輯:修復應用根據克勞斯的評論。
感謝您的答案克勞斯。真的有價值的信息給我。但例外情況仍然如此。它仍然說:由於:javax.naming.NameNotFoundException:無法解析'weblogic.jms.backend.jms'。已解決'weblogic.jms.backend';剩餘名稱'jms' – Neron
順便說一下,我不知道包名weblogic.jms.backend.jms來自哪裏。我認爲問題可能是關於weblogic jar本身。 – Neron
是的JNDI查找可能會讓人痛苦。在名爲「jms/cdrPreMO-queue-jndi」的weblogic服務器上是否有隊列名稱?看起來stacktrace是關於查找/創建JMS目的地的。 –