2015-09-17 2 views
2

Я пытаюсь использовать адаптер IBM MQ в JBoss в первый раз (даже с использованием JBoss в первый раз). Мы переносим наше приложение из WebSphere7 в JBoss 6.3. И для этого мне нужно настроить те же MQ, которые мы использовали для использования в IBM WebSphere. Поэтому я начал настраивать адаптер IBM Resource. Ниже приведена конфигурация файла standalone.xml. Ниже конфигурации работает отлично, однако я не могу получить QueueConnectionFactory с кодом (QueueConnectionFactory) context.lookup("java:/comp/env/serviceQCF"), как он бросает исключение класс литых (com.ibm.mq.connector.outbound.ConnectionFactoryImpl не может быть приведен к javax.jms.QueueConnectionFactory).IBM MQ Resource adapter на JBoss 6.3 Проблема

И когда я использую connection-definition class-name="javax.jms.QueueConnectionFactory" jndi-name="java:/comp/env/serviceQCF" enabled="true" pool-name="ConnectionClass" * JBoss бросает исключение

javax.naming.NameNotFoundException: комп/ENV/serviceQCF - сервис jboss.naming.context.java.comp.env.serviceQCF *

Я попытался с помощью ConnectionFactory однако тот же результат (Имя не найдено исключение)

<subsystem xmlns="urn:jboss:domain:resource-adapters:1.1"> 
     <resource-adapters> 
      <resource-adapter id="wmq.jmsra.rar"> 
       <archive> 
        wmq.jmsra.rar 
       </archive> 
       <transaction-support>LocalTransaction</transaction-support> 
       <connection-definitions> 
        <connection-definition class-name="com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl" jndi-name="java:/comp/env/serviceQCF" enabled="true" pool-name="ConnectionClass"> 
         <config-property name="port"> 
          1414 
         </config-property> 
         <config-property name="channel"> 
          MQ.CLT.STH.CHL 
         </config-property> 
         <config-property name="hostName"> 
          127.0.0.127 
         </config-property> 
         <config-property name="transportType"> 
          MQ.CLIENT 
         </config-property> 
         <config-property name="queueManager"> 
          MQSYKHT0 
         </config-property> 
         <security> 
          <application/> 
         </security> 
         <validation> 
          <background-validation>false</background-validation> 
         </validation> 
        </connection-definition> 
       </connection-definitions> 

ли мне нужно настроить так Эльзи? Нужно ли добавлять/изменять любой путь к классам? Если да, то где и как?

В настоящее время не устанавливая какое-либо имущество, получая контекст:

контекст = новый InitialContext();

Но пытались использовать те ниже:

final Properties env = new Properties(); 
    env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); 
    env.put(Context.PROVIDER_URL, "remote://localhost:4447"); 

, но не повезло.

Пожалуйста, помогите мне.

ответ

0

Я думаю, вы должны определить назначение «java:/comp/env/serviceQCF», прежде чем пытаться использовать его с адаптером ресурсов.

1

Несколько вещей, чтобы отметить здесь. В спецификации JMS имеет домен специфически:

QueueConnectionFactory 
TopicConnectionFactory 

и неустановленным домен специфический:

ConnectionFactory 

Вы должны иметь правильный тип для вашего кода в файле конфигурации сервера. Обратите внимание, что вы можете посмотреть на файл ra.xml упакованного в папку META-INF в IBM MQ JCA для типов:

com.ibm.mq.connector.outbound.ManagedTopicConnectionFactoryImpl 
com.ibm.mq.connector.outbound.ManagedQueueConnectionFactoryImpl 
com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl 

В частности, для броска к QueueConnectionFactory, вы должны быть с помощью ManagedQueueConnectionFactoryImpl.

Обратите внимание: управляемые объекты IBM MQ JCA не могут использоваться в удаленных клиентах. Доступ к ним можно получить только из JVM, который загружает IBM MQ JCA.

1

Как указал Дуг, вы должны использовать ManageQueueConnectionFactoryImpl, но для меня этого было недостаточно. Мне также пришлось добавить ниже: standalone.xml. Без этого я не мог бы отнести класс IBM QueueConnectFactoryImpl к JMS QueueConnectionFactory, хотя этот класс реализовал этот интерфейс.

<subsystem xmlns="urn:jboss:domain:messaging-activemq:1.0"/>