OK、私は完全に立ち往生しています。別のプロセスでサーバーを実行せずにアプリケーションをテストできるように、組み込みモードで Tomcat を実行したいと考えています。単純で愚かで重要なものが欠けています。それを確認するにはあなたの助けが必要です。
このテストは、HTTP エラー 400、Bad Request で失敗します。MemoryProtocolHandler、context.invoke() などを試しましたが、どうすればよいかわかりません。多分あなたは単純なものを見ます。
パッケージ ca.jbrains.jsfunit.learning.test;
org.apache.catalina.Container をインポートします。
org.apache.catalina.Context をインポートします。
org.apache.catalina.Engine をインポートします。
org.apache.catalina.connector.Connector をインポートします。
org.apache.catalina.connector.Request をインポートします。
org.apache.catalina.realm.MemoryRealm をインポートします。
org.apache.catalina.startup.Embedded をインポートします。
org.junit.After をインポートします。
org.junit.Test をインポートします。
com.gargoylesoftware.htmlunit.WebClient をインポートします。
public class LearnEmbeddedTomcatTest {
プライベート 埋め込み 埋め込み;
プライベート コンテナ ホスト。
プライベート エンジン エンジン;
@テスト
public void deploySampleApplicationFromFileSystem() は例外をスローします {
String tomcatPath = "/Users/jbrains/ThirdParty/apache-tomcat-5.5.28-embed";
// 組み込みサーバーを作成します
埋め込み = 新しい埋め込み ();
embedded.setCatalinaHome(TomcatPath);
embedded.setRealm(新しいMemoryRealm());
// エンジンを作成する
エンジン = embedded.createEngine();
engine.setDefaultHost("localhost");
// デフォルトの仮想ホストを作成します
ホスト = embedded.createHost("localhost", tomcatPath + "/webapps");
engine.addChild(ホスト);
// アプリケーション コンテキストを作成します
コンテキスト context = embedded.createContext("TddJsfWeb", tomcatPath
+ "/webapps/TddJsfWeb");
host.addChild(コンテキスト);
// 組み立てられたコンテナ階層をインストールします
embedded.addEngine(エンジン);
// デフォルトの HTTP コネクタを組み立ててインストールする
コネクタ コネクタ = embedded.createConnector("localhost", 8080,
"http");
embedded.addConnector(コネクタ);
// 組み込みサーバーを起動します
embedded.setAwait(真);
埋め込み.start();
WebClient webClient = new WebClient();
webClient.getPage("http://localhost:8080/TddJsfWeb/static.xhtml");
}
}
解凍された .war は、解凍された .war フォルダーのルートにあります/Users/jbrains/ThirdParty/apache-tomcat-5.5.28-embed/webapps/TddJsfWeb/...。static.xhtml
どうか、どうか、私がどれほど愚かなのか見せてください。ありがとう。