1. 首先从Jetty的官方网站http://wiki.eclipse.org/Jetty/Starting/Downloads下载最新的Jetty,上面有两个版本7.x和8.x,7.x是运行在JDK5及以上版本,8.x是运行在JDK6及以上版本,这里我选择了8.0.4版本。
2. 解压压缩包到指定目录,且将其目录路径定义为${JETTY_HOME}
3. 启动Jetty服务
3.1 进入${JETTY_HOME}目录,然后运行“Java -jar start.jar”,就可以启动Jetty server了
3.2 打开浏览器,访问http://localhost:8080,此时可以看到Jetty的欢迎页面了。
4. Jetty配置
4.1 Jetty的配置文件都是放在${JETTY_HOME}/etc目录下;
4.2 通过${JETTY_HOME}/etc/jetty-webapps.xml文件,可以看出Jetty中默认将所有的web app都放在了${JETTY_HOME}/webapps 目录下;
4.3 在Jetty包中默认带了一个test.war的应用,可以${JETTY_HOME}/webapps目录下找到这个文件,在启动Jetty服务的时候默认已经部署了test.war应用。对于test.war文件,Jetty还定义了context文件,放在${JETTY_HOME}/contexts/test.xml,其中将contextPath定义成了“/”,这就是为什么默认访问http://localhost:8080/的时候为什么是访问test应用的原因了。
5 部署新的web应用程序
5.1 对于war包的部署,只需要将war文件放到${JETTY_HOME}/webapps目录下,然后就可以通过浏览器直接访问了;
5.2 对于web应用程序目录的部署,此时可以将web应用程序目录复制到${JETTY_HOME}/webapps/<myapp>目录下,然后在${JETTY_HOME}/contexts/<myapp>.xml文件,其中内容如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath">/myapp</Set>
<Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/myapp</Set>
</Configure>
重新启动Jetty服务,访问http://localhost:8080/myapp就可以看到新部署web应用程序了。
本人把war包放到webapps目录下,运行java -jar start.jar时报错
org.apache.jasper.JasperException: PWC6345: There is an error in invoking javac. A full JDK (not just JRE) is required
摸索了半天终于找到原因了。
我的JDK安装在D盘,JAVA_HOME 也指向安装目录,系统的PATH也设置了D:\JDK\bin
但是安装JDK的时候,安装程序会往C盘的系统目录拷贝Java的可执行文件,其中包括 java.exe,而使用 java -jar start.jar 来启动 Jetty 时则优先使用的是系统目录下的 java.exe ,这样 Jetty 的 JSP 解析器就无法正确获取 JDK 的安装目录而导致此问题发生。
解决的办法,退出 Jetty ,在系统目录下搜索 java.exe ,删掉它并重启 Jetty 即可。