我可以启动grizzly并在上面部署Jersey webservices,如下所示。
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>发布于 2015-08-27 04:55:53
似乎目前还没有直接的方法来配置grizzly的web.xml。然而,我使用了部分解决方案,这可能是一个开始。
web.xml
首先要理解解决方案,我们必须理解使用web.xml的意义。它主要用于配置您web应用程序(有关更多详细信息,请参阅此answer )。在本例中,我们为servlet配置init-params。
(部分)解决方案
我们可以使用Grizzly作为我们的servlet并初始化参数,而不是使用web.xml和ResouceConfig.class。例如
<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。
https://stackoverflow.com/questions/8993065
复制相似问题