既存のアプリケーションを Spring Boot に移行しています。問題のアプリケーション ( Genie ) は、Hadoop や Presto などのデータ処理クラスター用の分散型のスケーラブルなクライアントとして機能します。そのため、クエリの結果をディスクに出力し、ユーザーがデータにアクセスできるようにする必要があります。これまでは、war を展開する Tomcat でディレクトリ リストを有効にし、ユーザーが DefaultServlet を使用して自分のファイルを参照およびアクセスできるようにすることで、これを行ってきました。
次のようにリソース ハンドラを使用してディレクトリをエクスポートしてみました。
@SpringBootApplication
public class GenieWeb extends WebMvcAutoConfiguration.WebMvcAutoConfigurationAdapter {
// Other configuration
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
super.addResourceHandlers(registry);
final String myExternalFilePath = "file:///path/to/dir/";
registry
.addResourceHandler("/urlPath/*")
.setCachePeriod(0)
.addResourceLocations(myExternalFilePath);
}
}
これは、リソースの URI が既知であるが、ディレクトリに対するすべての要求が 404 を返す場合に正常に機能します。理想的には、これは、init パラメータとして lists が true に設定されている場合のスタンドアロン TomcatのDefaultServletの動作と同じように動作します。
Tomcat 構成と特に DefaultServlet にアクセスするさまざまな方法を試しましたが、典型的な「リスト」プロパティを介してディレクトリ リストを有効にすることができませんでした。
過度の検索では結果が得られなかったので、WAR ビルドに戻るか、Apache を前面に出すことをあきらめる前に、これが可能かどうかを誰かが知っているかどうか知りたいと思いました。これを行いたくない主な理由は、アプリケーションのデプロイをできるだけ簡単にするためであり、1 つの jar ファイルにすべてが含まれていることには多くの魅力があります。
前もって感謝します!