我可以使用以下几行启动 grizzly 并在其上部署 Jersey 网络服务。
protected HttpServer create() throws Throwable {
ResourceConfig rc = new PackagesResourceConfig("com.resource", "com.provider");
HttpServer server = GrizzlyServerFactory.createHttpServer(uri, rc);
return server;
}
但是有没有办法加载
web.xml
而不是 ResourceConfig
?<web-app>
<servlet>
<servlet-name>Jersey</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.resource, com.provider</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
最佳答案
似乎目前没有直接的方法可以用 web.xml
配置 grizzly .但是,我使用了可能是一个开始的部分解决方案。
网页.xml
首先要了解解决方案,我们要明白使用web.xml
是什么意思.它主要用于配置您的 Web 应用程序(有关更多详细信息,请参阅此 answer)。在这种情况下,我们正在配置 init-params
对于 servlet。
(部分)解决方案
而不是使用 web.xml
而不是使用 ResouceConfig.class
,我们可以使用 Grizzly 作为我们的 servlet 并初始化参数。
例如
<web-app>
<servlet>
<servlet-name>Jersey</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.resource, com.provider</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
会给出类似的东西:protected HttpServer create() throws Throwable {
HashMap<String, String> initParams = new HashMap<>();
//ServerProperties.PROVIDER_PACKAGES is equal to "jersey.config.server.provider.packages"
initParams.put(ServerProperties.PROVIDER_PACKAGES, "com.resource,com.provider");
//Make sure to end the URI with a forward slash
HttpServer server = GrizzlyWebContainerFactory.create("http://localhost:8080/", initParams);
return server;
}
有了这个,我们因此可以把所有的 init-params
我们想要的。然而这个解决方案不能代替整个
web.xml
.
关于jersey - 使用 web.xml 配置 Grizzly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8993065/