好吧,我完全被卡住了。我想以嵌入式模式运行 Tomcat,这样我就可以测试应用程序,而无需在单独的进程中运行服务器。我错过了一些简单、愚蠢和重要的东西,我需要你的帮助才能看到它。
此测试失败,出现 HTTP 错误 400,错误请求。我试过 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;
公共类 LearnEmbeddedTomcatTest {
私有嵌入式嵌入式;
私有容器主机;
私人引擎引擎;
@测试
公共无效 deploySampleApplicationFromFileSystem() 抛出异常 {
String tomcatPath = "/Users/jbrains/ThirdParty/apache-tomcat-5.5.28-embed";
// 创建嵌入式服务器
嵌入式 = 新嵌入式();
嵌入式.setCatalinaHome(tomcatPath);
嵌入的.setRealm(new MemoryRealm());
// 创建引擎
引擎 = 嵌入式.createEngine();
engine.setDefaultHost("localhost");
// 创建一个默认的虚拟主机
host = embedded.createHost("localhost", tomcatPath + "/webapps");
engine.addChild(主机);
// 创建应用上下文
上下文上下文 = Embedded.createContext("TddJsfWeb", tomcatPath
+ "/webapps/TddJsfWeb");
主机.addChild(上下文);
// 安装组装好的容器层次结构
嵌入式.addEngine(引擎);
// 组装并安装一个默认的 HTTP 连接器
连接器连接器 = embedded.createConnector("localhost", 8080,
“http”);
嵌入式.addConnector(连接器);
// 启动嵌入式服务器
嵌入式.setAwait(true);
嵌入的.start();
WebClient webClient = new WebClient();
webClient.getPage("http://localhost:8080/TddJsfWeb/static.xhtml");
}
}
解压后的 .war 肯定位于解压/Users/jbrains/ThirdParty/apache-tomcat-5.5.28-embed/webapps/TddJsfWeb/...后static.xhtml的 .war 文件夹的根目录中。
拜托,拜托,让我看看我有多愚蠢。谢谢。