0

我正在编写或尝试编写 WebSphere 7 上的 Baby's First MDB。我几乎没有头发了,我已经全力以赴试图让事情正常工作。看来我已经正确设置了所有内容但是当我将消息放入关联的队列时我没有得到任何响应。

这是 EAR 文件设置:

simplemdb.ear
    META-INF
        Manifest.mf
        application.xml
    simplemdb.jar
        META-INF
            Manifest.mf
            ejb-jar.xml
        com
            [ classes go here ]

我找不到在 ejb-jar.xml 中定义队列的 JNDI 名称的任何语法,所以我改为:

  • 定义 WebSphere 激活规范。名称 SimpleMDBActivationSpec,JNDI 名称 jms/SimpleActivationSpec,目标 jms/SimpleMDBQueue。
  • 定义一个 WebSphere 队列。名称 SimpleMDBQueue,JNDI 名称 jms/SimpleMDBQueue,队列名称 SIMPLE.MDB.QUEUE。
  • 定义一个 MQ 队列,命名为 SIMPLE.MDB.QUEUE。
  • 部署 EAR 文件。在部署期间,我被要求输入绑定信息。我选择激活规范,然后将目标资源 JNDI 名称和目标 JNDI 名称分别指向激活规范和队列。

(MDB代码没有注解。)此时,app指向spec和queue,spec指向queue——belt和suspensers。自然地,我想应用程序因此知道队列。满怀希望,我在队列上放了一条消息,然后……什么也没有。onMessage 事件应该使用 System.out 来记录消息。我没有看到任何消息。

这方面的明确文件因缺席而引人注目。谷歌提供了很多结果,但没有一个详细说明配置如何组合在一起。有很多关于 ibm-ejb-jar-bnd.xmi 的建议,但该文件的示例是神秘的,充满了不透明的数字,没有解释它们是如何生成的,或者它们如何与配置的其他部分相关联。

看在上帝的份上。我要做的就是部署一个 MDB,并在我将消息放入队列时让它写“Hello, world”。我使用 vi 和 ant 作为我的开发和构建工具。那里的任何人都可以告诉我我缺少什么吗?

编辑:添加了“zos”标签。

4

2 回答 2

1

我发现了问题。它特定于在 z/OS 上运行的 WebSphere。要使激活规范在该环境中完全可用,必须启动控制区域附件 (CRA) 过程。我告诉 WAS 启动它,回收应用服务器,然后看!我的 MDB 开始响应。

要通过 WebSphere Admin Console 启动 CRA,请转至 ...

  • 应用程序服务器 > [服务器名称] > 通信 > 消息传递 > WebSphere MQ CRA 设置

...并选中“启动 CRA”复选框。点击 OK,将其保存到主配置,并让 CRA 真正启动,关闭并备份应用服务器。(这适用于 WAS 7.0。)

感谢大家的时间和思想空间。

于 2011-06-03T22:16:43.843 回答
0

快速浏览一下,看看这里是否有什么可以帮助您的。

http://publib.boulder.ibm.com/infocenter/ieduasst/v1r1m0/topic/com.ibm.iea.wasfpejb/wasfpejb/6.1/DevelopmentTools/WASv61_EJB3FP_MDBLab.pdf

过去一年我没有玩过这个,所以我无法立即发表评论,但我认为 PDF 可能对你有一些帮助。

高温高压

芒鲁

于 2011-06-02T00:51:08.350 回答