我到处搜索了一个如何在Jersey 2.0中使用HK2依赖注入的基本示例,但是已经缩短了。
从this question开始,您需要创建一个扩展AbstractBinder
的类。但是,该示例的其余部分显示了如何通过编辑web.xml文件向应用程序注册绑定器。但是,我想避免这种情况,而是希望直接在我的HttpServer
实例中注册活页夹。
这是我为HttpServer写的:
int port = config.getInt("port", 8080);
boolean useFake = config.getBoolean("fake", false);
final URI baseUri = URI.create("http://" + "localhost" + ":" + port + "/");
List<Binder> binders = Arrays.asList((Binder)new StatusModule(useFake),
(Binder)new NetworkModule(useFake));
final ApplicationHandler applicationHandler = new ApplicationHandler();
applicationHandler.registerAdditionalBinders(binders);
WebappContext webappContext = new WebappContext("Webapp context", "/resources");
HttpServer server = GrizzlyHttpServerFactory.createHttpServer(
baseUri, applicationHandler);
for(NetworkListener listener : server.getListeners()){
listener.setCompression("on");
}
server.getServerConfiguration().addHttpHandler(
new StaticHttpHandler("/jersey2app/www"), "/static");
非常感谢任何帮助。
答案 0 :(得分:4)
原来我只需要添加几行代码,但我会在这里发布,以防其他人遇到同样的问题。
ResourceConfig rc = new ResourceConfig();
rc.packages("com.danny.resources");
rc.registerInstances(new StatusModule(useFake), new NetworkModule(useFake));
GrizzlyHttpContainer resourceConfigContainer = ContainerFactory
.createContainer(GrizzlyHttpContainer.class, rc);
HttpServer server = GrizzlyHttpServerFactory.createHttpServer(baseUri);
server.getServerConfiguration().addHttpHandler(resourceConfigContainer, "/");
ResourceConfig
让你告诉服务器在哪里可以找到你的动态资源,在我的例子中是“com.danny.resources”。它还允许您注册将用于将这些资源注入代码的hk2绑定器。
希望这有助于一路上的人,我希望hk2 / Jersey 2.0推出更多例子!