jettyとの統合テストのためにweb.xmlをロードする
質問
OKこれは次のようなものに関連しています:プログラムでサーブレットテストをインストールして実行する
そこで素晴らしい回答が得られ、サーブレットをプログラムでロードすることができ、すべてがすばらしいものになりました。
しかし、私がやりたいのは、テストでweb.xmlをロードし(すべてクラスパスで)、サーバーで実行する(現在のクラスパスを使用)ことです。それを行うディレクトリですが、クラスパスを回避したいです(インプレーステストの方が良い)。基本的に私のweb.xmlの検証。
(関連性はありませんが、このアプリはscalaにありますが、私はそれで問題はありませんでした。すべては宣伝どおりに動作します。)
解決
やりたいことは、個々のサーブレットをロードするのではなく、適切なWebアプリケーションをプログラムでロードすることです(そして、完全なWARファイルがなくても実行したいと思います)。
Server server = new Server( port );
WebAppContext root = new WebAppContext();
root.setWar("/path/to/somewhere");
root.setContextPath("/");
server.addHandler( root );
server.start();
トリックは、 / path / to / somewhere
に WEB-INF
ディレクトリが含まれ、 web.xml
ファイルが存在することです。そこに。クラスパスから他のすべてを自動的にロードできるため、そのディレクトリ構造内に他に何も存在する必要はありません(必要に応じて、実際のWARファイルまたは完全な展開されたWARツリーへのパスを作成できます)。
所属していません StackOverflow