java - 在 JBOSS 5.0.1 中访问 ServicePOJO 时出错

标签 java jboss jakarta-ee ejb-3.0

我有一个带有 EJB 和 ServicePOJO 的 Web 应用程序。当我尝试访问其中一个 POJOS 时,出现以下错误:

java.lang.NullPointerException
 at com.sonydadc.MyAPP.pa.server.PA_Bean.getServername(PA_Bean.java:539)
 at org.apache.jsp.templates.start_jsp._jspService(start_jsp.java:104)
 at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
 at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:322)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:249)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:638)
 at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:543)
 at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:480)
 at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968)
 at org.apache.jsp.login.login_jsp._jspService(login_jsp.java:101)
 at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
 at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:322)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:249)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:638)
 at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:444)
 at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:382)
 at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:310)
 at org.apache.catalina.authenticator.FormAuthenticator.forwardToLoginPage(FormAuthenticator.java:316)
 at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:244)
 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:491)
 at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
 at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
 at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
 at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)
 at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
 at java.lang.Thread.run(Thread.java:619)

我的系统:Jboss 5.0.1 EJB 3.0 MyFaces 1.1

有人可以提供一些信息吗?

更新:代码如下:这就是我注入(inject) POJO 对象的方式

@EJB(mappedName = "service/ServPOJOBean") 
@IgnoreDependency 
private ServPOJOBean mb; 

这是导致空指针异常的行:

mb.getValue("servername");

奇怪的是:当我像这样查找 ServicePOJO 时它就起作用了:

MBeanServer server = MBeanServerLocator.locate(); 
ServPOJOBean mb = (ServPOJOBean) MBeanProxyExt.
                             create(ServPOJOBean.class, "jboss:service=ServPOJOBean");

更新

这就是我定义 ServicePoJO 类的方式:

@Service(objectName = "jboss:service=ServPOJOBean")
@Management(ServPOJOBean.class)
@Local(ServPOJOBean.class)
@LocalBinding(jndiBinding = "service/ServPOJOBean")
public class ServPOJOBeanImpl implements ServPOJOBean
{
    ...
}

最佳答案

问题是你的Service POJOS的注入(inject)使用 @EJB 注释当前失败,因此出现 NullPointerException。老实说,我什至不知道这是可能的 - 根据下面的链接,它似乎是一个“扩展的”EJB 3,所以它应该是 - 但如果是,请仔细检查远程接口(interface)的 JNDI 名称。也许还可以显示您的 Service POJO 的代码。

引用文献

关于java - 在 JBOSS 5.0.1 中访问 ServicePOJO 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3626778/

相关文章:

java - 在平板电脑上滚动列表后意外重用了选定的列表项背景颜色

java - 当配置影响方法结果时进行适当的测试?

java - 我需要将 JBoss 工具添加到我的 Eclipse,但我使用的是 springtoolsuite (STS)

java - JBPM 4.4 与 JBPM 6.2

java - 除了 JSF/JSP for Java EE 之外,还有其他强集成的表示层工具吗?

java - 使用 Android 字符串更改操作栏标题

java - Checkstyle-IDEA IntelliJ 插件在应该显示问题时却没有显示问题

linux - 设置 JBOSS EAP 6 的多个实例

java - WebSphere 自定义密码加密

文件上传到服务器的安全漏洞 - java ee - tomcat