我正在使用Wildfly和JAX-RS做一个Rest Service + Web站点。 我的观点是将休息服务作为某种“控制器”。 我通常可以加载 index.jsp 页面,但是当遇到其他类型的文件(例如 main.css )时,它会返回404 HTTP file not found错误。
这些文件是否应该在同一个项目中?或者我应该为Rest服务创建一个Java项目,为网站创建另一个Java项目吗?
我的终点看起来像这样:
@Path("/restservice")
@Produces("text/html; charset=UTF-8")
public class FalkEndpoint {
@GET
public String defaultMessage(@Context HttpServletRequest request,@Context HttpServletResponse response){
return "The server is up! :)";
}
}
我的web.xml如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet-mapping>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
答案 0 :(得分:0)
您通常不应该使用JAX-RS提供静态文件。那就是重新发明轮子。提供动态生成的文件(如报告PDF或CSV导出)完全没问题。
如果这些(静态资源)文件位于同一个项目中,则最容易处理。
如果您将它们放在 web 或 src / webapp 文件夹中(具体取决于您的项目设置),那么它们将由容器提供服务(Tomcat / Jetty / Glassfish)servlets for you。
在Wildfly中,通过添加文件处理程序可以使用standalone.xml实现:
在standalone.xml中向另一个子系统添加另一个文件处理程序和另一个位置:
<server name="default-server"> <http-listener name="default" socket-binding="http"/> <host name="default-host" alias="localhost"> <location name="/" handler="welcome-content"/> <location name="/img" handler="images"/> </host> </server> <handlers> <file name="welcome-content" path="${jboss.home.dir}/welcome-content" directory-listing="true"/> <file name="images" path="/var/images" directory-listing="true"/> </handlers>