好吧,我完全被困住了。我想以嵌入式模式运行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()引发异常{
字符串tomcatPath =“ /Users/jbrains/ThirdParty/apache-tomcat-5.5.28-embed”;
//创建嵌入式服务器
Embedded =新的Embedded();
Embedded.setCatalinaHome(tomcatPath);
Embedded.setRealm(new MemoryRealm());
//创建引擎
引擎= Embedded.createEngine();
engine.setDefaultHost(“ localhost”);
//创建默认的虚拟主机
主机= Embedded.createHost(“ localhost”,tomcatPath +“ / webapps”);
engine.addChild(host);
//创建应用程序上下文
上下文上下文= Embedded.createContext(“ TddJsfWeb”,tomcatPath
+“ / webapps / TddJsfWeb”);
host.addChild(context);
//安装组装的容器层次结构
Embedded.addEngine(engine);
//组装并安装默认的HTTP连接器
连接器连接器= Embedded.createConnector(“ localhost”,8080,
“ http”);
Embedded.addConnector(connector);
//启动嵌入式服务器
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通过second Jetty。要运行Jetty,我需要做的是:
import java.awt.Desktop;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.bio.SocketConnector;
import org.mortbay.jetty.webapp.WebAppContext;
public class StartJetty {
public static void main(String[] args) throws Exception {
Server server = new Server();
SocketConnector connector = new SocketConnector();
// Set some timeout options to make debugging easier.
connector.setMaxIdleTime(1000 * 60 * 60);
connector.setSoLingerTime(-1);
connector.setPort(8081);
server.setConnectors(new Connector[] { connector });
WebAppContext bb = new WebAppContext();
bb.setServer(server);
bb.setContextPath("/");
bb.setWar("src/main/webapp");
server.addHandler(bb);
try {
System.out.println(">>> STARTING EMBEDDED JETTY SERVER, PRESS ANY
KEY TO STOP");
server.start();
//Launch browser
if (Desktop.isDesktopSupported())
if (Desktop.getDesktop().isSupported(Desktop.Action.BROWSE))
try {
Desktop.getDesktop().browse(new URI("http://localhost:8081/"));
}
catch (IOException ioe) {
ioe.printStackTrace();
}
catch (URISyntaxException use) {
use.printStackTrace();
}
System.in.read();
System.out.println(">>> STOPPING EMBEDDED JETTY SERVER");
server.stop();
server.join();
}
catch (Exception e) {
e.printStackTrace();
System.exit(100);
}
}
}