发布于 2016-01-02 11:14:00 | 141 次阅读 | 评论: 0 | 来源: PHPERZ

这里有新鲜出炉的精品教程,程序狗速度看过来!

Jetty 开源的servlet容器

Jetty 是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。


一:直接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)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务