Glassfish @inject不适用于无状态EJB

Glassfish @inject不适用于无状态EJB,glassfish,ejb,java-ee-7,Glassfish,Ejb,Java Ee 7,嗨,我有一个非常简单的例子。我在javaee 7中创建了一个资源,如下所示: @Path("greetings") public class GreetingsResource { @Inject Sample s; @GET public JsonObject greetings(){ return Json.createObjectBuilder().add("first","1") .add("second

嗨,我有一个非常简单的例子。我在javaee 7中创建了一个资源,如下所示:

@Path("greetings")
public class GreetingsResource {

    @Inject
    Sample s;

    @GET
    public JsonObject greetings(){
        return Json.createObjectBuilder().add("first","1")
                .add("second","2")
                .add("third","3")
                .add("fourth","4")
                .add("helloworld", s.helloWorld())
                .build();
    }
}
示例是以下简单EJB:

@Stateless
public class Sample {
    public String helloWorld(){
        return "Hello World";
    }
}
最后,资源应用程序类:

@ApplicationPath("resources")
public class RestConfiguration extends Application {

}
我可以访问URL:“localhost:8081/jasonandjaxrs/resources/greetings”

问题在于@Inject给出了以下错误:

1. org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at Injectee(requiredType=sample,parent=GreetingsResource,qualifiers={}),position=-1,optional=false
但是@EJB似乎起作用了。我试图理解为什么@Inject不起作用?谢谢。

您不能在此设置中使用CDI(意思是
@Inject
)。CDI仅适用于由容器管理的bean,而JAX-RS资源类(您的
GreetingsResource
)则不适用

JAX-RS 2.0不支持将EJB注入JAX-RS组件 (提供者、资源)

如果在您的案例中使用
@Inject
,则注入由HK2依赖注入框架提供,该框架不知道正常的CDIBean。如果您使用
@EJB
,它甚至不应该工作,我不知道它为什么工作,也许这与JavaEE7有关

由于它适用于您,在这里使用
@EJB
应该没有问题,但是在我对的响应中也有一些替代方法

另请参见:

您不能在此设置中使用CDI(意思是
@Inject
)。CDI仅适用于由容器管理的bean,而JAX-RS资源类(您的
GreetingsResource
)则不适用

JAX-RS 2.0不支持将EJB注入JAX-RS组件 (提供者、资源)

如果在您的案例中使用
@Inject
,则注入由HK2依赖注入框架提供,该框架不知道正常的CDIBean。如果您使用
@EJB
,它甚至不应该工作,我不知道它为什么工作,也许这与JavaEE7有关

由于它适用于您,在这里使用
@EJB
应该没有问题,但是在我对的响应中也有一些替代方法

另请参见:


谢谢@unwichtich。我将无状态添加到资源中,这首先给了我一个错误“不能支持JAX-RSEJB集成”。它在重新启动服务器后工作。我只是在尝试不同的事情。有关于JavaEE中不同注释的好教程吗?谢谢。主要是关于所有注释的技术参考文档,但我认为这是一个很好的示例列表:谢谢@unwichtich。我将无状态添加到资源中,这首先给了我一个错误“不能支持JAX-RSEJB集成”。它在重新启动服务器后工作。我只是在尝试不同的事情。有关于JavaEE中不同注释的好教程吗?谢谢。主要是关于所有注释的技术参考文档,但我认为这是一个很好的示例列表: