EJB注入时的空指针异常 [英] Null pointer exception while EJB injection

查看:178
本文介绍了EJB注入时的空指针异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我写了一个非常简单的Web应用程序与一个无状态的Ejb,有趣的时刻到来时,我实现接口 - ejb依赖注入不起作用:



web。 xml

 <?xml version =1.0?> 
< web-app xmlns =http://java.sun.com/xml/ns/javaee
xmlns:xsi =http://www.w3.org/2001/XMLSchema -instance
xsi:schemaLocation =http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd
version =3.0>
< display-name>原型创建的Web应用< / display-name>
< servlet>
< servlet-name> simpleController< / servlet-name>
< servlet-class> com.SimpleController< / servlet-class>
< / servlet>
< servlet-mapping>
< servlet-name> simpleController< / servlet-name>
< url-pattern> *。job< / url-pattern>
< / servlet-mapping>
< / web-app>

Servlet类

  package com; 
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class SimpleController extends HttpServlet {

@EJB
private SimpleBean bean;

@Override
protected void doPost(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException {
resp.getWriter()。println(bean.getSomeString());
}

@Override
protected void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException {
doPost(req,resp);
}
}

bean

  package com; 

import javax.ejb.Stateless;

@Stateless
public class SimpleBean / * implements Simple * / {
public String getSomeString(){
returnaxaxaxa!
}
}

界面

  package com; 

import javax.ejb.Remote;

// @ Local
@Remote
public interface Simple {
String getSomeString();
}

所以当我不注意实现简单时,我得到NullPointerException(使用@Remote或@Local注释在界面),另外一种情况我得到axaxaxa!。为什么会发生我读了Ejb类必须实现内容。



我使用Tommeecas应用服务器。

解决方案

通过更改bean变量类型(接口类型而不是类类型)解决问题



使用NullPointerException

  private SimpleBean bean; 

工作版

  private Simple bean; 


I wrote very simple web application with one stateless Ejb, the interesting moment comes when I implement interface - ejb dependency injection does not work:

web.xml

<?xml version="1.0" ?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">
  <display-name>Archetype Created Web Application</display-name>
    <servlet>
        <servlet-name>simpleController</servlet-name>
        <servlet-class>com.SimpleController</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>simpleController</servlet-name>
        <url-pattern>*.job</url-pattern>
    </servlet-mapping>
</web-app>

Servlet class

package com;
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class SimpleController extends HttpServlet {

    @EJB
    private SimpleBean bean;

    @Override
    protected void doPost (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().println(bean.getSomeString());
    }

    @Override
    protected void doGet (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }
}

bean

package com;

import javax.ejb.Stateless;

@Stateless
public class SimpleBean /*implements Simple*/ {
    public String getSomeString(){
        return "axaxaxa!";
    }
}

inteface

package com;

import javax.ejb.Remote;

//@Local
@Remote
public interface Simple {
    String getSomeString();
}

So when I uncoment "implements Simple" I got NullPointerException (with @Remote or @Local annotation in interface), another case I get "axaxaxa!". Why it happens? I read the Ejb class must implement intefaces.

I use TommEEcas Application Server.

解决方案

Problem solves by changing bean variable type (to interface type instead of class type)

Version with NullPointerException

private SimpleBean bean;

Working version

private Simple bean;

这篇关于EJB注入时的空指针异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆