2012-10-25 81 views
2

我使用Jersey API構建了一個RESTful Web服務,並在Ubuntu中的Tomcat5上運行它。 Web服務在我的機器上正常工作(我在Eclipse上運行Web服務),問題是當我嘗試在服務器上運行它時。我必須訪問一個文件(更具體地說是一個jdbm2 HashMap)並搜索給定的單詞。要訪問我的計算機上的文件,我只需將包含該文件的文件夾複製到eclipse文件夾。但是,在服務器上,程序找不到該文件夾​​。問題似乎是所需的文件夾(稱爲MasterHash)不在工作目錄中。Tomcat 5/Java RESTFul Web服務 - 訪問文件夾中的文件

我在想這個問題與web.xml或context.xml文件有關。在web.xml文件看起來是這樣的:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
           http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    id="WebApp_ID" version="2.5"> 
    <display-name>NGramSearch_WebService</display-name> 
    <servlet> 
     <servlet-name>Jersey REST Service</servlet-name> 
     <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
     <init-param> 
      <param-name>com.sun.jersey.config.property.packages</param-name> 
      <param-value>search</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Jersey REST Service</servlet-name> 
     <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

context.xml文件看起來是這樣的:

<?xml version="1.0" encoding="UTF-8"?> 
<Context docBase="/usr/share/tomcat5/webapps/NGramSearch_WebService" 
path="/NGramSearch_WebService" 
reloadable="true" 
workDir="/usr/share/tomcat5/webapps/"> 

</Context> 

我想我要在context.xml文件添加資源,但我我不確定如何去做。任何幫助,將不勝感激!

+0

什麼的IO叫你讓打開的文件?你可以將文件保存在WEB-INF中並從類路徑中訪問它嗎? – condit

+0

@ user463324我認爲我可以將文件保存在WEB-INF文件中,但是我寧願將它保存爲一個單獨的文件夾(我可能必須在將來更新文件)。我會考慮這種選擇作爲最後的手段,但謝謝你的建議。 – Judas

回答

2

您不需要在您的context.xml中添加資源以從您的Web服務類訪問文件。 只需在您的「WebContent」文件夾下留下您的文件夾(我們稱之爲「yourfolder」)。

以下參數添加到您的Web服務類:

@Context 
ServletContext context; 

現在使用下面的代碼來訪問您的文件夾:

File filepath = new File(context.getRealPath("yourfolder")); 
+0

我只是想出了問題所在,它與context.xml或web.xml無關。無論如何,謝謝你的回答。 – Judas

相關問題