转载请注明: 转载自 Life吧 本文永久链接地址: http://www.lifeba.org/arch/jetty_services_instal.html
Jetty 是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。
一、部署Jetty服务
1、内嵌Jetty方式
这里我们下载Jetty8版本,将下载的jar包(只需要这个all的jar包)加入到工程引用中。
http://repo1.maven.org/maven2/org/eclipse/jetty/aggregate/jetty-all/8.1.0.v20120127/jetty-all-8.1.0.v20120127.jar
在我们的App的Main方法中 加入下面代码
Server server = new Server(8080);
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
server.setHandler(context);
context.addServlet(new ServletHolder(new BpServlet()), "/GetBPCategories");
server.start();
server.join();
BpServlet类
public class BpServlet extends HttpServlet{
private static final long serialVersionUID = 1L;public BpServlet() {
}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//接受参数
String key = request.getParameter("keywords");
//业务逻辑
//
//返回内容
response.setCharacterEncoding("utf-8");
response.setStatus(HttpServletResponse.SC_OK);
PrintWriter out = response.getWriter();
out.print("Welcome to Lifeba");
out.flush();
out.close();
}
}
上面的方法绑定了Jetty的端口为8080,并且设置了/GetBPCategories的路径对应的为BpServlet的Servlet类。
启动程序后,可以通过http://localhost:8080/GetBPCategories 来访问。
2、独立服务部署
下载 Jetty6的版本,http://dist.codehaus.org/jetty/ jetty-6.1.26版本并解压。我们只需要将我们的web app 放置到 jetty/webapps下即可。
windows
a、简单启动
java -jar start.jar etc/jetty.xml
start.jar 后面内容是传递给start.jar的参数,多个参数用空格隔开。
参数内容可以有以下几种:
--help 查看帮助信息
--stop 停止服务,下节中会讲到
--version 查看当前jetty版本信息
其他:作为Jetty服务配置文件
我们看到上条命令指定参数内容为etc/jetty.xml,它实际指向一个服务配置文件,该文件是用来设置jetty服务启动的系统配置信息。比如监听端口,发布某个目录下面的web应用,jndi的配置等等。当然服务配置文件可以是多个,比如:
java -jar start.jar etc/jetty.xml etc/jetty-plus.xml
访问 http://localhost:8080/ 看到 Welcome to Jetty 6。
要停止的话执行直接关掉CMD窗口或CTRL+C即可。
b、监听方式启动和关闭
启动
java -DSTOP.PORT=8009 -DSTOP.KEY=secret -jar start.jar
关闭
java -DSTOP.PORT=8009 -DSTOP.KEY=secret -jar start.jar --stop
jetty启动后会在本地监听你指定的端口8009,并将在验证下次关闭命令的密码secret
c、Win32Wrapper工具启动服务
1)控制台方式:bin/Jetty-Service.exe
2)Window服务的方式
注册Windows服务
bin/Jetty-Service.exe --install jetty-service.conf
wrapper | Jetty6-Service installed.
安装成服务后,可以使用Window服务的方式运行jetty程序。
启动服务
Jetty-Service.exe --start jetty-service.conf
停止服务
Jetty-Service.exe --stop jetty-service.conf
注销服务
Jetty-Service.exe --remove jetty-service.conf
linux
启动 关不 重启 挂住 服务
bin/jetty.sh start stop restart supervise
检查配置
bin/jetty.sh check
二、调试Jetty的程序
Eclipse中启动Jetty
a、安装Eclipse Jetty插件
安装Jetty插件,通过Eclipse插件方式在线安装,参考jetty-and-eclipse-integration 文章。
插件地址:http://run-jetty-run.googlecode.com/svn/trunk/updatesite
b、Eclipse中的Run/Debug Configurations中定义一个Jetty Webapp。
启动的时候报了一个 java.lang.ExceptionInInitializerError异常。
com.sun.org.apache.commons.logging.LogConfigurationException java.lang.NullPointerException在jsf-impl.jar包下,JSF就是原先sun推荐的web开发架构,用这个jar包时,经常会抛异常。这里将将JAVAEE5的库 换为 将JAVAEE6,再次启动就正常了。
c、如果你使用的是MyEclipse,可以使用下面的配置来部署到jetty中。
配置好后和部署到tomcat的方法一样。
参考
http://loianegroner.com/2011/07/jetty-and-eclipse-integration/