2012-01-06 119 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文件中讀取。 (現在還沒有測試過..)但是這隻適用於從文件中讀取。