2012-10-25 104 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

相关问题