Jetty嵌入式web的war的发布方法

直接war的发布启动方式: 

1)Runner的类内容如下:注意一定要在根目录,但是个人觉得不一定import java.io.File; import java.net.URL; import java.security.ProtectionDomain;import org.eclipse.jetty.server.Server; importorg.eclipse.jetty.server.nio.NetworkTrafficSelectChannelConnector; importorg.eclipse.jetty.util.thread.QueuedThreadPool; importorg.eclipse.jetty.webapp.WebAppContext; public class Runner { public static voidmain(String[] args) throws Exception { String jettyVersion = Server. getVersion(); finalint port = Integer.parseInt (System.getProperty( "port", "8088")); ProtectionDomain protectionDomain = Runner.class.getProtectionDomain(); URL location = protectionDomain.getCodeSource().getLocation(); String warFile = location.toExternalForm(); String currentDir = new File(location.getPath()).getParent(); File workDir = new File(currentDir, "work" ); System.out.println("##########jettyVersion=" + jettyVersion); System.out.println("##########port=" + port); System. out.println("##########currentDir=" + currentDir); System. out.println("##########workDir=" + workDir); System.out.println("##########warFile=" + warFile); WebAppContext webapp = new WebAppContext(); webapp.setContextPath( "/"); // webapp.setResourceBase("."); webapp.setTempDirectory(workDir); // webapp.setClassLoader(Thread.currentThread().getContextClassLoader()); webapp.setWar(warFile); NetworkTrafficSelectChannelConnector connector = newNetworkTrafficSelectChannelConnector(); connector.setPort(port); connector.setMaxIdleTime(60000); connector.setRequestHeaderSize(10240); connector.setSoLingerTime(-1); connector.setThreadPool( new QueuedThreadPool(1024)); Server server = new Server(); server.addConnector(connector); server.setHandler(webapp); server.start(); server.join(); } } 

2)运行方式: 1:java -jar tdt-web-0.0.1-SNAPSHOT-fat.war 2:mvn jetty:run; 3:直接用运行上面的类的main方法,但是要注意war的路径和lib的路径; 

3)需要注意的是将所有依赖的jar加进去; <dependency> <groupId> org.eclipse.jetty.orbit</groupId > <artifactId> javax.servlet</artifactId > <version> 3.0.0.v201112011016</version > <scope> provided</ scope> </dependency> <dependency> <groupId> org.eclipse.jetty</groupId > <artifactId> jetty-server </artifactId> <version> ${jetty.version}</version > <scope> provided</ scope> </dependency> <dependency> <groupId> org.eclipse.jetty</groupId > <artifactId> jetty-webapp</artifactId> <version> ${jetty.version}</version > <scope> provided</ scope> </dependency> <dependency> <groupId> org.eclipse.jetty.orbit</groupId > <artifactId> org.apache.jasper.glassfish</artifactId > <version> 2.2.2.v201112011158</version > <scope> provided</ scope> </dependency> <dependency> <groupId> org.eclipse.jetty.orbit</groupId > <artifactId> javax.el</ artifactId> <version> 2.2.0.v201108011116</version > <scope> provided</ scope> </dependency> 

<dependency> <groupId> javax.servlet</groupId > <artifactId> servlet-api</artifactId> <version> 2.5</ version> <scope> provided</ scope> </dependency> 

4)war的打包方式如下:<!-- jetty --> <plugin> <groupId> org.mortbay.jetty</groupId > <artifactId> jetty-maven-plugin</artifactId > <configuration> <webAppSourceDirectory> ${basedir}/src/webapp</webAppSourceDirectory > <webAppConfig> <contextPath> /</ contextPath> <descriptor> ${basedir}/src/webapp/WEB-INF/web.xml</descriptor > </webAppConfig> <classesDirectory> ${basedir}/target/classes</classesDirectory > <connectors> <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector" > <port> 8088</ port> <maxIdleTime> 60000</ maxIdleTime> </connector> </connectors> </configuration> </plugin> <!-- insert jetty class(compiler) --> <plugin> <groupId> org.apache.maven.plugins</groupId > <artifactId> maven-war-plugin</artifactId> <version> 2.3</ version> <configuration> <archive> <manifest> <mainClass> Runner</ mainClass> <!-- <addClasspath>true</addClasspath> --> </manifest> </archive> </configuration> </plugin> <plugin> <groupId> org.apache.maven.plugins</groupId > <artifactId> maven-antrun-plugin</artifactId > <version> 1.7</ version> <executions> <execution> <id> main-class-placement</id > <phase> prepare-package</phase > <configuration> <target> <move todir="${project.build.directory}/${project.artifactId}-${project.version}-${package.environment}/" > <fileset dir="${project.build.directory}/classes/" > <include name="Runner.class" /> </fileset> </move> </target> </configuration> <goals> <goal> run</ goal> </goals> </execution> </executions> </plugin> <plugin> <groupId> org.apache.maven.plugins</groupId > <artifactId> maven-dependency-plugin</artifactId> <version> 2.5.1</ version> <executions> <execution> <id> jetty-classpath</id> <phase> prepare-package</phase > <goals> <goal> unpack-dependencies</goal > </goals> <configuration> <includeGroupIds> org.eclipse.jetty, org.eclipse.jetty.orbit</ includeGroupIds> <includeScope> provided</ includeScope> <!-- remove some files in order to decrease size --> <excludes> *, about_files/*, META-INF/*</excludes> <outputDirectory> ${project.build.directory}/${project.artifactId}-${project.version}-${package.environment}/ </outputDirectory> </configuration> </execution> </executions> </plugin> 

5)打包好的war里面内容如下:


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值