您的位置:首页 > 其它

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

2014-11-03 18:46 295 查看




一:直接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里面内容如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: