【发布时间】:2014-04-09 17:18:55
【问题描述】:
我正在尝试运行这个简单而小型的应用程序,但我不明白问题出在哪里以及如何解决它。
这里是代码。这很简单。客户端应用程序调用的一个 bean,以便在客户端打印出众所周知的消息 Hello World。我使用 Intellij Idea 13.0.3 IDE 和 Server GlassFish 4.0.0、Java JDK 8.0 和 Java EE 7 创建了应用程序。
编辑
我认为我收到这些错误是因为我没有正确部署我的应用程序。我找到了一个指南,说在 netbeans 环境中创建客户端应用程序后,您必须执行插入代码 -> 调用 Enterprise Bean。现在我怎样才能在 Intellij Idea 上做同样的事情?
package myejb;
import javax.ejb.Remote;
@Remote
public interface HelloBeanRemote
{
public String sayHello(String name);
}
package myejb;
import javax.ejb.Stateless;
@Stateless
public class HelloBean implements HelloBeanRemote
{
@Override
public String sayHello(String name)
{
return "Hello, " + name + "!";
}
}
和客户端应用程序
package myejbclient;
import javax.ejb.EJB;
import myejb.HelloBeanRemote;
public class HelloClient
{
@EJB
private static HelloBeanRemote helloBean;
public static void main(String[] args)
{
HelloClient client = new HelloClient();
client.doConversation();
}
public void doConversation()
{
System.out.println(helloBean.sayHello("World"));
}
}
我执行 glassfish 来部署应用程序。它已正确部署,但是当我运行客户端应用程序时,我收到以下错误消息:
Exception in thread "main" java.lang.NullPointerException
at myejbclient.HelloClient.doConversation(HelloClient.java:27)
at myejbclient.HelloClient.main(HelloClient.java:22)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
EDIT2
在安装了 GlassFish 的 Netbeans IDE 中,相同的代码就像一个魅力。
Netbeans IDE
【问题讨论】:
-
如果您要否决其他答案,您需要解释为什么其他答案不够好。 @arTsmarT 是正确的,你没有为你分配任何东西,你甚至没有 27 行代码(关于错误回溯),所以我猜你没有显示你的整个代码。
-
你在这里看到的所有代码都相信我。我第二次重复,当您使用 Java EE 时,您没有实例化任何东西。这是证明netbeans.org/kb/docs/javaee/entappclient.html的指南
-
如果我按照该指南在 Netbeans 中运行和部署此代码,一切正常,但是当我在 IntelliJ Idea 上执行时它不起作用。可见是IDE的问题
-
以上截图证明代码在Netbeans上运行。我想在 Intellij Idea 中运行相同的代码。我能怎么做?如果您没有任何从事 Intellij Idea 工作的经验,我认为您无法帮助我
-
从容器外运行的客户端应用程序访问 EJB 并不容易。你需要一个ACC。有关更多信息,请参阅此答案:stackoverflow.com/a/15488335/870122。此外,您需要熟悉如何在 IDE 中运行 jar。
标签: jakarta-ee intellij-idea javabeans glassfish-4