gpt4 book ai didi

jms - JavaEE 6 : How to inject JMS Resource in a standalone JMS client?

转载 作者:行者123 更新时间:2023-12-04 04:07:37 26 4
gpt4 key购买 nike

我无法获得 javax.jms.ConnectionFactory注入(inject)我的独立 JMS 客户端。
我得到一个 java.lang.NullPointerExceptionconnectionFactory.createConnection()在下面的代码中。

JmsClient.java

public class JmsClient {

@Resource(mappedName="jms/QueueConnectionFactory")
private static ConnectionFactory connectionFactory;

@Resource(mappedName="jms/ShippingRequestQueue")
private static Destination destination;

public static void main(String[] args) {
try {
Connection connection = connectionFactory.createConnection();
connection.start();

Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer producer = session.createProducer(destination);
ObjectMessage message = session.createObjectMessage();

ShippingRequestQueue shippingRequest = new ShippingRequestQueue(1, "107, Old Street");

message.setObject(shippingRequest);
producer.send(message);
session.close();
connection.close();

System.out.println("Shipping request message sent ..");
} catch (Throwable ex) {
ex.printStackTrace();
}
}

}

我在 创建了相应的连接工厂和目标资源。打开 MQ (MoM) 使用 Glassfish 3.1 管理控制台。

有人可以帮我理解我错过了什么吗?

最佳答案

资源注入(inject)仅适用于托管环境,例如 Java EE 应用程序服务器或 Spring 容器。 在独立应用程序中,JNDI 是您唯一的选择 .

一般来说,注释是由一些工具/框架处理的,以及执行你的main()的普通JVM。方法根本不包含此类。我所知道的由 JVM 开箱即用处理的唯一注释是编译时 @Deprecated , @Override@SuppressWarnings .

回复您的评论:我无法访问这本书,所以我只能猜测它们可能描述了运行应用程序客户端组件和。不是 独立的应用程序客户端。不一样——check Glassfish EJB FAQ . ACC 通常部署到应用程序服务器中,可以通过 Java Web Start 或不通过它执行,但以特定于 AS 的方式执行。见 Glassfish example (你没有说你的 EJB 在什么 AS 中执行)。

关于jms - JavaEE 6 : How to inject JMS Resource in a standalone JMS client?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7330500/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com