Rest JavaSE中的Weld(CDI)和Jersey服务器(JAX-RS)引导
我试图找出如何正确引导Weld(3.0.0)和Jersey服务器(1.19.3)一起使用JavaSE建立Rest服务器。我不是!谈论JEE解决方案。应用服务器在这里做得很好。 我希望它没有我不需要的所有LIB的独立。 我的问题是jersey服务器以自己的方式实例化所有REST服务类,而不是使用weld。因此@Inject当然不起作用。Rest JavaSE中的Weld(CDI)和Jersey服务器(JAX-RS)引导,rest,jersey,cdi,bootstrapping,weld,Rest,Jersey,Cdi,Bootstrapping,Weld,我试图找出如何正确引导Weld(3.0.0)和Jersey服务器(1.19.3)一起使用JavaSE建立Rest服务器。我不是!谈论JEE解决方案。应用服务器在这里做得很好。 我希望它没有我不需要的所有LIB的独立。 我的问题是jersey服务器以自己的方式实例化所有REST服务类,而不是使用weld。因此@Inject当然不起作用。 IOCInstantatedComponentProvider在这里有帮助吗?这是Hammock提供的功能,但是如果您只想利用代码,这很好。这就是开源的美妙之处-
IOCInstantatedComponentProvider在这里有帮助吗?这是Hammock提供的功能,但是如果您只想利用代码,这很好。这就是开源的美妙之处- 具体地说,您需要实例化
JerseyServlet
,并提供一个名为jersey.config.servlet.internal.resourceConfig\u JerseyServlet
的ServletContextAttribute
,指向Application
对象的resourceConfig
对象,或者所有类都在其中注册。我们用刮刀刮这些课。我会说我使用的是Jersey 2而不是Jersey 1,我怀疑Jersey 1(它是为CDI 1.0设计的)是否适用。注意,您仍然需要一个servlet容器
如果您想利用吊床,只需将这些依赖项添加到您的项目中(我在下面使用Jetty,但您也可以使用嵌入式tomcat或undertow):
吊床
休闲服
吊床
bootstrap-3
吊床
网状码头
然后您只需提供一些带注释的rest资源和一个
beans.xml
谢谢您的回答,但我希望占用的“空间”更小。您自己也说过:仍然需要一个servlet容器。所以我在寻找“更小”的东西。提到old jersey 1.X无法处理CDI2也很有帮助。呃,我想你可能误读了。除非您希望使用grizzly,这正是我所描述的(嵌入式tomcat、jetty、undertow都只是嵌入式JAR,您仍然需要一些东西来处理实际的HTTP请求,而jersey没有这样做)嗨,我的错。。。你是对的。通过使用“jersey server”,我认为它将通过调用HtpServer=HttpServerFactory.create(getURI())自动附带一个最小的Http服务器。检查导入和一些交付的类http服务器是jdk中捆绑的服务器。因为它在sun.com.net.xxx的深处,所以不应该使用它=>我一定会试试吊床。塔克斯
<dependency>
<groupId>ws.ament.hammock</groupId>
<artifactId>rest-jersey</artifactId>
</dependency>
<dependency>
<groupId>ws.ament.hammock</groupId>
<artifactId>bootstrap-weld3</artifactId>
</dependency>
<dependency>
<groupId>ws.ament.hammock</groupId>
<artifactId>web-jetty</artifactId>
</dependency>