| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
jopen
10年前发布

J2EE打造可执行war包

1. 使用Jetty为嵌入式服务器; 2. 使用ant将web应用打包为runnable.war; 3. 命令行java -jar runnable.war启动web服务。

1.  下载jetty

注意: Jetty 9.x 需要 JDK 1.7 支持。下表是Jetty各版本状态一览。

版本 JDK版本
Servlet JSP 状态
9.0 1.7 3.0 (3.1 on branch) 2.2 稳定
8.x 1.6 3.0 2.2 成熟
7.x 1.5,
J2ME
2.5 2.1 成熟
6.x 1.4-1.5 2.5 2.0 过时

下载地址: http://download.eclipse.org/jetty/

2.   启动类

package net.codaview;    import java.io.File;  import java.net.URL;  import java.security.ProtectionDomain;    import org.eclipse.jetty.server.Server;  import org.eclipse.jetty.webapp.WebAppContext;    public class EmbeddedServer {        public static void main(String[] args) throws Exception {          int port = Integer.parseInt(System.getProperty("port", "8080"));          Server server = new Server(port);            ProtectionDomain domain = EmbeddedServer.class.getProtectionDomain();          URL warLocation = domain.getCodeSource().getLocation();            WebAppContext webapp = new WebAppContext();          webapp.setContextPath("/");          webapp.setDescriptor(warLocation.toExternalForm() + "/WEB-INF/web.xml");          webapp.setServer(server);          webapp.setWar(warLocation.toExternalForm());          String tempDir = new File(warLocation.getPath()).getParent() + "/tmp";          webapp.setTempDirectory(new File(tempDir));            server.setHandler(webapp);          server.start();          server.join();      }  }

 

3.   ant脚本

<project>      <target name="war">          <!-- web根路径 -->          <property name="webapp.dir" location="${basedir}/webapp" />          <!-- jetty  -->          <property name="jetty.dir" location="${basedir}/webapp/WEB-INF/jetty" />          <!-- 临时目录 ,放置打包过程中产生的文件 -->          <property name="temp.dir" location="${basedir}/temp" />            <!-- 创建临时目录 -->          <mkdir dir="${temp.dir}" />                    <!-- 拷贝web下所有文件到临时目录 -->          <copy todir="${temp.dir}">              <fileset dir="${webapp.dir}">                  <exclude name="WEB-INF/jetty/*" />                  <exclude name="WEB-INF/tmp/*" />              </fileset>          </copy>                    <!-- 解压jetty -->          <unjar dest="${temp.dir}">              <fileset dir="${jetty.dir}">                  <include name="jetty-continuation-7.6.9.v20130131.jar" />                  <include name="jetty-http-7.6.9.v20130131.jar" />                  <include name="jetty-io-7.6.9.v20130131.jar" />                  <include name="jetty-jmx-7.6.9.v20130131.jar" />                  <include name="jetty-security-7.6.9.v20130131.jar" />                  <include name="jetty-server-7.6.9.v20130131.jar" />                  <include name="jetty-servlet-7.6.9.v20130131.jar" />                  <include name="jetty-util-7.6.9.v20130131.jar" />                  <include name="jetty-webapp-7.6.9.v20130131.jar" />                  <include name="jetty-xml-7.6.9.v20130131.jar" />                  <include name="annotations-api-6.0.37.jar" />                  <include name="catalina-6.0.37.jar" />                  <include name="ecj-4.2.2.jar" />                  <include name="el-api-6.0.37.jar" />                  <include name="jasper-6.0.37.jar" />                  <include name="jasper-el-6.0.37.jar" />                  <include name="javax.servlet.jsp-api-2.2.1.jar" />                  <include name="jsp-api-6.0.37.jar" />                  <include name="juli-6.0.37.jar" />                  <include name="servlet-api-6.0.37.jar" />              </fileset>              <patternset>                  <exclude name="META-INF/**/*" />                  <exclude name="images/**/*" />                  <exclude name=".options" />                  <exclude name="about.html" />                  <exclude name="jetty-dir.css" />                  <exclude name="jdtCompilerAdapter.jar" />                  <exclude name="plugin*" />              </patternset>          </unjar>            <!-- 复制启动类 -->          <copy todir="${temp.dir}">              <fileset dir="${webapp.dir}/WEB-INF/classes" includes="net/codaview/EmbeddedServer.class" />          </copy>            <!-- 创建war包 -->          <war destfile="runnable.war" webxml="${webapp.dir}/web.xml">              <fileset dir="${temp.dir}" includes="**/*" />              <classes dir="${webapp.dir}/WEB-INF/classes" />              <lib dir="${webapp.dir}/WEB-INF/lib" />              <manifest>                  <attribute name="Main-Class" value="net.codaview.EmbeddedServer" />              </manifest>          </war>            <!-- 删除临时目录 -->          <delete dir="${temp.dir}" />      </target>  </project>

 

4. 运行

java -jar runnable.war

 

5. 来源 stackoverflow

 本文由用户 jopen 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1387967014812.html
J2EE Jetty 应用服务器