0

ステートレス EJB をアプリケーション クライアント プロジェクトに挿入しようとすると、いくつかの問題が発生します。App Client と EJB の両方が同じ EAR にあります。JNDI を使用すると、EJB のインスタンスを取得できますが、@EJB アノテーションを使用してそれを行う方法がわかりません。@EJB(name="something")、@EJB(mappedName="something") を使用してみましたが、取得できるのは null だけです。これが私のコードです:

@Remote
public interface TimerEjbTestService {
    public void testMethod();
}

@Stateless(mappedName="TimerEjbTestService")
public class TimerEjbTestBean implements TimerEjbTestService{

    public void testMethod() {
        System.out.println("Inside EJB.");
    }
}

JNDI を使用すると、次のようにインスタンスを取得できます。

Context ctx = new InitialContext();
TimerEjbTestService timerEjbTestService = (TimerEjbTestService) ctx.lookup("TimerEjbTestService#myejb.timerejbtestservice.services.TimerEjbTestService");

どうすればこれを行うことができますか?

4

1 に答える 1

1

あなたはこのようなことをすることができます:

@EJB
private TimerEjbTestService myBean;

このようにして、コンテナはBeanを注入します。

また、それは同じ耳にあるので(したがって、同じJVMによって実行される)、インターフェースの注釈はであってはなり@Localません@Remote

于 2012-09-19T14:22:45.977 に答える