11

JAR ファイルのリソース フォルダー内に Web リソースを含む単純な埋め込み Jetty サーブレットが必要です。JAR にいくつかのプロパティ ファイルがあり、リソース パスを使用してそれらをロードします。Jetty リソース ベースを次のように指定します。

  • リソース/ webapp
  • セット: resource_handler。setResourceBase ( "webapp" )
    • JAR ファイル内のそのリソースを指す正しい URL を介して。

JAR ファイル内のフォルダー。これは必要最小限の JAR ファイルです (WAR ではなく、フレームワークもなく、Springもありません)。初期テストでは、次の文字列のようなものに対して引き続き例外がスローされます。

webPath = "jar:file:!/webapp";     //.... runs the Jetty server 
 ... 
resource_handler.setResourceBase( webPath );

サーバーは動作しているように見えますが、結果は index.html を見つけることができません。(更新:) この例は、Jetty の「埋め込みファイル サーバー」の例から取ったものです。この場合、Jetty Resource Baseが JAR ファイル (完全な URL) にマップされる必要があります。

  • "jar:file:!/webapp/index.html",

次のように:

  • resource_handler.setResourceBase(" jar:file:!/webapp ");

与えられた例の代わりに:

  • resource_handler.setResourceBase(".");

そして、ブラウザの URL を次のようにマッピングします。

  • ローカルホスト:8080/index.html
    • ... 与える ...
  • jar:ファイル:!/webapp/index.html

対照的に、以下の構成ファイルで機能する JAR パス。質問: Jetty リソース ベースが Index.html ファイルを提供できるようにするには、URLをどのようにする必要がありますか?

  • 資力/
    • 設定/
      • 表示プロパティ

ファイルは「/config/display.properties」であり、これはリソースのロード操作を使用して同じプロジェクト コードで機能します。レイアウトは次のようになります。

 app.jar
   +----- com /
   |        +--- ( classes ... )
   |
   +----- config /
   |        |
   |        +--- display.properties
   |
   +----- webapp /
            |
            +--- index.html

一般的な考えを与える。

同様の質問:

4

2 に答える 2

0

元の回答から一部のメソッドが変更されたため、以下は同じように機能しますが、Jetty のバージョン: 9.4.12.v20180830:

ServletContextHandler webappContext = new ServletContextHandler(ServletContextHandler.SESSIONS);  
URL webRootLocation = JettyStart.class.getResource("/webapp/index.html");  
URI webRootUri = URI.create(webRootLocation.toURI().toASCIIString().replaceFirst("/index.html$", "/"));  
webappContext.setContextPath("/");
webappContext.setBaseResource(Resource.newResource(webRootUri));
webappContext.setWelcomeFiles(new String[] { "index.html" });
于 2019-06-28T19:02:14.743 に答える