我有以下web.xml文件。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>SeekLocal</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Resteasy</servlet-name>
<servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Resteasy</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.ba.rs.webservices.LocalApplication</param-value>
</context-param>
<listener>
<listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
</listener>
</web-app>
现在,如果我从更改网址格式
<url-pattern>/*</url-pattern> to <url-pattern>/app/*</url-pattern>
它开始显示index.html,但随后我无法访问Web服务。我搜索了互联网,发现有一些将要应用的过滤器,但我找不到完整的解决方案。我尝试通过不更改url模式并应用转发器来尝试,但仍然没有显示index.html。指导我如何使用index.html更改应用程序的url模式。我正在使用如下所示的容器添加下面提到的Web服务类。
package com.ba.rs.webservices;
import java.util.Set;
import java.util.HashSet;
import javax.ws.rs.core.Application;
public class LocalApplication extends Application {
private Set<Object> singletons = new HashSet<Object>();
private Set<Class<?>> empty = new HashSet<Class<?>>();
public LocalApplication(){
//add WS Classes in here.
singletons.add(new UserWS());
}
@Override
public Set<Class<?>> getClasses() {
return empty;
}
@Override
public Set<Object> getSingletons() {
return singletons;
}
}
最佳答案
我已经通过在web.xml中添加以下行解决了这个问题
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/rest</param-value>
</context-param>
并更改以下内容
<url-pattern>/*</url-pattern> to <url-pattern>/rest/*</url-pattern>
感谢@Nebelmann,他在以下链接中回答了类似的问题。
RESTEasy - @Path requiring a full path?