1

我正在尝试使用 rest 来证明我可以从 .xml 文档创建文件。这是我下面的代码。每当我运行它时,它都会返回“不工作”,表示该文件不存在。articles.xml 文件位于我的 WEB-INF 文件夹中,我只是不知道如何使它工作。这是文件路径的错误布局吗?我可以将 xml 转换为这样的文件吗?

@Path("test")
@GET
@Produces(MediaType.TEXT_PLAIN)
public String test()
{
    try 
            {
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        } 
    catch (ParserConfigurationException e) 
            {
        return "caught";
    }

        File file = new File("/WEB-INF/Articles.xml");
        if (file.exists()) 
            return "its working"; 
        else
            return "not working";


}
4

1 回答 1

0

加载 WAR 资源的标准方法是通过ServletContext。这可以使用Context注释注入。

  @Context
  private ServletContext context;
  private Document articles;

  @PostConstruct
  public void init() {
    try {
      InputStream in = context.getResourceAsStream("/WEB-INF/Articles.xml");
      try {
        articles = DocumentBuilderFactory.newInstance()
                                         .newDocumentBuilder()
                                         .parse(in);
      } finally {
        in.close();
      }
    } catch (Exception e) { /*TODO: better handling*/
      throw new IllegalStateException(e);
    }
  }

  @Path("test")
  @GET
  @Produces(MediaType.TEXT_PLAIN)
  public String test() {
    return articles == null ? "not working" : "its working";
  }

在 Glassfish 3.1.1 上测试。

于 2013-05-25T12:03:00.443 回答