4

次のコードを使用して絶対パスを取得することにより、画像を jboss サーバーにアップロードしています

getServletContext().getRealPath("");

アップロードされた画像は絶対パスに移動され、http://test.com:8080 /image.jpg を使用して画像にアクセスできます

私の問題は、イメージが jboss サーバーの tmp ディレクトリにアップロードされていることです。そのため、次の展開でアップロードされたイメージが失われます。イメージをさまざまなパスにアップロードして \jboss-5.0.1.GA\server\default\deploy とここで \jboss-5.0.1.GA\server\default\work\jboss.web\localhost も機能させるようにしましたしかし失敗しました。 http://test.com:8080/image.jpgを使用して画像にアクセスできません

これで私を助けてください...

4

1 に答える 1

6

新しいコンテキストを追加して、外部フォルダーにアクセスするためのパスを指定できます。

Jboss 4 以前のバージョンの手順:

  1. ファイルを開きます/YOURINSTANCE_JBOSS/deploy/jboss-web.deployer/server.xml
  2. Contextタグに新しいを定義する<Host name=”localhost” ...>

    例:

    <Host name=”localhost” ...>
    <Context path=”/myfolder” docBase=”/home/username/my_images” reloadable=”true”&gt;</Context>
    

    /myfolderはファイルへのアクセスに使用するパス、/home/username/my_imagesは写真をアップロードするフォルダーです。

  3. JBoss を再起動します

これで、次のパスでファイルにアクセスできるようになります。

http://yourserver:yourport/myfolder/filename

Jboss 5 の手順:

  1. 次の内容でフォルダーに名前context.xmlを付けた新しいファイルを作成します。WEB-INF

    <?xml version="1.0" encoding="UTF-8"?>
    <Context allowLinking="true" cookies="true" crossContext="true" override="true">
        <Resources allowLinking="true" className="YOUR_PACKAGE.MyResources" homeDir="/home/username/my_images" />
    </Context>
    

    ここで、 classNameはリソースにアクセスする Java クラスであり、homeDirは外部ディレクトリです。

  2. このリンクに従って、ファイルで定義されたリソースにアクセスするための新しいクラスを作成しますcontext.xml

    例:

    public class MyResources extends FileDirContext {
    
    }
    

これで、次の関数でファイルにアクセスできるようになります:

request.getServletContext().getResourceAsStream(uri);

Jboss 5 以前のバージョンの手順:

  1. という名前の新しいファイルcontext.xmlを、次の内容で WEB-INF フォルダーに作成します。

    <?xml version="1.0" encoding="UTF-8"?>
    <Context allowLinking="true" cookies="true" crossContext="true" override="true">  
        <Resources allowLinking="true" homeDir="/home/username/my_images" />  
    </Context>
    

    homeDirは外部ディレクトリです

  2. シンボリック リンクを作成する:YourDeployedProject.war/myfolderリンク先/home/username/my_images

    ウィンドウズ:

    mklink /D C:\YOUR_JBOSS_SERVER\server\default\deploy\YourDeployedProject.war\myfolder C:\users\YOURUSER\my_images
    

    Linux:

    YourDeployedProject.war# ln -s /home/username/my_images myfolder
    

これで、次のパスでファイルにアクセスできるようになります。

http://localhost:8080/DeployedProject/myfolder/filename

Jboss 7 の手順:

JBoss 7 では、以前の JBoss バージョンのメソッドを使用できないため、最も簡単な解決策は、次のリンクのようにファイルにアクセスするためのサーブレットを実装することです。

于 2013-06-28T07:10:04.717 に答える