我到处搜索了如何在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");


任何帮助将不胜感激。

最佳答案

原来,我只需要添加几行代码,但是如果有人遇到相同的问题,我将在此处发布。

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能够提供更多示例!

关于java - 如何在Jersey 2.0中使用HK2依赖项注入(inject)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17814517/

10-11 19:19