Jetty嵌入式web的war的发布方法[张振华-Jack]


一:直接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 >
                        <!-- 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
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张振华-Jack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值