首页 > 代码库 > Jetty嵌入式web的war的发布方法

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>
                      <!-- 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里面内容如下:
              












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