package cn.com.songjy.jetty;
import java.io.BufferedInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Handler;
import org.mortbay.jetty.NCSARequestLog;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.handler.ContextHandlerCollection;
import org.mortbay.jetty.handler.DefaultHandler;
import org.mortbay.jetty.handler.HandlerCollection;
import org.mortbay.jetty.handler.RequestLogHandler;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.webapp.WebAppContext;
import org.mortbay.xml.XmlConfiguration;
import org.xml.sax.SAXException;
public class JettyDemo {
private static final Log log = LogFactory.getLog(JettyDemo.class);
private static final Properties config = new Properties();
static {
BufferedInputStream bufferedInputStream = null;
try {
bufferedInputStream = new BufferedInputStream(JettyDemo.class
.getClassLoader().getResourceAsStream("jetty.properties"));
config.load(bufferedInputStream);
} catch (IOException e) {
log.error(e.getMessage(), e);
} finally {
try {
if(null != bufferedInputStream)
bufferedInputStream.close();
} catch (IOException e) {
log.error(e.getMessage(), e);
}
}
}
public static void main(String[] args) throws Exception {
jetty_start();
}
public static void start_jetty() throws SAXException, IOException,
FileNotFoundException, Exception {
Server server = new Server();
// 指定自定义的jetty.xml路径
XmlConfiguration configuration = new XmlConfiguration(Server.class
.getClassLoader().getResourceAsStream(
config.getProperty("jetty.xml")));
configuration.configure(server);
server.start();
}
public static void jetty_start() {
try {
String jetty_home = "demo";// 这个就是你的项目发布时候的名字
//用户访问记录
HandlerCollection handlers = new HandlerCollection();
ContextHandlerCollection contexts = new ContextHandlerCollection();
RequestLogHandler requestLogHandler = new RequestLogHandler();
handlers.setHandlers(new Handler[]{contexts,new DefaultHandler(),requestLogHandler});
NCSARequestLog requestLog = new NCSARequestLog("./target/jetty-yyyy_mm_dd.request.log");
requestLog.setRetainDays(90);
requestLog.setAppend(true);
requestLog.setExtended(false);
requestLog.setLogTimeZone("GMT");
requestLogHandler.setRequestLog(requestLog);
Server server = new Server();
Connector connector = new SelectChannelConnector();
connector
.setPort(Integer.parseInt(config.getProperty("jetty.port")));
server.setConnectors(new Connector[] { connector });
WebAppContext webapp = new WebAppContext();
webapp.setContextPath("/" + jetty_home);// 上下文路径 比如说/demo
// webapp.setResourceBase("./WebRoot");// 你的资源文件所在的路径 一般都在这下面
webapp.setResourceBase(config.getProperty("resourceBase"));
// webapp.setDefaultsDescriptor("./WebRoot/etc/webdefault.xml");
webapp.setDefaultsDescriptor(config.getProperty("webdefault.xml"));
server.setHandler(webapp);
server.addHandler(handlers);
server.start();
server.join();
} catch (InterruptedException e) {
log.error(e.getMessage(), e);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
}
项目结构图
主要代码来自:
jetty的使用,在其基础上增加用户访问记录的
代码
相关阅读:
Jetty Documentation
实站Jetty
Jetty 的工作原理以及与 Tomcat 的比较
jetty嵌入式配置总结
- 描述: 项目结构图
- 大小: 28.8 KB
分享到:
相关推荐
以下是一个简单的`build.gradle`示例: ```groovy plugins { id 'java' id 'war' id 'org.gradle.jetty.jetty-runner' version '9.4.38.v20210224' } dependencies { implementation 'javax.servlet:servlet-...
【标题】:“Jetty整合SpringMVC例子” 在Java Web开发中,Jetty是一个轻量级、高性能的HTTP服务器和Servlet容器,而SpringMVC是Spring框架的一部分,用于构建MVC模式的Web应用。将Jetty与SpringMVC整合可以实现...
这个压缩包文件提供的可能是一个简单的Jetty使用示例,帮助初学者理解如何在Eclipse环境中配置和运行Jetty。 首先,让我们深入了解一下Jetty。Jetty是开源的,由Eclipse基金会维护,符合Java Servlet和JSP规范。它...
下面是一个简单的示例代码,展示了如何在Android应用中启动Jetty服务器并加载`example-webapps`目录中的内容: ```java import org.eclipse.jetty.server.Server; import org.eclipse.jetty.webapp.WebAppContext; ...
下载后的Jetty压缩包,如`jetty-hightide-7.0.1.v20091125`,通常包含服务器运行所需的全部文件,包括Jetty服务器本身、配置文件、示例和文档。解压后,你可以根据提供的启动脚本来启动Jetty服务。 5. **配置与...
在本文中,我们将深入探讨如何使用Jetty 8实现WebSocket技术来构建一个实时通信的聊天工具。WebSocket协议是一种在客户端和服务器之间建立长连接的协议,它为双向通信提供了低延迟、高效的解决方案,特别适合实时...
以下是一个简单的示例代码片段,展示了如何创建一个监听8080端口的Server对象,设置一个默认Handler,并使用XML配置文件(如`jetty.xml`)初始化和启动服务器: ```java public class JettyServer { public static...
- **jetty.xml示例剖析**:展示了如何通过XML配置Jetty的各种设置。 - **Jetty XML Configuration语法**:讲解XML配置文件的语法规则。 - **org.mortbay.xml.XmlConfiguration**:介绍使用该类来读取和应用XML...
在这个简单的Jetty入门示例中,你可能会学到如何创建一个简单的Servlet,如何处理HTTP GET和POST请求,以及如何通过Jetty API或配置文件来启动和停止服务器。此外,还会涉及如何使用Jetty的嵌入式模式,即直接在应用...
- 使用旧版本的`maven-jetty-plugin`可能会导致某些新特性无法使用或与其他库冲突,因此保持插件更新是很重要的。 6. 结论: `maven-jetty-plugin`简化了Java Web应用的开发和测试过程,通过Maven的命令行即可...
在开发阶段,使用Jetty可以实现快速的迭代和调试,因为它可以直接运行在开发环境中,无需部署到专门的服务器上。 **Struts2 + Maven + Jetty 实例** 在Java Webapp开发中,结合Struts2、Maven和Jetty,可以实现高效...
7. **myJettyDemo**:这是一个可能的项目或演示文件,包含了一个内嵌Jetty服务器的示例。通过对这个文件的分析和运行,可以直观地学习到如何在实际项目中应用内嵌Jetty。 在实际操作中,你可能需要做以下步骤: 1....
以下是一个简单的示例: ```java import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; public class ...
10. **社区支持**:Jetty有一个活跃的开源社区,提供了丰富的文档、示例和问题解答,有助于开发者快速解决问题。 在提供的压缩包中,"read-Me.text"可能包含了关于如何安装和使用Jetty 8.0的说明,包括配置、启动和...
本实战项目旨在帮助初学者快速掌握Jetty的嵌入式使用方法,通过实例化和配置Jetty服务器,实现Web应用的快速启动和运行。 1. **Jetty简介** - Jetty是一个开源的HTTP服务器和Servlet容器,它遵循Java Servlet和JSR...
文档《Jetty6_指南书》可能包含了Jetty 6版本的详细使用教程、配置示例和常见问题解答。虽然Jetty已经发展到了更高版本,但早期版本的学习资料依然有价值,特别是对于理解Jetty的基础概念和核心原理。 总结来说,...
在这个“用jetty8.0写的websocket实现的简单聊天程序”中,我们将深入探讨如何利用Jetty 8.0这个轻量级、高性能的Java Web服务器和Servlet容器来构建WebSocket应用。 Jetty是一个开源的HTTP服务器和Servlet容器,...
一个简单的例子如下: ```xml <groupId>org.mortbay.jetty <artifactId>maven-jetty-plugin <version>6.1.26 <scanIntervalSeconds>10 <contextPath>/your-context-path ``` 这段配置将...
安装Jetty非常简单,只需要解压下载的压缩包即可。对于Windows用户,还可以选择使用Jetty的安装程序进行安装。 **2.3 使用java命令启动** - **2.3.1 快速启动**:可以通过执行`java -jar start.jar`来快速启动...