Я создал простое весеннее веб-приложение, которое запускает поток и запрашивает сообщения в JMS-очереди.Веб-приложение работает в JBoss 5.1.Я использую JBoss Developer Studio для создания и запуска приложения на сервере приложений.Сервер приложений также работает в JBoss Developer Studio.
Поток работает правильно и пытается запрашивать очередь каждые 5 секунд.Однако при попытке создать соединение с очередью я получаю исключение.
17:48:47,152 ERROR [JBossConnectionFactory] Failed to download and/or install client side AOP stack
org.jboss.jms.exception.MessagingJMSException: Failed to invoke
at org.jboss.jms.client.delegate.DelegateSupport.handleThrowable(DelegateSupport.java:271)
at org.jboss.jms.client.delegate.DelegateSupport.doInvoke(DelegateSupport.java:205)
at org.jboss.jms.client.delegate.DelegateSupport.doInvoke(DelegateSupport.java:160)
at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.org$jboss$jms$client$delegate$ClientConnectionFactoryDelegate$getClientAOPStack$aop(ClientConnectionFactoryDelegate.java:251)
at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.getClientAOPStack(ClientConnectionFactoryDelegate.java)
at org.jboss.jms.client.ClientAOPStackLoader.load(ClientAOPStackLoader.java:75)
at org.jboss.jms.client.JBossConnectionFactory.createConnectionInternal(JBossConnectionFactory.java:192)
at org.jboss.jms.client.JBossConnectionFactory.createQueueConnection(JBossConnectionFactory.java:101)
at org.jboss.jms.client.JBossConnectionFactory.createQueueConnection(JBossConnectionFactory.java:95)
at com.thales.jms.service.JBossJmsService.reconnectPointToPoint(JBossJmsService.java:87)
at com.thales.jms.service.JBossJmsService.receive(JBossJmsService.java:53)
at com.thales.jms.service.JmsReceiverThread.run(JmsReceiverThread.java:19)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassCastException: org.jboss.jms.wireformat.ConnectionFactoryGetClientAOPStackRequest cannot be cast to org.jboss.jms.wireformat.RequestSupport
at org.jboss.jms.server.remoting.JMSServerInvocationHandler.invoke(JMSServerInvocationHandler.java:150)
at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:930)
at org.jboss.remoting.transport.local.LocalClientInvoker.invoke(LocalClientInvoker.java:106)
at org.jboss.remoting.Client.invoke(Client.java:2034)
at org.jboss.remoting.Client.invoke(Client.java:877)
at org.jboss.remoting.Client.invoke(Client.java:865)
at org.jboss.jms.client.delegate.DelegateSupport.doInvoke(DelegateSupport.java:189)
... 11 more
17:48:47,152 ERROR [STDERR] java.lang.RuntimeException: Failed to download and/or install client side AOP stack
17:48:47,152 ERROR [STDERR] at org.jboss.jms.client.JBossConnectionFactory.createConnectionInternal(JBossConnectionFactory.java:199)
17:48:47,152 ERROR [STDERR] at org.jboss.jms.client.JBossConnectionFactory.createQueueConnection(JBossConnectionFactory.java:101)
17:48:47,152 ERROR [STDERR] at org.jboss.jms.client.JBossConnectionFactory.createQueueConnection(JBossConnectionFactory.java:95)
17:48:47,152 ERROR [STDERR] at com.thales.jms.service.JBossJmsService.reconnectPointToPoint(JBossJmsService.java:87)
17:48:47,152 ERROR [STDERR] at com.thales.jms.service.JBossJmsService.receive(JBossJmsService.java:53)
17:48:47,152 ERROR [STDERR] at com.thales.jms.service.JmsReceiverThread.run(JmsReceiverThread.java:19)
17:48:47,152 ERROR [STDERR] at java.lang.Thread.run(Unknown Source)
17:48:47,152 ERROR [STDERR] Caused by: org.jboss.jms.exception.MessagingJMSException: Failed to invoke
17:48:47,152 ERROR [STDERR] at org.jboss.jms.client.delegate.DelegateSupport.handleThrowable(DelegateSupport.java:271)
17:48:47,152 ERROR [STDERR] at org.jboss.jms.client.delegate.DelegateSupport.doInvoke(DelegateSupport.java:205)
17:48:47,152 ERROR [STDERR] at org.jboss.jms.client.delegate.DelegateSupport.doInvoke(DelegateSupport.java:160)
17:48:47,152 ERROR [STDERR] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.org$jboss$jms$client$delegate$ClientConnectionFactoryDelegate$getClientAOPStack$aop(ClientConnectionFactoryDelegate.java:251)
17:48:47,152 ERROR [STDERR] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.getClientAOPStack(ClientConnectionFactoryDelegate.java)
17:48:47,152 ERROR [STDERR] at org.jboss.jms.client.ClientAOPStackLoader.load(ClientAOPStackLoader.java:75)
17:48:47,152 ERROR [STDERR] at org.jboss.jms.client.JBossConnectionFactory.createConnectionInternal(JBossConnectionFactory.java:192)
17:48:47,152 ERROR [STDERR] ... 6 more
17:48:47,152 ERROR [STDERR] Caused by: java.lang.ClassCastException: org.jboss.jms.wireformat.ConnectionFactoryGetClientAOPStackRequest cannot be cast to org.jboss.jms.wireformat.RequestSupport
17:48:47,152 ERROR [STDERR] at org.jboss.jms.server.remoting.JMSServerInvocationHandler.invoke(JMSServerInvocationHandler.java:150)
17:48:47,152 ERROR [STDERR] at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:930)
17:48:47,152 ERROR [STDERR] at org.jboss.remoting.transport.local.LocalClientInvoker.invoke(LocalClientInvoker.java:106)
17:48:47,152 ERROR [STDERR] at org.jboss.remoting.Client.invoke(Client.java:2034)
17:48:47,152 ERROR [STDERR] at org.jboss.remoting.Client.invoke(Client.java:877)
17:48:47,152 ERROR [STDERR] at org.jboss.remoting.Client.invoke(Client.java:865)
17:48:47,152 ERROR [STDERR] at org.jboss.jms.client.delegate.DelegateSupport.doInvoke(DelegateSupport.java:189)
17:48:47,153 ERROR [STDERR] ... 11 more
Веб-приложение построено с зависимостями от двух библиотек jboss.Они были извлечены с самого сервера JBoss 5.1.Библиотеки:
jboss-javaee.jar
jboss-messaging-client.jar
Код для подключения к очереди выглядит следующим образом:
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
env.put(Context.PROVIDER_URL, "jnp://localhost:1099");
env.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
Context ic = new InitialContext(env);
QueueConnectionFactory connectionFactory = (QueueConnectionFactory) ic.lookup("ConnectionFactory");
Queue queue = (Queue) ic.lookup("queue/DLQ");
connection = connectionFactory.createQueueConnection();
session = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
receiver = session.createReceiver(queue);
Исключение возникает при попытке создать подключение к очереди (connectionFactory.createQueueConnection ();).Я весь день гуглял и не пытался найти что-нибудь, что помогло бы решить мою проблему.
Кто-нибудь сейчас знает, почему возникает исключение и как его решить?У меня такое чувство, что это проблема с jboss jars, с которыми я создаю веб-приложение.Если кто-то может помочь, это будет с благодарностью.
Спасибо и простите за длинный пост!