簡體   English   中英

您如何在Jersey 2.0中使用HK2依賴項注入?

[英]How do you use HK2 dependency injection with Jersey 2.0?

我到處搜索了有關如何在Jersey 2.0中使用HK2依賴項注入的基本示例,但沒有簡短介紹。

這個問題看來,您需要創建一個擴展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能夠提供更多示例!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM