簡単な運動プログラムに問題があります。スレッドから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)
これは、リモート セッション 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();
}
}
これがセッションビーンです
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;
}
}