加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – EJB中资源注入的问题

发布时间:2020-12-15 02:34:14 所属栏目:Java 来源:网络整理
导读:我有使用注释资源获取连接工厂的麻烦. 它适用于JNDI查找,但它没有注释,我的连接工厂为null. 这是我的代码与JNDI查找(工作): ConnectionFactory factory = (ConnectionFactory)context.lookup("/ConnectionFactory"); 这是带有注释的代码: @Resource(mapped
我有使用注释资源获取连接工厂的麻烦.
它适用于JNDI查找,但它没有注释,我的连接工厂为null.

这是我的代码与JNDI查找(工作):

ConnectionFactory factory = (ConnectionFactory)context.lookup("/ConnectionFactory");

这是带有注释的代码:

@Resource(mappedName = "java:/ConnectionFactory")
private ConnectionFactory factory;

我试过使用不同的mappedName:/ ConnectionFactory,java:/ JmsXA,JmsXA等但仍然是nullpointerexception: – /.

如果有人有想法……

谢谢 !

这是我的班级:

@Stateless
public class ModuleCommunicationHandler implements IModuleCommunicationHandler
{

  /** The connection factory. */
  @Resource(mappedName = "java:/ConnectionFactory")
  private ConnectionFactory factory;

...........

/**
* {@inheritDoc}
*/
@Override
public void sendMessage(JMSMessage jmsMessage,int deliveryMode,int acknowledgeMode) throws TechnicalException
{

try
{
  context = new InitialContext();

  factory = (ConnectionFactory)context.lookup("/ConnectionFactory");

  // Setting the destination - Topic or Queue
  destination = (Destination)context.lookup(jmsMessage.getDestination());

  connection = factory.createConnection();
  session = connection.createSession(false,acknowledgeMode);

  sender = session.createProducer(destination);
  connection.start();

  // Creating the message
  message = session.createTextMessage();
  message.setText(jmsMessage.getBodyMessage());

  // Sending the message
  sender.setDeliveryMode(deliveryMode);
  sender.send(message);

.....

这是日志:

15:05:32,609 ERROR [STDERR] com.*.*.*.server.exception.ModuleCommunicationException: java.lang.NullPointerException
15:05:32,609 ERROR [STDERR]     at com.*.*.*.server.service.ModuleCommunicationHandler.sendMessage(ModuleCommunicationHandler.java:147)
15:05:32,664 ERROR [STDERR] Caused by: java.lang.NullPointerException
15:05:32,664 ERROR [STDERR]     at com.*.*.*.server.service.ModuleCommunicationHandler.sendMessage(ModuleCommunicationHandler.java:108)

解决方法

没有看到你所有的代码(对于所讨论的类),很难说,但这里有一些常见的嫌疑:

> @Resource注释实例未指定类型,因此它将默认为字段的类型.如果实际资源是a.b.c.ConnectionFactory,但您的字段是x.y.z.ConnectionFactory,则会出现某种错误.
>您的带注释的类可能未被部署为托管(注入)类.换句话说,如果在部署时不确保将类视为EJB,则不会遵循注入注释.见this post for an example.

发生这种情况时,您的日志中是否没有任何堆栈跟踪?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读