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


一:直接war的发布启动方式:
1)Runner的类内容如下:注意一定要在根目录,但是个人觉得不一定
import java.io.File;
import java.net.URL;
import java.security.ProtectionDomain;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.nio.NetworkTrafficSelectChannelConnector;
import org.eclipse.jetty.util.thread.QueuedThreadPool;
import org.eclipse.jetty.webapp.WebAppContext;
public class Runner {
public static void main(String[] args) throws Exception {
String jettyVersion = Server.getVersion();
final int 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 = new NetworkTrafficSelectChannelConnector();
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 >
<!-- insertjettyclass(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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值