gpt4 book ai didi

java - 从线程调用 session bean 时出现 NullPointerException

转载 作者:行者123 更新时间:2023-12-02 06:29:49 24 4
gpt4 key购买 nike

我的简单锻炼计划有一些问题。我想从线程调用 session bean,但它变成 NullPointer 异常!但如果我从主线程调用它,它可以正常运行

这是警告和异常

Warning: C:\Documents andSettings\User\MyDocuments\NetBeansProjects\ThreadCounter\dist\gfdeploy\ThreadCounter does not exist.
Exception in thread "Thread-2" java.lang.NullPointerException
at threadcounter.Main.run(Main.java:14)
at java.lang.Thread.run(Thread.java:744)

这是调用远程 session bean的可运行类

package threadcounter;

import javax.ejb.EJB;
import mysessionbean.CounterSessionBeanRemote;

public class Main implements Runnable {
@EJB
private static CounterSessionBeanRemote counterSessionBean;

@Override
public void run() {
System.out.println("counter : "+counterSessionBean.getCounter()); //NullPointer
}
}

这是我的主要功能

package threadcounter;

public class Ya {

public static void main(String[] args){
Main t1 = new Main();
new Thread(t1).start();
}

}

这是 session bean

package mysessionbean;

import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.Stateless;

@Stateless
public class CounterSessionBean implements CounterSessionBeanRemote {
private int counter = 0;

@Override
public int getCounter() {
int temp = counter;
temp++;
Random r = new Random();
try {
Thread.sleep(r.nextInt(20));
} catch (InterruptedException ex) {
Logger.getLogger(CounterSessionBean.class.getName()).log(Level.SEVERE, null, ex);
}
counter = temp;
return counter;
}


}

最佳答案

您不能在这样的非容器托管类中注入(inject)带有 @EJB 的 EJB

@EJB
private static CounterSessionBeanRemote counterSessionBean;

您的类应该是一个能够使其工作的容器。否则你可以使用 jndi 查找来完成

Context jndiContext = new InitialContext();
CounterSessionBeanRemote bean = (CounterSessionBeanRemote ) jndiContext.lookup("....");

另一件事是:为什么要使用 @EJB 注释,然后在构造函数中赋值?这样做没有任何意义。

您可能至少想通读一下这篇http://docs.oracle.com/javaee/6/tutorial/doc/gipjf.html#girfl让你简单的练习做好。

关于java - 从线程调用 session bean 时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20166571/

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