RESTful服务中的注释(@ EJB,@ Resource,...)

时间:2010-03-19 15:41:48

标签: java rest java-ee ejb-3.0

我正在尝试通过Annotations在我的RESTful服务(RESTEasy)中注入EJB。

  

公共类MyServelet实现了MyServeletInterface {

     

...

     

@EJB

     

MyBean mybean;

     

...

     

}

不幸的是没有编译或AS错误,变量“mybean”只是null,当我尝试使用它时,我得到一个NullPointerException。

我做错了什么?

以下是我的架构的一些侧面信息:

  • JBoss 4.2.2.GA
  • Java版本:1.5.0_17
  • 本地MDB项目
  • 远程EJB-Project
  • 使用RESTful服务的WAR项目,它使用远程EJB并将消息发送到本地MDB-Project

提前致谢!

BR 多米尼克

p.s:当我使用普通的上下文查找时,一切正常。

4 个答案:

答案 0 :(得分:1)

我有类似的问题(虽然没有@Remote bean)。它对我有用的方式 - 示例应用程序在这里:https://github.com/kubamarchwicki/rest-app/(这可行:https://github.com/kubamarchwicki/rest-app/blob/master/service-webapp/src/main/webapp/WEB-INF/web.xml#L9

带有上下文查找的破解是名称随着耳朵名称的变化而变化。如果您喜欢版本之类的东西,它会使整个事情难以追踪或迫使您在代码中的某处硬编码耳朵名称。

旧讨论只需几美分; - )

答案 1 :(得分:0)

这不完全是我的强项,所以也许我离开了......但是,你能在WAR中做EJB内容吗?我认为你需要在EAR中进行EJB工作。

答案 2 :(得分:0)

JBoss 4.2.2.GA不是完全兼容的Java EE 5服务器,它不支持在Servlet或应用程序客户机中注入EJB引用,仅支持EJB层。使用JBoss 5(或执行查找)。

答案 3 :(得分:0)

JBoss 4.2.2.GA仅支持Servlet 2.4。 Servlet 2.4上没有DI的支持。因此,对于myBean变量,您总是得到'null'。如建议的那样,请迁移到支持Servlet 2.5的JBoss 5.0,它使用Java 5等注释功能。