私はJAASを使用するプロジェクトに取り組んでいますが、残念ながら、Tomcatでは戦争のルートにあるMETA-INFフォルダーにファイルを配置する必要があります。
app.war
|__META-INF
| |___context.xml
...
WARのデフォルトのMETA-INFの場所はclassesフォルダーにあるので、それはすでに奇妙だと思います。
app.war
|__WEB-INF
| |__classes
| |__META-INF
...
そのため、私はMavenを使用しています。これは、src/main/resources/META-INF内のすべてのものが適切な場所にコピーされることを示しています。奇妙なことに、ファイル構造のルートにMETA-INFフォルダーも作成され、2つのMETA-INFフォルダーが残ります。
プロジェクト構造
app
|__src/main/Java
|__src/main/resources
| |__META-INF
| |__context.xml
...
mvnパッケージの後
app
|__META-INF [1]
|__WEB-INF
| |__classes
| |__META-INF [2]
| |__context.xml
...
したがって、#2のように、戦争標準でMETA-INFをclassesフォルダーの下に配置する必要があると規定されている場合、なぜmaven warが#1フォルダーを作成するのですか。そして、#2の代わりにそのフォルダにファイルをコピーさせる方法はありますか?
よろしく
だから私はこれを見つけました:
これは、META-INFフォルダーが2つあることは問題ではないと述べています。私が見つけた少し掘ります:
これはMETA-INFフォルダについて述べています:
JARファイルは基本的に、オプションのMETA-INFディレクトリを含むZipファイルです。 ... META-INFディレクトリが存在する場合は、セキュリティ、バージョン管理、拡張機能、サービスなどのパッケージおよび拡張機能の構成データを格納するために使用されます。
この:
これは、セクション10.6で、WARファイル構造について述べています。
このような形式にパッケージ化すると、META-INFディレクトリが存在します。このディレクトリにはJavaアーカイブツール。このディレクトリを直接提供してはなりません。 Webクライアントの要求に応じたコンテナによるコンテンツ。ただし、その内容は、ServletContextのgetResourceおよびgetResourceAsStream呼び出しを介してサーブレットコードに表示されます。また、META-のリソースにアクセスするためのすべての要求INFディレクトリは、SC_NOT_FOUND(404)応答で返される必要があります。
したがって、WAR仕様から、適切な場所はWEB-INF/classes/META-INFです。ただし、warは特別なjarファイルであるため、拡張機能のポイントとして/ META-INFを使用することは理にかなっています。 JPApersistence.xmlファイルとTomcatcontext.xmlファイルでこのような異なる使用法を見ることができます。前者はWEB-INF/classes/META-INFに配置し、後者は/ META-INFに配置する必要があります。