首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从ActiveMQ或@ context.xml查找外部context.xml[SpringBoot1.5.8]

如何从ActiveMQ或@ context.xml查找外部context.xml[SpringBoot1.5.8]
EN

Stack Overflow用户
提问于 2017-10-27 00:12:04
回答 1查看 1.1K关注 0票数 1

我有一个用Maven构建的SpringBoot1.5.8应用程序。项目在嵌入式activeMQ中运行良好,但当我尝试设置外部数据源时,无法从位于server/conf/目录中的context.xml获取JNDI属性。

这是context.xml__:

代码语言:javascript
复制
 <Context>
    <Resource name="jdbc/TEST" auth="Container" type="javax.sql.DataSource"
                 maxTotal="100" maxIdle="30" maxWaitMillis="10000"
                 username="TEST" password="TEST" driverClassName="oracle.jdbc.OracleDriver"
                 url="jdbc:oracle:thin:@127.0.0.1:1521/TEST"/>
    <Resource name="jms/ConnectionFactory" auth="Container" 
                type="org.apache.activemq.ActiveMQConnectionFactory" 
                description="JMS Connection Factory"
                factory="org.apache.activemq.jndi.JNDIReferenceFactory" 
                brokerURL="tcp://127.0.0.1:8161" 
                brokerName="LocalActiveMQBroker"/>
    <Resource name="jms/ActQueue" 
                auth="Container" 
                type="org.apache.activemq.command.ActiveMQQueue" 
                description="TESTQueue"
                factory="org.apache.activemq.jndi.JNDIReferenceFactory" 
                physicalName="TEST.QUEUE"/>
  </Context>

最初,应用程序数据源位于application.properties__:内部。

代码语言:javascript
复制
# Oracle settings
spring.datasource.url=jdbc:oracle:thin:@127.0.0.1:TEST
spring.datasource.username=TEST
spring.datasource.password=TEST
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver    

#ActiveMQ settings
spring.activemq.broker-url=tcp://localhost:8161
spring.activemq.broker-name=LocalActiveMQBroker
spring.activemq.user=TEST
spring.activemq.password=TEST

我的目标是通过JNDI名称在server/conf/context.xml中获取(查找) JNDI资源属性站点。

例如,对于DB来说非常容易,只需编写这两行并注释其他的:

代码语言:javascript
复制
# Oracle settings from external context.xml (it works!)
spring.datasource.jndi-name=java:/comp/env/jdbc/ACTIgrue
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver

如上所示,如何获得spring.activemq.broker-url=???spring.activemq.broker-name=???

->Every的帮助将不胜感激

更新:

我还试图绕过application.properties文件,并通过注释直接获得它,如下所示:

代码语言:javascript
复制
@Resource(name="java:/comp/env/jms/ConnectionFactory")
private ActiveMQConnectionFactory conn;

但下列例外情况发生:

代码语言:javascript
复制
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'java:/comp/env/jms/ConnectionFactory'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-30 09:58:05

我终于找到了一个解决方案,在这个链接上

因此,--这是正确的指令,要在application.properties中从JNDI名称中实例ActiveMQConnectionFactory bean:

代码语言:javascript
复制
spring.jms.jndi-name=java:/comp/env/jms/ConnectionFactory

我希望这会有所帮助;)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46965631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档