Ошибка проверки при попытке установить соединение с очередью Websphere с сервера JBoss - PullRequest
1 голос
/ 30 марта 2012

При попытке инициализировать ConnectionFactory из jobScheduler (работает в jboss-5) в очередь веб-сферы, я получаю следующее исключение

java.lang.VerifyError: Cannot inherit from final class
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
        at org.jboss.classloader.spi.base.BaseClassLoader.access$200(BaseClassLoader.java:67)
        at org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:633)
        at org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:592)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:591)
        at org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:568)
        at org.jboss.classloader.spi.base.BaseDelegateLoader.loadClass(BaseDelegateLoader.java:135)
        at org.jboss.classloader.spi.filter.FilteredDelegateLoader.loadClass(FilteredDelegateLoader.java:131)
        at org.jboss.classloader.spi.base.ClassLoadingTask$ThreadTask.run(ClassLoadingTask.java:455)
        at org.jboss.classloader.spi.base.ClassLoaderManager.nextTask(ClassLoaderManager.java:267)
        at org.jboss.classloader.spi.base.ClassLoaderManager.process(ClassLoaderManager.java:166)
        at org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:276)
        at org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:1138)
        at org.jboss.classloader.spi.base.BaseClassLoader.loadClassFromDomain(BaseClassLoader.java:862)
        at org.jboss.classloader.spi.base.BaseClassLoader.doLoadClass(BaseClassLoader.java:502)
        at org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:447)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at com.ibm.ws.naming.util.WsnInitCtxFactory.parseIiopUrl(WsnInitCtxFactory.java:1781)
        at com.ibm.ws.naming.util.WsnInitCtxFactory.parseBootstrapURL(WsnInitCtxFactory.java:1525)
        at com.ibm.ws.naming.util.WsnInitCtxFactory.getInitialContextInternal(WsnInitCtxFactory.java:389)
        at com.ibm.ws.naming.util.WsnInitCtx.getContext(WsnInitCtx.java:113)
        at com.ibm.ws.naming.util.WsnInitCtx.getContextIfNull(WsnInitCtx.java:428)
        at com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:144)
        at javax.naming.InitialContext.lookup(InitialContext.java:392)
        at com.test.testBatch.jms.JMSUtil.initialize(JMSUtil.java:57)
        at com.test.testBatch.jms.JMSUtil.send(JMSUtil.java:90)
        at com.test.testBatch.job.OutboundChangesPollingJob.execute(OutboundChangesPollingJob.java:76)
        at org.quartz.core.JobRunShell.run(JobRunShell.java:195)
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)
2012-03-29 09:47:11,775 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0) Exception in thread "DefaultQuartzScheduler_Worker-0"
2012-03-29 09:47:11,776 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0) java.lang.NoClassDefFoundError: com/ibm/rmi/corba/NamedValueImpl
2012-03-29 09:47:11,777 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at com.ibm.ws.naming.util.WsnInitCtxFactory.parseIiopUrl(WsnInitCtxFactory.java:1781)
2012-03-29 09:47:11,777 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at com.ibm.ws.naming.util.WsnInitCtxFactory.parseBootstrapURL(WsnInitCtxFactory.java:1525)
2012-03-29 09:47:11,777 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at com.ibm.ws.naming.util.WsnInitCtxFactory.getInitialContextInternal(WsnInitCtxFactory.java:389)
2012-03-29 09:47:11,777 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at com.ibm.ws.naming.util.WsnInitCtx.getContext(WsnInitCtx.java:113)
2012-03-29 09:47:11,777 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at com.ibm.ws.naming.util.WsnInitCtx.getContextIfNull(WsnInitCtx.java:428)
2012-03-29 09:47:11,777 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:144)
2012-03-29 09:47:11,778 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at javax.naming.InitialContext.lookup(InitialContext.java:392)
2012-03-29 09:47:11,778 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at com.test.testBatch.jms.JMSUtil.initialize(JMSUtil.java:57)
2012-03-29 09:47:11,778 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at com.test.testBatch.jms.JMSUtil.send(JMSUtil.java:90)
2012-03-29 09:47:11,778 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at com.test.testBatch.job.OutboundChangesPollingJob.execute(OutboundChangesPollingJob.java:76)
2012-03-29 09:47:11,778 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at org.quartz.core.JobRunShell.run(JobRunShell.java:195)
2012-03-29 09:47:11,778 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)
2012-03-29 09:47:11,779 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0) Caused by: java.lang.ClassNotFoundException: Unexpected error during load of: com.ibm.rmi.corba.NamedValueImpl, msg=Cannot inherit from final class
2012-03-29 09:47:11,779 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at org.jboss.classloader.spi.base.ClassLoaderManager.process(ClassLoaderManager.java:181)
2012-03-29 09:47:11,779 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:276)
2012-03-29 09:47:11,779 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:1138)
2012-03-29 09:47:11,779 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at org.jboss.classloader.spi.base.BaseClassLoader.loadClassFromDomain(BaseClassLoader.java:862)
2012-03-29 09:47:11,779 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at org.jboss.classloader.spi.base.BaseClassLoader.doLoadClass(BaseClassLoader.java:502)
2012-03-29 09:47:11,779 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:447)
2012-03-29 09:47:11,779 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
2012-03-29 09:47:11,780 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        ... 12 more
2012-03-29 09:47:11,780 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0) Caused by: java.lang.VerifyError: Cannot inherit from final class
2012-03-29 09:47:11,780 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at java.lang.ClassLoader.defineClass1(Native Method)
2012-03-29 09:47:11,780 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
2012-03-29 09:47:11,780 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
2012-03-29 09:47:11,780 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at org.jboss.classloader.spi.base.BaseClassLoader.access$200(BaseClassLoader.java:67)
2012-03-29 09:47:11,780 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:633)
2012-03-29 09:47:11,780 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:592)
2012-03-29 09:47:11,780 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at java.security.AccessController.doPrivileged(Native Method)
2012-03-29 09:47:11,781 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:591)
2012-03-29 09:47:11,781 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:568)
2012-03-29 09:47:11,781 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at org.jboss.classloader.spi.base.BaseDelegateLoader.loadClass(BaseDelegateLoader.java:135)
2012-03-29 09:47:11,781 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at org.jboss.classloader.spi.filter.FilteredDelegateLoader.loadClass(FilteredDelegateLoader.java:131)
2012-03-29 09:47:11,781 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at org.jboss.classloader.spi.base.ClassLoadingTask$ThreadTask.run(ClassLoadingTask.java:455)
2012-03-29 09:47:11,781 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at org.jboss.classloader.spi.base.ClassLoaderManager.nextTask(ClassLoaderManager.java:267)
2012-03-29 09:47:11,781 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        at org.jboss.classloader.spi.base.ClassLoaderManager.process(ClassLoaderManager.java:166)
2012-03-29 09:47:11,781 ERROR [STDERR] (DefaultQuartzScheduler_Worker-0)        ... 18 more

Так как он вызывает classNotFound, я пошел и проверил библиотекупапка и класс присутствует в банке с именем "ibmorb.jar".(Не уверен, почему выбрасывается ClassNotFound)

Это фабрика имен, которая инициализируется в IntialContext

com.ibm.websphere.naming.WsnInitialContextFactory

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

Ответы [ 2 ]

1 голос
/ 31 марта 2012

Упомянутая фабрика jar и context может указывать на то, что клиент WMQ был заимствован из установки WebSphere Application Server, а не с помощью автономного установщика клиента WMQ. Если это так, вы можете легко это исправить, установив автономный клиент. Вы можете получить это бесплатно (с регистрацией) в качестве SupportPac. Это по версии, поэтому у вас есть выбор:

Обратите внимание, что установка клиента из поставляемого IBM установщика предоставляет ряд дополнительных функций, таких как диагностика для трассировки, отображение версии, тестовый код начальной проверки, пример исходного кода и т. Д. Это метод установки, который будет поддерживать IBM поэтому, даже если вы можете заставить его работать, скопировав jar-файлы с сервера WMQ, рекомендуется использовать носители IBM.

Также обратите внимание, что упаковка классов Java и JMS изменилась между версиями. Важно знать, какую версию вы используете, и обратиться к соответствующим документам для CLASSPATH и другим параметрам конфигурации. Реализация v7.1 имеет много функциональных улучшений и является единственной версией, которая использует преимущества функций QMgr v7.1. Однако он подключится к любой версии QMgr, поэтому, если это новая разработка, попробуйте сейчас использовать клиент v7.1, чтобы вам не пришлось обновляться в будущем.

Ссылки Инфоцентра для каждой версии клиента:

Одной из утилит, поставляемых с установщиком IBM, является сценарий setmqjmsenvsetmqjmsenv64 при установке 64-разрядного клиента) в каталоге java/bin. Вы можете посмотреть здесь, чтобы определить CLASSPATH и другие переменные среды, необходимые для вашей версии клиентских классов WMQ для Java.

0 голосов
/ 02 апреля 2012

Решение, с которым я решил это

  • Удалил баночки IBM, если они дважды помещены в приложение

  • Если одни и те же банки размещены отдельно в двух приложениях (запущенных в тот же сервер), затем поместил файлы jar в папку lib jboss (на
    избегать лишних)

  • Поместил jacorb.jar в папку lib jboss, чтобы избежать использования стандартного пакета java по умолчанию

Я выполнил эти три шага и не получил эту ошибку !!!

Спасибо за все ваши ответы и усилия !! : -)

...