為了完成web工程的測試,最近內嵌jetty也要搞起來.第一次搞還是挺焦頭爛額的.直接上成果:
package com.test.action; import java.io.File; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.nio.SelectChannelConnector; import org.eclipse.jetty.util.thread.QueuedThreadPool; import org.eclipse.jetty.webapp.WebAppContext; public class RunTest { public static void main(String[] args) { tt(); } public static void tt() { Server server = new Server();// 創建jetty web容器 server.setStopAtShutdown(true);// 在退出程序是關閉服務 // 創建連接器,每個連接器都是由IP地址和端口號組成,連接到連接器的連接將會被jetty處理 Connector connector = new SelectChannelConnector();// 創建一個連接器 connector.setHost("127.0.0.1");// ip地址 connector.setPort(8080);// 連接的端口號 server.addConnector(connector);// 添加連接 QueuedThreadPool threadPool = new QueuedThreadPool(); threadPool.setMaxThreads(3000); server.setThreadPool(threadPool); // 配置服務 WebAppContext context = new WebAppContext();// 創建服務上下文 context.setContextPath("/strutsDemo");// 訪問服務路徑 http://{ip}:{port}/ context.setConfigurationDiscovered(true); String baseDir = Thread.currentThread().getContextClassLoader() .getResource("").getPath(); context.setDescriptor(baseDir + File.separator + "/WEB-INF/web.xml");// 指明服務描述文件,就是web.xml // context.setDescriptor("/E:/workspace/strutsDemo/target/classes/\\/WEB-INF/web.xml");// // 指明服務描述文件,就是web.xml context.setResourceBase(System.getProperty("user.dir") + "/src/main/webapp/");// 指定服務的資源根路徑,配置文件的相對路徑與服務根路徑有關 server.setHandler(context);// 添加處理try { server.start();// 開啟服務 server.join(); } catch (Exception e) { e.printStackTrace(); System.exit(1); } } }
啟動訪問就可以了.主要是context的配置花了很多功夫,老是配不好.還有據說jetty版本或者jar包不同會有配置差異,我用的是8.0.4版本,順便貼上maven依賴:
<!--jetty --> <dependency> <groupId>org.eclipse.jetty.aggregate</groupId> <artifactId>jetty-all</artifactId> <version>8.0.4.v20111024</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-webapp</artifactId> <version>8.0.4.v20111024</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-server</artifactId> <version>8.0.4.v20111024</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-servlet</artifactId> <version>8.0.4.v20111024</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-deploy</artifactId> <version>8.0.4.v20111024</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-xml</artifactId> <version>8.0.4.v20111024</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-security</artifactId> <version>8.0.4.v20111024</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-client</artifactId> <version>8.0.4.v20111024</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-ajp</artifactId> <version>8.0.4.v20111024</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-annotations</artifactId> <version>8.0.4.v20111024</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-websocket</artifactId> <version>8.0.4.v20111024</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util</artifactId> <version>8.0.4.v20111024</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-io</artifactId> <version>8.0.4.v20111024</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-http</artifactId> <version>8.0.4.v20111024</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-continuation</artifactId> <version>8.0.4.v20111024</version> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jsp-2.1-glassfish</artifactId> <version>2.1.v20100127</version> </dependency>
事實上不需要這么多,我這是一勞永逸的偷懶做法,你們可以改進喲