我用的是Jetty 9.1和泽西2.5.1。泽西岛对Jetty的支持是内置的,所以我就这样启动服务器:
public static void main(String[] args) {
URI baseUri = UriBuilder.fromUri("http://localhost/").port(8080).build();
ResourceConfig config = ResourceConfig.forApplicationClass(MyApplication.class);
Server server = JettyHttpContainerFactory.createServer(baseUri, config);
}MyApplication只是调用this.packages(...)来查找REST类。
但是,REST类包含一个带@Inject注释的字段,该字段应该由焊缝注入。显然,焊缝没有启动(CDI支持没有启用),更奇怪的是,看起来HK2 (由泽西2使用)正在尝试执行注入。
(在访问其他端点时,我有一个org.glassfish.hk2.api.UnsatisfiedDependencyException )。
如何正确设置焊接(最好以编程方式)?
发布于 2014-01-09 15:27:39
我用的是焊接SE:
import org.jboss.weld.environment.se.Weld;
import org.jboss.weld.environment.se.WeldContainer;然后简单地
Weld weld = new Weld();
try {
WeldContainer container = weld.initialize();
URI baseUri = UriBuilder.fromUri("http://localhost/").port(8080).build();
ResourceConfig config = ResourceConfig.forApplicationClass(MyApplication.class);
Server server = JettyHttpContainerFactory.createServer(baseUri, config);
server.join();
} catch (Exception e) {
e.printStackTrace();
} finally {
weld.shutdown();
}请注意,HK2将处理REST类,因此我不得不编写一个绑定器来使注入在这些类中工作。This question helped me a lot。
https://stackoverflow.com/questions/20999320
复制相似问题