Eclipse 为什么我的@EJB没有被注入到我的web服务中?

Eclipse 为什么我的@EJB没有被注入到我的web服务中?,eclipse,ejb,websphere,jax-rs,Eclipse,Ejb,Websphere,Jax Rs,我在IBMRAD(又名Eclipse3.4)和WebSphere7.0中有一个基本的EJB3.0(JavaEE5)项目 我创建了一个EAR项目、一个EJB项目(用于EJB)、一个JPA项目(用于域对象)和一个动态Web项目(用于我的JAX-RSWeb服务) EJB项目包含如下所示的EJB: @Stateless public TestBean implements TestBeanLocal { /* ... */ @Local public TestBeanLocal { /* ... *

我在IBMRAD(又名Eclipse3.4)和WebSphere7.0中有一个基本的EJB3.0(JavaEE5)项目

我创建了一个EAR项目、一个EJB项目(用于EJB)、一个JPA项目(用于域对象)和一个动态Web项目(用于我的JAX-RSWeb服务)

EJB项目包含如下所示的EJB:

@Stateless
public TestBean implements TestBeanLocal { 
/* ... */

@Local
public TestBeanLocal {
/* ... */
Web项目包含一个JAX-RS Web服务,如下所示:

@Path(value="/mywebservice")
public MyWebService implements Application {
  @EJB
  private TestBeanLocal myBean;

  @GET
  @Produces({"text/plain"})
  public String getList() {
    return myBean.getList();
    /* ... */
我的问题是MyWebService中的“myBean”属性从未被注入。它总是空的

你知道我错过了什么吗

谢谢,
Rob

在做了大量的工作之后,我创建了一个全新的项目(下面的类名略有不同)。。。我在WebSphere的启动日志中注意到EJB具有JNDI名称,因此我尝试在web服务的构造函数中通过JNDI查找EJB

String sJNDI = "ejblocal:testEAR/testEJB.jar/TestBean#test.TestBeanLocal";
TestBeanLocal testBeanLocal = (TestBeanLocal) new InitialContext().lookup(sJNDI);
。。。这起作用了

我现在的问题是,我真的必须这样做才能看到我的豆子吗?还是我错过了什么?在另一个使用JavaEE6版本GlassFish的项目中,我所要做的就是把它放在@EJB中,这很好。这在JavaEE5/WebSphere7中根本不起作用吗?或者这可能是IBMRAD7(又称Eclipse3.4)的一个限制

谢谢,
Rob

JavaEE容器将只对其管理的组件执行@EJB注入。对于JavaEE5,这将包括servlet、Web服务和EJB。在您的例子中,组件是由Wink管理的,所以问题是Wink是否应该解释@EJB(我想不是)。Java EE 6注入之所以有效,是因为JAX-RS是该Java EE版本的一部分,组件由容器管理,而不是由第三方框架管理。

WebSphere 7.0不提供现成的JAX-RS支持。您使用什么框架(或WebSphere功能包)作为JAX-RS实现?我使用的是ApacheWink 1.0,这是他们在IBM RAD帮助文档中的JAX-RS教程中使用的。