我正在尝试将消息发送到wildfly中的默认队列,当我调用“sendMessage()”时,JMSContext给了我一个空指针异常。我能解决什么?
public class SendMsg {
@Resource(lookup = "java:/ConnectionFactory")
ConnectionFactory connectionFactory;
JMSContext context=connectionFactory.createContext();
@Resource(mappedName="java:/jms/queue/test")
Queue queue;
public void sendMessage(String message) {
System.out.println("fancy beans");
context.createProducer().send(queue, message);
}
}
答案 0 :(得分:0)
我偶然发现了同样的错误(在我的情况下,我试图将JMSContext注入到Servlet中)。
这是一个丢失的beans.xml
文件。就我而言,它属于war文件的WEB-INF文件夹。显然Weld子系统只有在存在时才会启动:https://docs.jboss.org/author/display/WFLY8/Developer+Guide#DeveloperGuide-Whicharetheimplicitmoduledependencies%3F
虽然我怀疑它也是在其他情况下开始的 - 我有一个EJB应用程序,它不需要任何bean.xml
来使用CDI。
答案 1 :(得分:0)
您无法“提前”调用连接工厂。在构建bean时不会注入它。直接注入JMSContext可能更容易。
public class SendMsg {
//@Resource(lookup = "java:/ConnectionFactory")
//ConnectionFactory connectionFactory;
@Inject
JMSContext context; //=connectionFactory.createContext();