您的位置:首页 > 编程语言 > Java开发

Java使用Jetty实现嵌入式Web服务器及Servlet容器

2016-08-04 10:48 831 查看
Jetty是一个Java实现的开源的servlet容器,它既可以像Tomcat一样作为一个完整的Web服务器和Servlet容器,同时也可以嵌入在Java应用程序中,在Java程序中调用Jetty。

下面介绍如何在Java应用程序中嵌入Jetty。 

Jetty下载地址,本文写作时的最新版本是9.2.18.v20160721,下载jetty-distribution-9.2.18.v20160721.zip: 

https://www.eclipse.org/jetty/download.html

注意Jetty 9需要JDK 7+,如果使用JDK 6的话会出现错误:java.lang.UnsupportedClassVersionError: Unsupported major.minor version 51.0。 

在lib文件夹中找到下面五个jar文件: 

jetty-server-9.2.18.v20160721.jar

   jetty-io-9.2.18.v20160721.jar

  jetty-http-9.2.18.v20160721.jar

  jetty-util-9.2.18.v20160721.jar

  servlet-api-3.1.jar

测试如下:
public static void main(String[] args) throws Exception
{
Server server = new Server(8080);

ResourceHandler resourceHandler = new ResourceHandler();
resourceHandler.setResourceBase("D:/test");

server.setHandler(resourceHandler);

server.start();
server.join();
}
运行Java程序,Jetty服务器启动。此时在浏览器中访问http://localhost:8080就可以浏览D:/test文件夹中的html页面或者其他文件。但是只能访问静态页面,上面的程序无法支持Servlet/JSP。 

如果需要支持支持Servlet/JSP,需要

jetty-servlet-9.1.2.v20140210.jar 
  jetty-webapp-9.1.2.v20140210.jar 
  jetty-xml-9.1.2.v20140210.jar 
  jetty-security-9.1.2.v20140210.jar 
  以及lib/jsp文件夹中的jar包

public static void main(String[] args) throws Exception
{
Server server = new Server(8080);

WebAppContext webapp = new WebAppContext();
webapp.setResourceBase("E:/apache-tomcat-7.0.47/webapps/TVPlay");

server.setHandler(webapp);

server.start();
server.join();
}
设置一个Java Web应用程序的目录,访问http://localhost:8080,此时已经支持Servlet/JSP。 

另外还可以使用war文件:

public static void main(String[] args) throws Exception
{
Server server = new Server(8080);

WebAppContext webapp = new WebAppContext();
webapp.setWar("C:/TVPlay.war");

server.setHandler(webapp);

server.start();
server.join();
}
注意:在运行时可以会有以下的报错:

There
is an error in invoking javac. A full JDK (not just JRE) is required

解决办法:选中自己的项目右击->属性->Java构建路径->Add Library->JRE系统库->已安装JRE->添加(A),只需要将JRE从xxx\Java\jre切换到xxx\Java\jdk\jre路径即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: