8

OK、これは次のようなものです: Jetty を使用してプログラムでサーブレット テストをインストールおよび実行する

そこで素晴らしい答えを得て、サーブレットをプログラムでロードすることができ、そのすべてが素晴らしいものでした.

しかし、私がやりたいことは、テストでweb.xmlをロードし(すべてクラスパスに)、サーバーを実行させます(現在のクラスパスを使用)-ドキュメントで、ディレクトリにポイントする方法を見てきましたそれを行いますが、クラスパスから離れて作業したいです (インプレース テストに適しています)。基本的に私のweb.xmlを検証しています。

(関係ありませんが、このアプリはscalaにありますが、問題はありませんでした。すべてが宣伝どおりに機能します)。

4

1 に答える 1

13

個々のサーブレットをロードするのではなく、プログラムで適切な 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が含まれている必要があり、ファイルはその中に存在する必要があるということです。他のすべてはクラスパスから自動的にロードできるため、そのディレクトリ構造内に他のものを配置する必要はありません (ただし、必要に応じて、実際の WAR ファイルへのパスまたは展開された WAR ツリーを完成させることもできます)。WEB-INFweb.xml

于 2009-08-07T13:34:06.230 に答える