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