もしそうなら、どうすればいいですか?WebFilterをライブラリにパッケージ化できますか?
はい、私の最後の質問のようです。そしてそれは本質的に同じ問題です。私は@javax.servlet.annotation.WebFilter
を持っています。これは戦争に直接パッケージングされたときにうまく動作します。今度はフィルタをライブラリに移動したいと思います。しかし、私がそうするなら、それはもはや呼び出されません。
私が見なければならない落とし穴はありますか、それとも不可能なのでしょうか?
もしそうなら、どうすればいいですか?WebFilterをライブラリにパッケージ化できますか?
はい、私の最後の質問のようです。そしてそれは本質的に同じ問題です。私は@javax.servlet.annotation.WebFilter
を持っています。これは戦争に直接パッケージングされたときにうまく動作します。今度はフィルタをライブラリに移動したいと思います。しかし、私がそうするなら、それはもはや呼び出されません。
私が見なければならない落とし穴はありますか、それとも不可能なのでしょうか?
セット<web-app metadata-complete="false">
。
これは、このWebアプリケーションのメタデータがこの特定のxml(およびwebappのクラス)に限定されず、サードパーティのライブラリによってメタデータを使用できることを意味します。
「ウェブの断片」もご覧ください。あなたのjarのMETA-INF
にweb-fragment.xml
を定義し、そこですべてのサーブレットとフィルタをマップすることができます。
'web-fragment.xml'と' metadata-complete'の両方をうまく使いました。この質問を見つけるかもしれない人のために: - 1)ライブラリを標準のjarファイルとしてビルドします。2)アプリケーションライブラリの '/ lib'ディレクトリの標準ライブラリとしてmavenライブラリを用意しました。 – Martin
JARプロジェクトの/META-INF
フォルダに空のServlet 3.0互換のweb.xml
ファイルをドロップするだけです。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="yourProjectId" version="3.0">
</web-app>
サーブレット3.0コンテナが/META-INF/web.xml
ファイルの存在及び存在する場合のデフォルトのスキャンのJARファイルによって、その後、サーブレット3.0注釈のためのJAR内のすべてのクラスをスキャンします。他の設定は必要ありません。
JSF 2.0には同様の手法が/META-INF/faces-config.xml
となっています。
これを試しても機能しませんでした。ファイルは確かにjarファイルに含まれています。 Tomcat 7.53 Java 60.奇妙なことに、EclipseではEclipse *が動作します。 warとjarの両方に同じweb.xmlがあり、唯一の違いは 'id'値です。 –
私はフィルタの注釈をまだ使用していないので、ここではオフになっている可能性があります。おそらく、WebFilterでアノテートされたクラスをjarファイルにパッケージングし、そのjarファイルをwar/WEB-INF/libディレクトリに入れてみてください。 – Upgradingdave
EARを使用すると、そこにlibもパッケージ化できます。 – Martin