1

.xml ドキュメントからファイルを作成できることを示すために、rest を使用しようとしています。これは以下の私のコードです。実行するたびに、ファイルが存在しないことを意味する「動作していません」が返されます。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 に答える