Java EE – получение исключения InvocationTargetException при вызове удаленного фасада?

Я пытаюсь создать корпоративное приложение, но сталкиваюсь с очень странной ошибкой.

Всякий раз, когда я пытаюсь вызвать фасад корпоративного приложения из любого класса, кроме 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? Когда-то работает, когда-то нет. Пожалуйста, помогите и развейте мое замешательство.


person Varundroid    schedule 06.04.2012    source источник
comment
Стек говорит, что InvoicationTargetException вызвано NPE, вы должны начать оттуда.   -  person perissf    schedule 06.04.2012


Ответы (1)


Согласно этому обсуждению stackoverflow и упомянутой спецификации EJB, static внедрение разрешено только в основной класс приложения. Таким образом, внедрение работает для вашего класса TellerMachine, но не для вызываемого экземпляра TestClass из метода TellerMachine main.

person kraftan    schedule 07.04.2012