微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

OpenESB 和 Glassfish 中的 JMS 连接问题

如何解决OpenESB 和 Glassfish 中的 JMS 连接问题

目前我正在从 GlassFish v2.1.1 升级到 openesb 3.2.4 standalone + Glassfish 5.0.1(将 javaee 组件拆分为部署在同一台机器上的 glassfish)

MDB 客户结构: 下面提到的代码存在于 ESBUtils.jar 中,它在 POJO jar 中引用,该 BPEL 复合应用程序引用独立部署在 openesB 中 在 ESBUtils.jar、POJO jar 以及 OpenesB 独立实例 libext 文件夹中添加了 gf-client。

下面提到的代码在使用 glassfish ESB v2 时有效,其中 JBI 模块全部捆绑在一个 zip 文件中并部署在 glassfish 中。 现在我已将 MDB 拆分为 glassfish,并将 POJO 和 BHEL 模块保留在 openesb 中。 Glassfish 和 openesb Standalone 都托管在同一个 linux 服务器中。

Glassfish 配置: 康恩工厂 JNDI 名称:jms/LetterConnFactory 资源类型:javax.jms.QueueConnectionFactory

目的地 JNDI 名称:jms/LetterQueue 物理目的地:LetterQueue 资源类型:javax.jms.Queue

MDB jar 在 glassfish 服务器上成功部署。

OpenesB 配置 sun-jms-binding 3.2.4 安装并启动。 gf-client.jar 添加到 libext/sun-jms-binding 文件

Code Block from ESBUtlils (MDB client)
 Java File: QueueUtil.java
Method: validateJMSQ
                qFactory = "jms/LetterConnFactory";
                qName = "jms/LetterQueue";
                Properties properties = new Properties();
                        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY," com.sun.enterprise.naming.SerialInitContextFactory");
                        properties.setProperty(Context.PROVIDER_URL,"iiop://localhost:3700");
                        javax.naming.Context jndiContextval = new InitialContext(properties);
                QueueConnectionFactory connFactory = (QueueConnectionFactory) jndiContextval.lookup(qFactory);
                Queue queueval = (Queue) jndiContextval.lookup(qName);
                QueueConnection queueConn = connFactory.createQueueConnection();
                QueueSession queueSessionval = queueConn.createQueueSession(false,Session.AUTO_ACKNowLEDGE);
 
                // create a queue browser
                Queuebrowser queuebrowser = queueSessionval.createbrowser(queueval);
                // start the connection
                queueConn.start();
                // browse the messages
                Enumeration e = queuebrowser.getEnumeration();
                while (e.hasMoreElements()) {
                                flag = true;
                                break;
                }
 
                queueConn.close();


Error:
021-07-14T06:40:00.060+0200 SEVERE [org.glassfish.openesb.pojose.jbi.nmr.BasePojoExecutor] (pojo-se-3) null
java.lang.NoClassDefFoundError: Could not initialize class com.sun.enterprise.naming.SerialInitContextFactory
        at java.lang.class.forName0(Native Method)
        at java.lang.class.forName(Class.java:348)
        at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:91)
        at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:61)
        at javax.naming.spi.NamingManager.getinitialContext(NamingManager.java:672)
        at javax.naming.InitialContext.getDefaultinitCtx(InitialContext.java:313)
        at javax.naming.InitialContext.init(InitialContext.java:244)
        at javax.naming.InitialContext.<init>(InitialContext.java:216)
        at com.g.d.common.utils.QueueUtil.validateJMSQ(QueueUtil.java:380)
        at g.sw.d.e.collect.pojo.Letters.Letter(LoadLetters.java:105)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.glassfish.openesb.pojose.jbi.nmr.InOnlyExecutor.executePojoOperation(InOnlyExecutor.java:76)
        at org.glassfish.openesb.pojose.jbi.thread.InMsgTask.executePojoOperation(InMsgTask.java:259)
        at org.glassfish.openesb.pojose.jbi.thread.InMsgTask.run(InMsgTask.java:141)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
        at org.glassfish.openesb.pojose.jbi.thread.TaskThread.run(TaskThread.java:84)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?