几年前,如果你不用EJB,很多人都用IDE+tomcat插件做web开发。 现在越来越多人使用jetty了。这不是简单地用Jetty替换tomcat,巧妙的地方在于我们可以直接用main函数在IDE里启动Jetty. 这样,你不需要配置IDE的server。不同于IDE+tomcat插件的方式需要两个project,web app和server project. 使用下面介绍的方式你只有一个java project就行. 开发环境更简单,debug也更方便,不需要remote debug的方式,jetty非常快,可以明显提高开发效率。
参考了网上的一些文章,整理了一下。本文以Eclipse作为IDE。最后有可以运行的示例代码下载,非常简单。
1. 建立Java project(不必是dynamic web project), 取个名字,比如jetty
2. 建立jetty目录及其子目录如图所示。 所有文件都可以在最后的附件里找到。略作一点说明:webdefault.xml通常不需要你改。它是web.xml之外的一个配置文件,配置一些公共属性。web app的文件,jsp之类的都放在web目录下。web.xml和index.jsp都是示例性质最简单的。lib目录下需要放一些jetty的jar包,也一样在附件里有
webapp内嵌的jetty容器启动类 org.mortbay.jetty.Server
package jetty;
2:
3: import org.mortbay.jetty.Connector;
4: import org.mortbay.jetty.Server;
5: import org.mortbay.jetty.nio.SelectChannelConnector;
6: import org.mortbay.jetty.webapp.WebAppContext;
7:
8: public class OneWebApp
9: {
10: public static void main(String[] args) throws Exception
11: {
12: String jetty_home = "jetty";
13: int port = 8020;
14:
15: Server server = new Server();
16:
17: Connector connector=new SelectChannelConnector();
18: connector.setPort(port);
19: server.addConnector(connector);
20:
21: WebAppContext webapp = new WebAppContext(jetty_home + "/web", "/jetty");
22: webapp.setDefaultsDescriptor(jetty_home+"/etc/webdefault.xml");
23:
24: server.setHandler(webapp);
25:
26: server.start();
27: //server.join();
28: }
} 可以run这个java文件,然后在浏览器里访问http://localhost:8020/jetty看结果。
(FEP的启动方式)BAT文件中: @echo on java -classpath ./WEB-INF/classes;./WEB-INF/lib/jetty-6.1.14.jar;./WEB-INF/lib/jetty-util-6.1.14.jar;./WEB-INF/lib/servlet-api-2.5-6.0.2.jar cn.wadata.hdc.fep.jetty.JettyServer ./WEB-INF/conf/application.properties pause 入口: public class JettyServer { public static void main(String[] args) throws Exception { Properties props = new Properties(); if(args.length > 0 && args[0]!= null) { props.load(new FileInputStream(args[0])); } int httpPort = Integer.valueOf(props.getProperty("HED.FEP.HTTP_PORT").trim()); // Jetty HTTP Servlet Server. Server server = new Server(); QueuedThreadPool threadPool = new QueuedThreadPool(); // 设置线程池 threadPool.setMaxThreads(500); server.setThreadPool(threadPool); // 设置连接参数 Connector connector = new SelectChannelConnector(); // 设置监听端口 connector.setPort(httpPort); // 为服务设置连接器 server.setConnectors(new Connector[] { connector }); WebAppContext context = new WebAppContext(); // 访问的路径 context.setContextPath("/fep"); // 启动的位置 context.setWar("."); server.addHandler(context); server.setStopAtShutdown(true); server.setSendServerVersion(true); server.start(); // 将服务添加到连接池中 server.join(); } } // 设置在JVM退出时关闭Jetty。server.setStopAtShutdown(true); System.exit(0); 在线文档查看: http://www.boyunjian.com/javadoc/org.apache.servicemix.bundles/org.apache.servicemix.bundles.jetty/6.1.26_4/_/org/mortbay/jetty/security/SslSocketConnector.html
转载于:https://blog.51cto.com/kasimoyv5/1670818