我有一个基本的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我还没有找到设置Tomcat显示名称或版本的方法。现在我可以在web.xml中设置这些参数,这很好,但我宁愿在扩展ResourceConfig的类中设置参数,并完全去掉web.xml。这可能吗?还是我应该坚持使用web.xml?如有任何建议,我们将不胜感激。
ResourceConfig
类的目的不是替换web.xml
文件。
ResourceConfig
类用于什么
ResourceConfig
类是Jersey API的一部分,它提供了简化JAX-RS组件注册的高级功能,例如在提供的类路径或一组包名称中扫描根资源和提供程序类。
它扩展了JAX-RS API中的Application
类。有关Application
类的更多详细信息,请参阅此答案。
web.xml
文件的用途是什么
web.xml
是用于基于servlet容器的应用程序的部署描述符。它指示servlet容器必须加载哪些类(servlet、过滤器和侦听器),应该在上下文中设置哪些属性,等等。
自从Servlet 3.0以来,您甚至不需要web.xml
来进行简单的部署。大多数配置,如注册servlet、过滤器和侦听器,都可以通过注释完成。
但是,如果要设置web应用程序的<display-name>
,则web.xml
仍然是必需的。到目前为止,还没有任何注释可以替换该标记。
你的web.xml
可能是什么样子
ApacheTomcat8与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>