2012-01-06 123 views
0

我正在使用NetBeans创建Web服务并使用Glassfish作为服务器在NetBeans中对其进行测试。从Web服务访问文件

我有一个文件,我希望Web服务能够读取数据并可能写入它。但我在哪里把文件。如果“课程”是我的NetBeans项目的根我试图将在以下位置的文件:

\Course 
\Course\xml-resources\jaxb\FlightRequest 
\Course\web 
\Course\web\WEB-INF 
\Course\src\java\org\me\FBooking 
\Course\build\web 
\Course\build\web\WEB-INF 
\Course\build\web\WEB-INF\classes 

,并尝试使用访问它的Web服务在我的解组代码(如文件我试图访问XML文档):

un = (AvailableFlights) unmarshaller.unmarshal(new java.io.File("AvailableFlights.xml")); 

但它无法找到该文件

那么,我应该把它?

+0

如果您只需要从文件读取,请将其置于src/main/resources(maven的应用程序资源的标准位置)下。确保你的ide将src/main/resources下的文件复制到编译器输出文件夹(WEB-INF/webapp的类) – DagR 2012-01-07 00:51:12

+0

我已经将该文件放置在:\ Course \ build \ web \ WEB-INF \ classes但我仍然不能访问它。 我也试图使网络服务写入文件找到它保存到默认位置,它似乎是: C:\ Program Files文件\与GlassFish 3.1.1 \ GlassFish的\域\ DOMAIN1 \ 但我如果我想部署这个Web服务,猜测这不是一个实用的位置 – user1135290 2012-01-07 13:12:30

回答

0

如果您需要写入该文件,则应该在可部署代码之外找到该文件。

如果您只需要只读访问权限,将该文件放入web /将使该文件可以从Web浏览器访问。这可能不是你想要的。

如果你把这个文件放在WEB-INF/classes下,它将会被你的代码访问,但不公开暴露。

您访问该文件的代码片段仅适用于文件系统上的文件,而不适用于作为WAR一部分部署的文件,因此如果您决定要打包文件,则需要查看其他加载文件的方式它作为你的WAR的一部分。

0

看看

getClass().getResourceAsStream("file") 

它应该能够从文件的WAR文件中读取。 (现在还没有测试过..)但是这只适用于从文件中读取。