Jakarta ee 为什么Weblogic容器不能注入事件对象?

Jakarta ee 为什么Weblogic容器不能注入事件对象?,jakarta-ee,dependency-injection,weblogic,cdi,jsr356,Jakarta Ee,Dependency Injection,Weblogic,Cdi,Jsr356,首先,我想告诉大家,这个问题更多的是关于CDI,尤其是CDI事件。容器(在我的例子中,Weblogic 12无法注入事件对象) 问题的动机: 我正在尝试将JMS与WebSocket集成。基本上,我尝试使用来自JMS的消息,然后引发一个事件,以便服务器端点可以接收JMS消息,并最终通过WebSocket协议将其发送到浏览器。我从中得到了在JMS和WebSocket之间集成的想法请注意,我没有将CDI用于任何其他目的。。但当我尝试启动注入事件时,我面临着NPE 我的理解是,要使用CDI,我需要定义b

首先,我想告诉大家,这个问题更多的是关于CDI,尤其是CDI事件。容器(在我的例子中,Weblogic 12无法注入
事件
对象)

问题的动机:

我正在尝试将JMS与WebSocket集成。基本上,我尝试使用来自JMS的消息,然后引发一个事件,以便服务器端点可以接收JMS消息,并最终通过WebSocket协议将其发送到浏览器。我从中得到了在JMS和WebSocket之间集成的想法请注意,我没有将CDI用于任何其他目的。。但当我尝试启动注入事件时,我面临着NPE

我的理解是,要使用
CDI
,我需要定义
beans.xml
,即使几乎是空的

我的
beans.xml
(我已经将这个放在我的WEB应用程序的
WEB-INF
目录中,并粘贴了以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="
  http://java.sun.com/xml/ns/javaee
  http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>
事件
限定符
的定义如下:

/**
 * Identifies WebSocket JMS messages.
 */
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE})

public @interface WSJMSMessage {
}
事件的使用者是
ServerEndpoint
类上的方法
onJMSMessage
,相关部分粘贴在下面:

@ServerEndpoint(value = "/{projectName}/{businessViewName}/wsdata",
                encoders = {WSJsonEncoder.class},
                decoders = {WSJsonDecoder.class})
public class WebSocketActiveDataHandler {

    // Other Lifecycle methods omitted for brevity

    public void onJMSMessage(@Observes @WSJMSMessage DataChangeEvent dataChangeEvent) {
        //Something here
    }
}

我这里缺少什么?任何指针吗?

谁在调用produceEvent()?这背后的问题是“确保您获得了一个EventProducer实例,该实例被@Injected到了produceEvent()的调用者中”。@frank
produceEvent()
是从“如何获取EventProducer的引用”调用的?可能会发布客户机代码的相关部分。。。
@ServerEndpoint(value = "/{projectName}/{businessViewName}/wsdata",
                encoders = {WSJsonEncoder.class},
                decoders = {WSJsonDecoder.class})
public class WebSocketActiveDataHandler {

    // Other Lifecycle methods omitted for brevity

    public void onJMSMessage(@Observes @WSJMSMessage DataChangeEvent dataChangeEvent) {
        //Something here
    }
}