2

私はJerseyAPIを使用してRESTfulWebサービスを構築し、UbuntuのTomcat5で実行しています。Webサービスは私のマシン(EclipseでWebサービスを実行しています)で正常に動作します。問題は、サーバーでWebサービスを実行しようとしたときです。ファイル(より具体的にはjdbm2 HashMap)にアクセスして、特定の単語を検索する必要があります。コンピューター上のファイルにアクセスするには、ファイルが含まれているフォルダーをeclipseフォルダーにコピーするだけで済みました。ただし、サーバー上で、プログラムはフォルダーを見つけることができません。問題は、目的のフォルダ(MasterHashと呼ばれる)が作業ディレクトリにないことのようです。

問題は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ファイルにリソースを追加する必要があると思っていますが、その方法がわかりません。どんな助けでもいただければ幸いです!

4

1 に答える 1

2

Web サービス クラスからファイルにアクセスするために、 context.xmlにリソースを追加する必要はありません。「WebContent」フォルダーの下にフォルダー (「yourfolder」と呼びましょう) をそのままにしておきます。

次のパラメーターを Web サービス クラスに追加します。

@Context
ServletContext context;

以下のコードを使用して、フォルダーにアクセスします。

File filepath = new File(context.getRealPath("yourfolder"));
于 2012-10-27T12:11:01.980 に答える