【问题标题】:Configure Jersey MVC to serve Viewable without web.xml配置 Jersey MVC 以在没有 web.xml 的情况下提供 Viewable
【发布时间】:2014-01-16 10:23:40
【问题描述】:

重要的部分是:没有web.xml。

我已经有一个在 Glassfish 3.1.2.2 上运行的工作 JAX-RS 应用程序,没有 web.xml,完全由注释配置。

问题是,我怎样才能维护无 web.xml 的必杀技,并且仍然使用 Jersey MVC 从我的 Maven .war 项目的资源或 webapp 目录中提供静态资源?

我在很多答案中看到如何使用 web.xml 配置来做到这一点,但没有人提到如何在没有 web.xml 文件的情况下映射资源。

目前我在资源目录下有一个 ui.html 文件,一个 JAX-RS 应用程序子类和一个资源类。项目中没有 web.xml,以下运行良好:

@Path("/ui")
@GET
public Response ui() {
    String content = "Hello StackOverflow";
    return Response.ok(content).build();
}

虽然这个因解析器的 IOException 而失败:

   @Path("/ui")
   @GET
   public Response ui() {
      Viewable viewable = new Viewable("/ui.html");
      return Response.ok(viewable).build();
   }

java.io.IOException:模板名称 /ui.html 无法解析为完全限定的模板名称 我也尝试用相对路径来指定它,但这也没有用。

我用于 Jersey 的依赖项如下:

     <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>1.18</version>
    </dependency>

我知道一个合适的示例项目将是最好的,并且愿意提供,如果人们很难弄清楚我在说什么,请告诉我。

【问题讨论】:

  • 你的申请路径是什么?如果它是“/”,那么它基本上隐藏了任何模板,并且 Jersey 将无法查找它们,除非您将其注册为过滤器而不是 servlet。如果没有 web.xml,就无法将其注册为过滤器。
  • 我有一个“正确”的应用程序路径,并且资源类也有自己的定义,所以这不应该是问题。我现在可以看到这个问题还不够好,今天晚上将创建一个小型的、重点突出的示例项目。如果您也看一下,请提前致谢。

标签: java model-view-controller jax-rs web.xml jersey-2.0


【解决方案1】:

Peter Metz,我相信这可以通过在扩展 org.glassfish.jersey.servlet.ServletContainer (Jersey 2.26) 的类上使用 @WebFilter 注释来实现:-

package com.myorg.myapp.config;

import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;

import org.glassfish.jersey.servlet.ServletContainer;

@WebFilter(value = "/*", initParams = @WebInitParam(name = "javax.ws.rs.Application", value = "com.myorg.myapp.config.JerseyConfig"))
public class JerseyFilter extends ServletContainer {

    private static final long serialVersionUID = 1L;

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-18
    • 2019-11-01
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 2023-03-03
    相关资源
    最近更新 更多