jersey - 使用 web.xml 配置 Grizzly

标签 jersey web.xml grizzly

我可以使用以下几行启动 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/

相关文章:

java - 检查 Java 中本地 TCP 端口是否打开

servlets - 在运行 Jersey REST 服务的 Grizzly 服务器上使用过滤器

java - 如何将自定义参数传递给其余的获取网址?

testing - StrutsTestCase/WEB-INF/web.xml 没有找到

web-services - 从 Tomcat 上运行的 CXF 网络服务获取 WSDL

spring - NoSuchMethodError : com. sun.jersey.core.reflection.ReflectionHelper.getOsgiRegistryInstance()Lcom/sun/jersey/core/osgi/OsgiRegistry;

rest - 405 Method Not Allowed in Jersey 正在返回 Tomcat 的 405 页面

java - 使用 RESTful API 进行自定义验证

java - Spring MVC 中的不同上下文如何工作?

java - SSL-REST-server with grizzly,ResourceConfig 实例不包含任何根资源类