Jetty的简单使用示例

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);
}
}
}


项目结构图
[img]http://dl2.iteye.com/upload/attachment/0090/9491/71fce296-eb2d-3103-8239-152413e51ff5.png[/img]

主要代码来自:[url=http://szcs10138456.iteye.com/blog/1011072]jetty的使用[/url],在其基础上增加用户访问记录的[url=http://wiki.eclipse.org/Jetty/Tutorial/RequestLog]代码[/url]

相关阅读:
[url=http://wiki.eclipse.org/Jetty/]Jetty Documentation[/url]
[url=http://www.ibm.com/developerworks/cn/web/wa-lo-jetty/]实站Jetty[/url]
[url=http://www.ibm.com/developerworks/cn/java/j-lo-jetty/]Jetty 的工作原理以及与 Tomcat 的比较[/url]
[url=http://yangzc106.iteye.com/blog/1030438]jetty嵌入式配置总结[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jetty 是一个流行的 Java Web 服务器和 Servlet 容器,它也提供了对 WebSocket 的支持。下面是一个简单示例,展示了如何在 Jetty使用 WebSocket: 1. 首先,确保你已经在项目中添加了 Jetty 的依赖。可以通过 Maven 或者其他构建工具来添加依赖。这里以 Maven 为例,在 pom.xml 文件中添加以下代码: ```xml <dependencies> <dependency> <groupId>org.eclipse.jetty.websocket</groupId> <artifactId>websocket-server</artifactId> <version>xxx</version> </dependency> </dependencies> ``` 请将 `xxx` 替换为你所需的 Jetty 版本号。 2. 创建一个 WebSocketHandler 类来处理 WebSocket 请求。这个类需要继承自 Jetty 的 `WebSocketHandler` 类,并实现 `onWebSocketConnect`、`onWebSocketText` 和 `onWebSocketClose` 方法。例如: ```java import org.eclipse.jetty.websocket.api.*; import org.eclipse.jetty.websocket.api.annotations.*; import org.eclipse.jetty.websocket.server.*; @WebSocket public class MyWebSocketHandler extends WebSocketHandler { @Override public void configure(WebSocketServletFactory factory) { factory.register(MyWebSocketHandler.class); } @OnWebSocketConnect public void onConnect(Session session) { // 连接建立时触发 } @OnWebSocketText public void onText(Session session, String message) { // 接收到文本消息时触发 } @OnWebSocketClose public void onClose(Session session, int statusCode, String reason) { // 连接关闭时触发 } } ``` 3. 创建一个 Jetty 服务器并配置 WebSocketHandler。例如: ```java import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.HandlerList; public class WebSocketServer { public static void main(String[] args) throws Exception { Server server = new Server(8080); WebSocketHandler webSocketHandler = new MyWebSocketHandler(); HandlerList handlers = new HandlerList(); handlers.addHandler(webSocketHandler); server.setHandler(handlers); server.start(); server.join(); } } ``` 4. 启动服务器,你的 WebSocket 服务就可以在 `ws://localhost:8080/` 上监听连接请求并处理消息了。 这只是一个简单示例,你还可以根据自己的需求进行更复杂的定制和扩展。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值