繁体   English   中英

带有Tomcat的Jersey JAX-RS ResourceConfig

[英]Jersey JAX-RS ResourceConfig with Tomcat

我有一个可以正常工作的基本REST Web服务,但确实有一个问题。 这是一个简短的代码片段。

package com.my.app;
import org.glassfish.jersey.server.ResourceConfig;
import javax.ws.rs.ApplicationPath;

@ApplicationPath("api")
public class RestApplication extends ResourceConfig {
    RestApplication() {
        packages("com.my.app");
    }
}

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>The name of my service!</display-name>
</web-app>

我一直在https://jersey.java.net/apidocs/2.25.1/jersey/org/glassfish/jersey/server/ResourceConfig.html的Jersey文档中进行挖掘,但是我还没有找到一种方法来设置Tomcat显示名称或版本。 现在,我可以在web.xml中设置这些参数,效果很好,但我宁愿在扩展ResourceConfig并完全摆脱web.xml的类中设置参数。 这可能吗?还是我应该坚持使用web.xml? 任何建议将不胜感激。

ResourceConfig类的目的不是替换web.xml文件。

ResourceConfig类的用途是什么?

ResourceConfig类是Jersey API的一部分,并提供高级功能来简化JAX-RS组件的注册,例如,在提供的类路径或一组包名称中扫描根资源和提供程序类。

它从JA​​X-RS API扩展了Application类。 有关Application类的更多详细信息,请参考此答案

web.xml文件的用途是什么?

web.xml是基于servlet容器的应用程序的部署描述符。 它指示servlet容器必须加载哪些类(servlet,过滤器和侦听器),应在上下文中设置哪些属性,等等。

从Servlet 3.0开始,您甚至不需要web.xml进行简单部署。 大多数配置(例如注册servlet,过滤器和侦听器)都可以通过批注完成。

但是,如果要设置Web应用程序的<display-name> ,仍然需要web.xml 到目前为止,还没有可以替换该标签的注释。

您的web.xml可能是什么样的

Apache Tomcat 8与Servlet 3.1规范兼容(有关更多详细信息,请参阅Tomcat文档 ),因此您的web.xml可能类似于:

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <display-name>Web Application Name</display-name>
</web-app>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM