2011-11-29 21 views
7

私はJettyサーバー上にJava Webアプリケーション(Eclipse/OSGI)を持っています。私は静的なファイルをWebルートの外部のフォルダから私のWebアプリケーションに提供したいと思っています。私のWebアプリケーションでは、私が提供したいファイルのファイル名をまだ知りませんので、Webアプリケーションを起動するときにファイル名(および/またはパス)をVMパラメータとして使用したいと思います。例:JettyのWebアプリケーション外のフォルダからファイルを配信する

イメージファイルmyImg.jpgがあります。これは、サーバーファイルシステム上のフォルダ(root/images/myImg.jpgなど)に入れています。私は、これをVMパラメータとしてとっておきたいと思います。 "-DmyImg =/images/myImg.jpg /"をクリックすると、画像を取得してウェブページに表示することができます。どうすればこれを達成できますか?新しいサーブレットを作成せずにこれを行うことはできますか?

ありがとうございました!

+0

からアクセスbaseResourceをファイルシステム上の実際のフォルダにコピーしますが、contextPath経由でアクセスしようとするとリソースは "null"になります。 – Farna

答えて

11

解決済み!

<Set name="handler"> 
    <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection"> 
     <Set name="handlers"> 
      <Array type="org.eclipse.jetty.server.Handler"> 
       <Item> 
        <New class="org.eclipse.jetty.server.handler.ContextHandler"> 
         <Set name="contextPath">/myContextPath</Set> 
         <Set name="handler"> 
          <New class="org.eclipse.jetty.server.handler.ResourceHandler"> 
           <Set name="directoriesListed">false</Set> 
           <Set name="resourceBase">/actual/folder/on/file/system</Set> 
          </New> 
         </Set> 
        </New> 
       </Item> 
       [...other handlers...] 
      </Array> 
     </Set> 
    </New> 
</Set> 
3

@Farna:あなたの答えは、私はあなたがVMパラメータとしてファイル名を渡しているかを理解することはできませんよ

これは私が私のjetty.xmlファイルに追加するものです。これは私がやったことです。

私はファイルをjetty webappsディレクトリに作成しました。

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.eclipse.org/configure.dtd"> 

<Configure class="org.eclipse.jetty.server.handler.ContextHandler"> 
    <Set name="contextPath">/testparvez</Set> 
    <Set name="resourceBase"><SystemProperty name="mydir"/></Set> 
    <Set name="handler"> 
    <New class="org.eclipse.jetty.server.handler.ResourceHandler"> 
     <Set name="welcomeFiles"> 
     <Array type="String"> 
      <Item><SystemProperty name="myfile"/></Item> 
     </Array> 
     </Set> 
     <Set name="cacheControl">max-age=3600,public</Set> 
    </New> 
    </Set> 
</Configure> 

その後、私は

java -jar start.jar jetty.port=8082 -Dmydir=C:/test/javadoc/ -Dmyfile=index.html 

として桟橋を開始し、最終的に私は私が指している、私はjetty.xml設定ファイルでのContextHandlerを使用しようとしているURL http://localhost:8082/testparvez/

関連する問題