有谁确切地知道 javax.jms.InvalidDestinationException: Not allowed to create destination 是什么意思?

Mic*_*l W 2 java spring jms tibco-ems spring-jms

当我收到此错误时,我尝试使用 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>
Run Code Online (Sandbox Code Playgroud)

这到底是什么意思?我的详细信息或我的配置有误吗?

str*_*mqm 5

JMS 规范将其定义为

当提供者不理解目标或不再有效时,必须抛出此异常。

通常这意味着 Destination 的名称无效,例如传递给的参数

Session.createQueue(String qName)
Run Code Online (Sandbox Code Playgroud)

(编辑:或在 JNDI 中定义)不符合提供者命名约定或不存在,偶尔它可以用于其他原因(例如尝试使用已关闭的 TemporaryQueue)。我会仔细检查您的配置以确保您指定了正确的名称,很可能某处存在错误和/或您正在尝试与 EMS 约定不匹配的内容。