博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
嵌入式服务器jetty,让你更快开发web
阅读量:6148 次
发布时间:2019-06-21

本文共 4484 字,大约阅读时间需要 14 分钟。

概述

jetty是什么?

jetty是轻量级的web服务器和servlet引擎。

它的最大特点是:可以很方便的作为嵌入式服务器

它是eclipse的一个开源项目。不用怀疑,就是你常用的那个eclipse。

它是使用Java开发的,所以天然对Java支持良好。

什么是嵌入式服务器?

以jetty来说明,就是只要引入jetty的jar包,可以通过直接调用其API的方式来启动web服务。

用过Tomcat、Resin等服务器的朋友想必不会陌生那一套安装、配置、部署的流程吧,还是挺繁琐的。使用jetty,就不需要这些过程了。

jetty非常适用于项目的开发、测试,因为非常快捷。如果想用于生产环境,则需要谨慎考虑,它不一定能像成熟的Tomcat、Resin等服务器一样支持企业级Java EE的需要。

jetty的嵌入式启动

我觉得嵌入式启动方式的一个好处在于:可以直接运行项目,无需每次部署都得再配置服务器。

jetty的嵌入式启动使用有两种方式:

API方式

maven插件方式

API方式

添加maven依赖

org.eclipse.jetty
jetty-webapp
9.3.2.v20150730
test
org.eclipse.jetty
jetty-annotations
9.3.2.v20150730
test
org.eclipse.jetty
apache-jsp
9.3.2.v20150730
test
org.eclipse.jetty
apache-jstl
9.3.2.v20150730
test

官方的启动代码

public class SplitFileServer{    public static void main( String[] args ) throws Exception    {        // 创建Server对象,并绑定端口        Server server = new Server();        ServerConnector connector = new ServerConnector(server);        connector.setPort(8090);        server.setConnectors(new Connector[] { connector });        // 创建上下文句柄,绑定上下文路径。这样启动后的url就会是:http://host:port/context        ResourceHandler rh0 = new ResourceHandler();        ContextHandler context0 = new ContextHandler();        context0.setContextPath("/");              // 绑定测试资源目录(在本例的配置目录dir0的路径是src/test/resources/dir0)        File dir0 = MavenTestingUtils.getTestResourceDir("dir0");        context0.setBaseResource(Resource.newResource(dir0));        context0.setHandler(rh0);        // 和上面的例子一样        ResourceHandler rh1 = new ResourceHandler();        ContextHandler context1 = new ContextHandler();        context1.setContextPath("/");        File dir1 = MavenTestingUtils.getTestResourceDir("dir1");        context1.setBaseResource(Resource.newResource(dir1));        context1.setHandler(rh1);        // 绑定两个资源句柄        ContextHandlerCollection contexts = new ContextHandlerCollection();        contexts.setHandlers(new Handler[] { context0, context1 });        server.setHandler(contexts);        // 启动        server.start();        // 打印dump时的信息        System.out.println(server.dump());        // join当前线程        server.join();    }}

直接运行Main方法,就可以启动web服务。

注:以上代码在eclipse中运行没有问题,如果想在Intellij中运行还需要为它指定配置文件。

如果想了解在Eclipse和Intellij都能运行的通用方法可以参考我的github代码示例。

我的实现也是参考springside的方式。

代码行数有点多,不在这里贴代码了。

Maven插件方式

如果你熟悉maven,那么实在太简单了

注: Maven版本必须在3.3及以上版本。

(1) 添加maven插件

org.eclipse.jetty
jetty-maven-plugin
9.3.12.v20160915

(2) 执行maven命令:

mvn jetty:run

讲真,就是这么简单。jetty默认会为你创建一个web服务,地址为127.0.0.1:8080。

当然,你也可以在插件中配置你的webapp环境

org.eclipse.jetty
jetty-maven-plugin
9.3.12.v20160915
${project.basedir}/src/staticfiles
/
${project.basedir}/src/over/here/web.xml
${project.basedir}/src/over/here/jetty-env.xml
${project.basedir}/somewhere/else
**/Foo.class
src/mydir
src/myfile.txt
src/other-resources
**/*.xml
**/*.properties
**/myspecial.xml
**/myspecial.properties

官方给的jetty-env.xml范例

gargle
100
true
wiggle
55.0
true
jdbc/mydatasource99
org.apache.derby.jdbc.EmbeddedXADataSource
databaseName=testdb99;createDatabase=create
mydatasource99

参考

转载于:https://www.cnblogs.com/jingmoxukong/p/5948910.html

你可能感兴趣的文章
win7 vs2012/2013 编译boost 1.55
查看>>
IIS7如何显示详细错误信息
查看>>
Android打包常见错误之Export aborted because fatal lint errors were found
查看>>
Tar打包、压缩与解压缩到指定目录的方法
查看>>
配置spring上下文
查看>>
Python异步IO --- 轻松管理10k+并发连接
查看>>
Oracle中drop user和drop user cascade的区别
查看>>
登记申请汇总
查看>>
Office WORD如何取消开始工作右侧栏
查看>>
Android Jni调用浅述
查看>>
CodeCombat森林关卡Python代码
查看>>
第一个应用程序HelloWorld
查看>>
(二)Spring Boot 起步入门(翻译自Spring Boot官方教程文档)1.5.9.RELEASE
查看>>
Java并发编程73道面试题及答案
查看>>
企业级负载平衡简介(转)
查看>>
ICCV2017 论文浏览记录
查看>>
科技巨头的交通争夺战
查看>>
当中兴安卓手机遇上农行音频通用K宝 -- 卡在“正在通讯”,一直加载中
查看>>
Shell基础之-正则表达式
查看>>
JavaScript异步之Generator、async、await
查看>>