0

エンタープライズ アプリケーションを作成しようとしていますが、非常に奇妙なエラーに直面しています。

Main 以外のクラスからエンタープライズ アプリケーションのファサードを呼び出そうとすると、InvocationTargetException が発生します。

これが私のコードです: -

public class TellerMachine {
    @EJB
    private static BillerFacadeRemote billerFacade;

    @EJB
    private static AccountFacadeRemote accountFacade;
    @EJB
    private static CustomerFacadeRemote customerFacade;
    @EJB
    private static BanktellerFacadeRemote banktellerFacade;

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        TellerMachine tm = new TellerMachine();
        Scanner s = new Scanner(System.in);
        String sssa = billerFacade.hiHAHAHAHA();
        System.out.println(sssa);
        tm.printABC();
        TestClass t = new TestClass();
        t.abc();
    }

    public void printABC()
    {
        String sssa = billerFacade.hiHAHAHAHA();
        System.out.println(sssa);  
    }
}

テストクラス: -

public class TestClass 
{
@EJB
private static BillerFacadeRemote billerFacade;
public static void main(String[] args)
{

}
public void abc()
{
    try{
    String a = billerFacade.hiHAHAHAHA();
    System.out.println(a);}
    catch(Exception e)
    {
        System.out.println(e.getCause().toString());
    }
}

}

BillerFacade のメソッド: -

@Override
public String hiHAHAHAHA() {
    return "abc";
}

スタックトレース: -

Warning: /Users/varunbatra/Desktop/RealApp/SwinBankTellerMachine/dist/gfdeploy/SwinBankTellerMachine does not exist.
abc
abc
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.glassfish.appclient.client.acc.AppClientContainer.launch(AppClientContainer.java:438)
    at org.glassfish.appclient.client.AppClientFacade.main(AppClientFacade.java:165)
Caused by: java.lang.NullPointerException
    at swinbanktellermachine.TestClass.abc(TestClass.java:29)
    at swinbanktellermachine.TellerMachine.main(TellerMachine.java:52)
    ... 6 more
Java Result: 1

どうしてそうなの?そして、メインクラスからリモートメソッドを呼び出している場合でも、この例外が発生します。Netbeans の何が問題なのですか? うまくいくときとうまくいかないときがあります。助けて、私の混乱を解消してください。

4

1 に答える 1

0

このスタックオーバーフローの議論と参照されている EJB 仕様によると、staticインジェクションはアプリケーションのメイン クラスでのみ許可されています。したがって、インジェクションはTellerMachineクラスに対して機能しますが、メソッドTestClass内から呼び出されたインスタンスに対しては機能しません。TellerMachine main

于 2012-04-07T13:22:20.953 に答える