Кто-нибудь знает точно, что javax.jms.InvalidDestinationException: не разрешается создавать целевые средства? - PullRequest
2 голосов
/ 01 августа 2011

Я пытаюсь подключиться к теме Tibco Ems, используя Spring, когда получаю эту ошибку.

Вот конфигурация:

    <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>

Что именно это означает?Мои данные или мои настройки неверны?

Ответы [ 4 ]

4 голосов
/ 01 августа 2011

Спецификация JMS определяет его как

Это исключение должно быть вызвано, когда пункт назначения либо не понят провайдером, либо недействителен.

Как правило, это означает, что название пункта назначения является недействительным, например, параметр передан

Session.createQueue(String qName)

(редактировать: или определено в JNDI) не соответствует соглашениям о присвоении имен провайдерам или не существует, иногда его можно использовать по другим причинам (например, при попытке использовать TemporaryQueue, который был закрыт). Я бы дважды проверил вашу конфигурацию, чтобы убедиться, что вы указали правильное имя, скорее всего, где-то есть ошибка и / или вы пытаетесь что-то, что не соответствует соглашениям EMS.

2 голосов
/ 25 августа 2014

Я также искал решение для этого, так как столкнулся с той же проблемой.

Возникли проблемы с моей средой EMS, и в моей среде EMS нет одной темы.

Я много раз искал ответ, и ниже приведены шаги, которые я получил.

Ниже приведены шаги:

  1. Запустите сервер TIBCO EMS.

  2. Войдите в TIBCO EMS Administrator Tool, используя пользователя admin.

  3. После подключения выполните команду ниже для проверки доступных тем.

    Показать темы

  4. Вы видите, что нет темы с именем '>'

  5. Создайте одну тему с помощью команды ниже.

    создать тему>

  6. Теперь попробуйте подключить динамическую тему, используя свой код, вы должны иметь возможность подключиться к среде EMS и создать динамическую тему.

Может быть, это тоже может вам помочь.

Источник информации: http://aajsearch.com/556/connecting-environment-allowed-destination-anyone-please?show=557#a557

1 голос
/ 01 августа 2011

Похоже, вы ссылаетесь на пункт назначения, который не существует. То есть ошибка имени. Возможно, неправильный префикс имени JNDI? Или используя имя JNDI вместо имени очереди EMS? Или наоборот. Извините, я давно не работал с EMS.

0 голосов
/ 08 августа 2018

Найдите файл queues.conf в папке ems в Tibco и включите динамическое создание очереди, используя '>' Это решило ошибку для меня.

...