2012-07-31 66 views
1

我在AMQ 5.6.0中測試了ActiveMQ 5.5.0(保險絲版本)應用程序,並注意到我們的Spring JNDI配置的Oracle數據源未找到。升級到ActiveMQ 5.6.0後無法識別Spring JNDI數據源

我在應用程序中改變的唯一東西是AMQ/Spring的pom.xml版本(與5.6版本相匹配)。否則,我使用相同的應用程序代碼和配置(activemq.xml,jndi.xml等),但我的Spring JDBC DAO(v3.0.5)無法找到它們。

在日誌中,否則,只是這個Spring應用上下文初始化錯誤沒有錯誤...

javax.naming.NameNotFoundException; remaining name 'jdbc/myDataSource' 

這裏是有關春節JNDI配置(CONF/jndi.xml,列入的conf/activemq.xml中) ...

<bean id="jndi" class="org.apache.xbean.spring.jndi.SpringInitialContextFactory" 
    factory-method="makeInitialContext" scope="singleton"> 
    <property name="entries" ref="jndiEntries" /> 
</bean> 
<util:map id="jndiEntries"> 
    <entry key="jdbc/myDataSource"> 
    <bean id="myDBCPDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
     <property name="driverClassName" value="oracle.jdbc.OracleDriver" /> 
     ... 

然後我的應用程序引用它像這樣...

<bean id="myDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName"> 
     <value>jdbc/myDataSource</value> 
    </property> 
</bean> 

<bean id="messageDAO" class="com.mycompany.MessageDAOImpl"> 
    <property name="dataSource" ref="myDataSource" /> 
</bean> 

那賽d,我沒有使用JNDI進行測試(而只是在我的應用程序中對數據源進行了硬編碼),並且一切都按預期工作。因此,除了Spring JNDI註冊/查找數據源等之外,應該排除所有內容。

那麼,我錯過了什麼?

回答

0

我發現這個問題,我添加了一個jndi.properties文件/ conf目錄下包含以下內容,現在的工作罰款(並不需要這下AMQ 5.5 ...怪)......

java.naming.factory.initial = org.apache.xbean.spring.jndi.SpringInitialContextFactory 
0

ActiveMQ對xbean-spring具有依賴性,您將其用作JNDI提供者。由於升級到ActiveMQ 5.6.0,可能傳遞的Xbean依賴性已經發生變化。

+0

終於回到了這個......我使用的是xbean-spring 3.9(與AMQ 5.6一樣),但仍然有相同的問題 – 2012-09-29 21:26:27

相關問題