好吧,我完全卡住了。我想以嵌入式模式运行 Tomcat,这样我就可以测试应用程序而无需在单独的进程中运行服务器。我遗漏了一些简单、愚蠢但重要的东西,我需要你的帮助才能看到它。
此测试失败并出现 HTTP 错误 400,Bad Request。我试过 MemoryProtocolHandler、context.invoke(),...我不知道该怎么做。也许你看到了一些简单的东西。
package ca.jbrains.jsfunit.learning.test; import org.apache.catalina.Container; import org.apache.catalina.Context; import org.apache.catalina.Engine; import org.apache.catalina.connector.Connector; import org.apache.catalina.connector.Request; import org.apache.catalina.realm.MemoryRealm; import org.apache.catalina.startup.Embedded; import org.junit.After; import org.junit.Test; import com.gargoylesoftware.htmlunit.WebClient; public class LearnEmbeddedTomcatTest { private Embedded embedded; private Container host; private Engine engine; @Test public void deploySampleApplicationFromFileSystem() throws Exception { String tomcatPath = "/Users/jbrains/ThirdParty/apache-tomcat-5.5.28-embed"; // Create an embedded server embedded = new Embedded(); embedded.setCatalinaHome(tomcatPath); embedded.setRealm(new MemoryRealm()); // Create an engine engine = embedded.createEngine(); engine.setDefaultHost("localhost"); // Create a default virtual host host = embedded.createHost("localhost", tomcatPath + "/webapps"); engine.addChild(host); // Create an application context Context context = embedded.createContext("TddJsfWeb", tomcatPath + "/webapps/TddJsfWeb"); host.addChild(context); // Install the assembled container hierarchy embedded.addEngine(engine); // Assemble and install a default HTTP connector Connector connector = embedded.createConnector("localhost", 8080, "http"); embedded.addConnector(connector); // Start the embedded server embedded.setAwait(true); embedded.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 文件夹的根目录中。
拜托,拜托,让我看看我有多蠢。谢谢。
最佳答案
我在使用 Tomcat 时也有类似的经历。我最终改用 Jetty - 从代码的角度来看,管理起来要简单得多。
关于java - 嵌入 Tomcat 并向部署的应用程序发出请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2093457/