从JBoss Web服务访问文件(用于写入)

时间:2010-05-09 13:19:41

标签: java web-services file-io jboss

假设我有Java Web Application的这种结构:

TheProject
  -- [Web Pages]
  -- -- abc.txt
  -- -- index.jsp
  -- [Source Packages]
  -- -- [wservices]
  -- -- -- WS.java

WS.java是我的Web服务,位于wservices包中。现在,从这项服务,我需要访问abc.txt文件并写入它。

这些是我的网址:

http://127.0.0.1:8080/TheProject/WS  <- the webservice
http://127.0.0.1:8080/TheProject/abc.txt <- the file I want to access

要阅读该文件,我tried getResourceAsStream并且我成功阅读了该文件。但是现在我也想写这个文件,我tried这样的方法却失败了。

有没有办法可以从abc.txt访问WS.java文件,并且能够成功读取和写入文件?

2 个答案:

答案 0 :(得分:0)

您必须先找到该文件,然后在其上打开一个File对象,然后您可以照常使用它。从“getResource”返回的URL开始,然后从那里开始工作。

注意:这个技巧可以假设应用服务器部署WAR文件的方式,并使其不可移植。

答案 1 :(得分:0)

好吧,可以进行阅读。您可以通过以下路径访问文件来访问它:(我假设您的Web服务已包装在WAR文件中)

@Resource
private WebServiceContext context;
......
// receive the realpath to foo.txt inside of web-archive deployment
((ServletContext )context.getMessageContext().get(MessageContext.SERVLET_CONTEXT)).getRealPath("foo.txt")

但一般来说写一个坏主意 - JBOSS会将你的应用程序解压缩到一些tmp文件夹。因此,每次重新启动应用程序时,您都会收到新的foo.txt