当我收到此错误时,我尝试使用Spring连接到Tibco Ems主题。
这是配置:
<jms:listener-container connection-factory="Tcf" acknowledge="auto" >
<jms:listener id="ListenerContainer" destination="######" ref="MessageListener" />
</jms:listener-container>
<bean id="MessageListener" class="com.dcc.jms.listeners.TestListener"></bean>
<!-- JNDI Template -->
<bean id="JndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.provider.url">#</prop>
<prop key="java.naming.factory.url.pkgs">com.sun.jndi.ldap </prop>
<prop key="java.naming.factory.initial">com.sun.jndi.ldap.LdapCtxFactory</prop>
</props>
</property>
</bean>
<!-- CONNECTION FACTORY -->
<bean id="Tcf"
class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
<property name="username" value="" />
<property name="password" value="" />
<property name="targetConnectionFactory">
<bean class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate" ref="JndiTemplate" />
<property name="jndiName" value="#" />
</bean>
</property>
</bean>
这究竟是什么意思?我的详细信息或配置错了吗?
答案 0 :(得分:4)
JMS规范将其定义为
当提供商不理解目的地或不再有效时,必须抛出此异常。
通常,这意味着目的地的名称无效,例如传递给
的参数Session.createQueue(String qName)
(编辑:或在JNDI中定义)不符合提供者命名约定或不存在,偶尔可以出于其他原因使用它(例如,尝试使用已关闭的TemporaryQueue)。我会仔细检查你的配置,以确保你已经指定了正确的名称,很可能在那里有一个错误和/或你正在尝试一些与EMS约定不符的东西。
答案 1 :(得分:2)
我也在寻找解决方案,因为我遇到了同样的问题。
我的EMS环境存在问题,而我的EMS环境没有一个主题。
我搜索了很多答案,下面是我得到的步骤。
以下是步骤:
启动TIBCO EMS服务器。
使用admin用户登录TIBCO EMS管理员工具。
连接后,运行以下命令检查可用主题。
显示主题
您可以看到没有名称为'&gt;'的主题
使用以下命令创建一个主题。
创建主题&gt;
现在尝试使用您应该能够连接到EMS环境的代码连接动态主题,并创建动态主题。
可能这也可以帮到你。
资料来源: http://aajsearch.com/556/connecting-environment-allowed-destination-anyone-please?show=557#a557
答案 2 :(得分:1)
好像你正在引用一个不存在的目的地。也就是说,名称错误。也许错误的JNDI名称前缀?或者使用JNDI名称而不是EMS队列名称?或相反亦然。对不起,自从我使用EMS以来已经有一段时间了。
答案 3 :(得分:0)
在tibco下的ems文件夹中查找queues.conf文件,并使用'>'启用动态队列创建。这为我解决了错误。