将EJB注入JAX-RS(RESTful服务)

将EJB注入JAX-RS(RESTful服务)

我在试着注射无状态EJB通过注释进入我的JAX-RS Web服务。不幸的是,EJB只是null我得到了一个NullPointerException当我试着用它的时候。

@Path("book")public class BookResource {

    @EJB
    private BookEJB bookEJB;

    public BookResource() {
    }

    @GET
    @Produces("application/xml")
    @Path("/{bookId}")
    public Book getBookById(@PathParam("bookId") Integer id)
    {
        return bookEJB.findById(id);
    }}

我做错什么了?

以下是有关我的机器的一些信息:

  • 玻璃鱼3.1
  • NetBeans 6.9 RC 2
  • JavaEE 6

你们能给我举几个例子吗?


30秒到达战场
浏览 488回答 3
3回答

慕婉清6462132

您将能够在JAX-RS资源中进行注入,而无需使其成为EJB或CDI组件。但是你必须记住,你的JAX-RS资源不能是单一的。因此,您使用以下代码设置应用程序。这使得图书资源班级,等级按要求Jax-RS资源。@javax.ws.rs.ApplicationPath("application")public&nbsp;class&nbsp;InjectionApplication&nbsp;extends&nbsp;javax.ws.rs.core.Application&nbsp;{ &nbsp;&nbsp;private&nbsp;Set<Object>&nbsp;singletons&nbsp;=&nbsp;new&nbsp;HashSet<Object>(); &nbsp;&nbsp;private&nbsp;Set<Class<?>>&nbsp;classes&nbsp;=&nbsp;new&nbsp;HashSet<Class<?>>(); &nbsp;&nbsp;public&nbsp;InjectionApplication()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;no&nbsp;instance&nbsp;is&nbsp;created,&nbsp;just&nbsp;class&nbsp;is&nbsp;listed &nbsp;&nbsp;&nbsp;&nbsp;classes.add(BookResource.class); &nbsp;&nbsp;} &nbsp;&nbsp;@Override &nbsp;&nbsp;public&nbsp;Set<Class<?>>&nbsp;getClasses()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;classes; &nbsp;&nbsp;} &nbsp;&nbsp;@Override &nbsp;&nbsp;public&nbsp;Set<Object>&nbsp;getSingletons()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;singletons; &nbsp;&nbsp;}}通过这个设置,您可以让jax-rs实例化。图书资源为您在每个请求的基础上,也注入所有所需的依赖关系。如果你图书资源班级,等级辛格尔顿Jax-RS资源,这是,你输入getSingletonspublic&nbsp;Set<Object>&nbsp;getSingletons()&nbsp;{ &nbsp;&nbsp;singletons.add(new&nbsp;BookResource()); &nbsp;&nbsp;return&nbsp;singletons;}然后,您创建了不是由JAX-RS运行时管理的实例,容器中没有人关心注入任何内容。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java