部署到 Java EE 6 容器(更具体地说是 Servlet 3.0 实现)中有许多选项:
最简单的是:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_3_0.xsd" version="3.0">
<servlet>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
然后,在您的 Web 应用程序中找到的所有@Path
和@Provider
类都将在“默认”JAX-RS 应用程序中可用,servlet URL 模式为"/rest/*"
.
如果你有一个或多个扩展类javax.ws.rs.core.Application
,你可以这样指定:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_3_0.xsd" version="3.0">
<servlet>
<servlet-name>com.example.jaxrs.MyApplication</servlet-name>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>com.example.jaxrs.MyApplication</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
如果您希望仅在 URL 上返回特定的@Path
/@Provider
类集,则可能需要执行上述操作(因此您可以在上面拥有第二个具有不同 URL 模式的 MyApplication2)。
你也可以完全跳过整个过程,只用作为 URL 模式的类web.xml
注释。我建议在任何情况下都保留它,因为无论如何您可能都必须在其中添加有关 Web 应用程序的其他信息。MyApplication
@ApplicationPath
web.xml
如果您想知道它的servlet-class
来源,它会由环境自动添加。您可以通过查看 Servlet 3.0 来获得一个想法ServletContext
。