在Wicket网页中使用EJB

在Wicket网页中使用EJB,wicket,ejb-3.0,java-ee-5,Wicket,Ejb 3.0,Java Ee 5,当我在公共HttpServlet中使用@EJB注释通过远程接口访问无状态EJB时,它工作正常: public class ListMsgs extends HttpServlet { @EJB private Msgs msgsRI; ... protected void processRequest(...) ... { List msgs = msgsRI.getAll(); ... } ... } 但是,当我在Wicket网页中尝试相同的事情时

当我在公共HttpServlet中使用@EJB注释通过远程接口访问无状态EJB时,它工作正常:

public class ListMsgs extends HttpServlet
{
  @EJB
  private Msgs msgsRI;
  ...
  protected void processRequest(...) ...
  {
    List msgs = msgsRI.getAll();
    ...
  }
  ...
}
但是,当我在Wicket网页中尝试相同的事情时,我得到了null作为bean的回报:

public class ListM extends WebPage
{
  @EJB
  private Msgs msgsRI;
  ...
  public ListM()
  {
    List msgs = msgsRI.getAll(); // NullPointerException
    ...
  }
  ...
}
此“意外运行时异常”的几行是:

WicketMessage: Can't instantiate page using constructor public testapp.web.ListM()

Root cause:

java.lang.NullPointerException
  at testapp.web.ListM.<init>(ListM.java:22)
  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
  at org.apache.wicket.session.DefaultPageFactory.createPage(DefaultPageFactory.java:192)
  at org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:57)
  at org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:298)
  at org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:320)
  at org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:234)
  at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92)
  at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1250)
  at org.apache.wicket.RequestCycle.step(RequestCycle.java:1329)
  at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1428)
  at org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
  at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:479)
  at org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:138)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
  ....
WicketMessage:无法使用构造函数public testapp.web.ListM()实例化页面
根本原因:
java.lang.NullPointerException
在testapp.web.ListM.(ListM.java:22)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:513)
位于org.apache.wicket.session.DefaultPageFactory.createPage(DefaultPageFactory.java:192)
位于org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:57)
位于org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:298)
位于org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:320)
位于org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:234)
位于org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92)
位于org.apache.wicket.RequestCycle.ProcessEventsAndResponse(RequestCycle.java:1250)
位于org.apache.wicket.RequestCycle.step(RequestCycle.java:1329)
位于org.apache.wicket.RequestCycle.steps(RequestCycle.java:1428)
在org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
位于org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:479)
位于org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:138)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
....
GlassFish v2.1.1服务器上部署了带有bean的ejb模块和带有servlet和wicket网页的web模块(如果这有意义的话)


如何通过wicket网页中的远程接口使用我的企业bean?

可以在这里找到Java EE集成项目:


由于Wicket组件实例化不受DI容器的管理,因此它必须提供代理注入机制。有一个标准的实施方法,以org.apache.wicket.injection.Injector类为基础。

进一步补充前面的答案:由于ejb3风格,最好在第一步声明@Stateless注释中的名称元素,而不是整个第三步。

在您回答之前的几个小时,我发现了这个站点,不过还是谢谢你。