我试图找出如何正确地将Weld(3.0.0)与Jersey-Server(1.19.3)一起引导以与Java SE建立Rest服务器。我不是!谈论JEE解决方案。应用程序服务器在这里做得很好。 我想让它独立,没有我不需要的所有库。 我的问题是,泽西服务器以他自己的方式实例化所有REST服务类而不使用焊接。因此@Inject当然不起作用。 IoCInstantiatedComponentProvider在这里有帮助吗?
答案 0 :(得分:1)
这是Hammock提供的东西,但是如果你只想利用那些没问题的代码。这就是开源之美 - https://github.com/hammock-project/hammock/tree/master/rest-jersey/src/main/java/ws/ament/hammock/rest/jersey
具体而言,您需要实例化JerseyServlet
并提供名称为ServletContextAttribute
的{{1}},其中指向jersey.config.servlet.internal.resourceConfig_JerseyServlet
对象,该对象指向您的ResourceConfig
Application
对象,或者在其中注册所有类。我们使用CDI extension来抓取这些类。我会说我使用泽西2而不是泽西1,我怀疑这将适用于泽西1(这是为CDI 1.0制作)。请注意,您还需要一个servlet容器。
如果您想利用Hammock,只需将这些依赖项添加到您的项目中(我在下面使用Jetty,但您也可以使用嵌入式tomcat或下载):
<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>
然后你只需提供一些带注释的休息资源和一个beans.xml