博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jetty的使用
阅读量:6116 次
发布时间:2019-06-21

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

hot3.png

首先jetty是啥呢?Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。——百度百科

说白了,jetty可以像Tomcat一样让运行web应用。

有什么好处呢?jetty可以很方便的设置项目名和访问端口,在你需要启动多个项目的时候就很方便了。

怎么使用呢?接下来说说怎么在项目中嵌入jetty

首先是pom文件中需要添加:

org.eclipse.jetty
jetty-server
9.2.10.v20150310
log4j
log4j
org.eclipse.jetty
jetty-webapp
9.2.10.v20150310
log4j
log4j

其次是jetty的启动类:

/** *  *@description  *@auther panmingshuai *@time 2018年4月7日下午3:41:18 * */public class JettyServer {	private static final Logger LOGGER = Logger.getLogger(JettyServer.class);	private int port;	private String contextPath;	private String webappPath;	private Server server;	private WebAppContext webapp;	/**	 * 创建用于开发运行调试的Jetty Server, 以src/main/webapp为Web应用目录.	 */	public static void main(String[] args) {		JettyServer jettyServer = new JettyServer("/ps", "src/main/webapp", 81);		jettyServer.start();	}	public JettyServer(String contextPath, String webappPath, int port) {		if (StringUtils.isBlank(contextPath)) {			this.contextPath = "";		} else {			this.contextPath = contextPath;		}		if (StringUtils.isBlank(webappPath)) {			throw new IllegalArgumentException("webappPath is required");		} else {			this.webappPath = webappPath;		}		this.port = port;	}	public void start() {		if (null == server || server.isStopped()) {			doStart();		} else {			throw new IllegalStateException("JettyServer already started.");		}	}	private void doStart() {		if (!checkServerPortAvailable()) {			throw new IllegalStateException("Server port already in use: " + port);		}		server = new Server();		// 设置在JVM退出时关闭Jetty的钩子。		server.setStopAtShutdown(true);		// 这是http的连接器		ServerConnector connector = new ServerConnector(server);		connector.setPort(port);		// 解决Windows下重复启动Jetty居然不报告端口冲突的问题.		connector.setReuseAddress(false);		server.setConnectors(new Connector[] { connector });		webapp = new WebAppContext(webappPath, contextPath);		server.setHandler(webapp);		try {			long st = System.currentTimeMillis();			server.start();			long sp = System.currentTimeMillis() - st;			System.out.println("JettyServer " + Jetty.VERSION + " started: " + String.format("%.2f sec", sp / 1000D)					+ ",the port is ===" + port + "");			server.join();		} catch (Exception e) {			e.printStackTrace();			LOGGER.error("JettyServer started failed!");		}	}	private boolean checkServerPortAvailable() {		if (0 < port) {			ServerSocket ss = null;			try {				ss = new ServerSocket(port, 0, null);			} catch (Exception e) {				LOGGER.error("check serverPort failed", e);				return false;			} finally {				if (null != ss) {					try {						ss.close();					} catch (IOException e) {						LOGGER.error("close ServerSocket failed", e);					}				}			}		} else {			throw new IllegalArgumentException("Invalid port " + port);		}		return true;	}}

需要注意的是:JettyServer jettyServer = new JettyServer("/ps", "src/main/webapp", 81);这个方法中ps是你访问的项目名,81是访问端口,即你要访问项目的地址是:localhost:81/ps

转载于:https://my.oschina.net/u/3534905/blog/1790770

你可能感兴趣的文章
一起学微软Power BI系列-官方文档-入门指南(7)发布与共享-终结篇+完整PDF文档
查看>>
MVC 服务器文件下载
查看>>
【转】Arp的攻防实战
查看>>
1.5. mount
查看>>
7.3. cvs import
查看>>
五个对你有用的Everything搜索技巧
查看>>
LinuxMint 17.1 Cinnamon桌面窗口焦点bug
查看>>
WM8962 HPOUT 信号强度 时间周期
查看>>
[家里蹲大学数学杂志]第432期Hardy type inequalities
查看>>
Spring MVC 4.2 CORS 跨域访问
查看>>
小计生产数据库事故--缺少where的update
查看>>
谁偷走了我们的时间?
查看>>
[20170410]11G ora_sql_txt是否有效.txt
查看>>
CoreThink 之 Git 模块 v1.1.2 支持二级域名
查看>>
《Unity 3D人工智能编程》——第1章 人工智能导论
查看>>
《Linux 设备驱动开发详解(第2版)》——1.3 有操作系统时的设备驱动
查看>>
《数据库技术原理与应用教程(第2版)》——1.5 数据管理的变迁
查看>>
《CMOS集成电路后端设计与实战》——1.2 国内集成电路发展现状
查看>>
《拥抱机器人时代——Servo杂志中文精华合集》——第3章 智能连接:欢迎来到物联网的世界...
查看>>
微软 IIS 服务器的市场占有率接近 Apache
查看>>