【问题标题】:Java EE - Getting InvocationTargetException while calling Remote Facade?Java EE - 在调用远程外观时获取 InvocationTargetException?
【发布时间】:2012-04-19 19:41:06
【问题描述】:

我正在尝试制作一个企业应用程序,但遇到了一个非常奇怪的错误。

每当我尝试从除 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

为什么会这样?有时即使我从我的 Main 类调用远程方法,它仍然给我这个异常。 Netbeans 怎么了?有时它起作用有时它不起作用。请帮助并消除我的困惑。

【问题讨论】:

  • 堆栈说 InvoicationTargetException 是由 NPE 引起的,你必须从那里开始。

标签: jakarta-ee netbeans methods remote-access facade


【解决方案1】:

根据this stackoverflow discussion 和引用的EJB 规范,static 注入只允许在应用程序主类中。因此,注入适用于您的 TellerMachine 类,但不适用于 TellerMachine main 方法中调用的 TestClass 实例。

【讨论】:

    猜你喜欢
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 2012-05-23
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多