JAVA里使用Jetty作为轻量级嵌入式的Web容器
来源:互联网 发布:bms核心算法 编辑:程序博客网 时间:2024/05/17 14:27
JAVA里使用Jetty作为轻量级嵌入式的Web容器
有时候,我们可能使用一个SOA服务,传递一些数据,但是我们又不想使用一些WebService服务,或者EJB重量级的JAVA EE框架,包括部署一个简单的Tomcat的Web服务,我们都不想去做,这时我们该用什么? jetty作为一个比tomcat还轻量级的servlet容器,可以以非常轻小的姿态,集成在我们的应用程序里面,甚至可以作为一个嵌入式的web容器来满足我们的一些需求,非常的方便。
下面散仙模拟一个,在一个机器上起了一个jetty服务,然后再另一个机器上通过使用jsoup访问http请求,得到测试数据,当然我们可以基于这个例子,改造出一些类似异构平台通信的服务,通过json或xml格式的数据,就可以使PHP,Python,Ruby,C#来访问JAVA处理完的数据,类似于轻量级的rest风格。
测试代码如下:
package com.qin.test;import java.util.concurrent.Executors;import org.eclipse.jetty.server.Connector;import org.eclipse.jetty.server.Server;import org.eclipse.jetty.server.handler.ContextHandler;import org.eclipse.jetty.server.handler.HandlerList;import org.eclipse.jetty.server.handler.ResourceHandler;import org.eclipse.jetty.server.nio.SelectChannelConnector;import org.eclipse.jetty.servlet.ServletContextHandler;import org.eclipse.jetty.servlet.ServletHolder;import org.eclipse.jetty.util.thread.ExecutorThreadPool;import org.eclipse.jetty.util.thread.ThreadPool; import com.qin.servlet.MyTestServlet;/** * @author qindongliang * * 启动jetty测试服务 * * * **/public class StartupServer {public static void main(String[] args)throws Exception {ResourceHandler resourceHandler = new ResourceHandler(); resourceHandler.setDirectoriesListed(true);resourceHandler.setResourceBase("data");resourceHandler.setStylesheet("");ContextHandler staticContextHandler = new ContextHandler();staticContextHandler.setContextPath("/data");//staticContextHandler.setContextPath("/files");staticContextHandler.setHandler(resourceHandler); //添加servlet支持ServletContextHandler servletContextHandler = new ServletContextHandler(ServletContextHandler.NO_SESSIONS);servletContextHandler.setContextPath("/"); /**可在下面依次添加多个servlet**/servletContextHandler.addServlet(new ServletHolder(new MyTestServlet()), "/show");//servletContextHandler.addServlet(new ServletHolder(new SpuSimilarityServlet()), "/spu");//servletContextHandler.addServlet(new ServletHolder(new SpuResultServlet()), "/search"); //servletContextHandler.addServlet(new ServletHolder(new AdminServlet()), "/db");HandlerList handlers = new HandlerList();handlers.addHandler(servletContextHandler);handlers.addHandler(staticContextHandler);int hosts=9999;//端口号Server server = new Server(hosts);// 设置线程池 ThreadPool threadPool = new ExecutorThreadPool(Executors.newFixedThreadPool(5));server.setThreadPool(threadPool); // 设置连接参数 Connector connector = new SelectChannelConnector(); // 设置监听端口 connector.setPort(hosts); // 为服务设置连接器 server.setConnectors(new Connector[] { connector }); server.setHandler(handlers);server.start();server.join(); }}
Servlet处代码
package com.qin.servlet;import java.io.IOException;import java.util.ArrayList;import java.util.List;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.google.gson.Gson;@WebServlet("/show")public class MyTestServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stubdoPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {List<String> list = new ArrayList<String>();list.add("A");list.add("中国");list.add("外国");Gson g = new Gson();//resp.setContentType("charset=utf-8");ServletOutputStream out = resp.getOutputStream();String json = g.toJson(list);out.write(json.getBytes());out.flush();out.close();}@Overrideprotected void doDelete(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {super.doDelete(req, resp);}@Overrideprotected void doPut(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {super.doPut(req, resp);}}
在另外一个机器上访问请求的代码:
package com.get.jetty;import org.jsoup.Connection;import org.jsoup.Connection.Method;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;/** * * @author qindongliang * 获取json数据 * * **/public class GetJettyData {public static void main(String[] args)throws Exception {//使用jsoup获取jetty连接Connection con=Jsoup.connect("http://localhost:9999/show").timeout(80000);con.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");Document doc=con.post();System.out.println(doc.text()); }}
打印的结果如下:
["A","中国","外国"]
至此,一个关于jetty API使用的小例子就完成了,使用的jar包截图如下:
最后,散仙把jar包打包上传,用的到的朋友可以测一下!
阅读全文
0 0
- JAVA里使用Jetty作为轻量级嵌入式的Web容器
- 使用jetty作为嵌入式web容器(部署war文件)
- 使用jetty作为嵌入式web容器(部署war文件)
- Spring Boot 使用 jetty 作为默认的Web容器
- Java使用Jetty实现嵌入式Web服务器及Servlet容器
- Java使用Jetty实现嵌入式Web服务器及Servlet容器
- Java使用Jetty实现嵌入式Web服务器及Servlet容器
- JETTY嵌入式Web容器的开发
- Java使用Jetty实现嵌入式的Servlet容器
- java web项目中集成Jetty作为web容器
- java web项目中集成Jetty作为web容器
- Jetty(6.1.3版本)-轻量级的web容器
- Jetty(6.1.3版本)-轻量级的web容器
- Jetty嵌入式Web容器攻略
- java 嵌入式的Web服务器jetty使用例子
- 使用Jetty作为嵌入式服务器
- main方法启动jetty java嵌入式web服务器jetty的使用
- Java Web 学习笔记之八:嵌入式web服务器Jetty的基本使用
- 深度学习之自编码器AutoEncoder
- ECMAScript6(18):Decorator修饰器
- <a href>里面带的超链接点不进去
- 手动缓存Retrofit+OkHttp响应体,不再局限于Get请求缓存
- 关于indexedDB的基本使用
- JAVA里使用Jetty作为轻量级嵌入式的Web容器
- shell之 2>&1
- python基础学习
- 前端常用函数(一)
- Android7.0 Notification控制
- Python之禅
- C语言 运算符
- python 使用MySQL数据库的实例代码
- iOS 跳转到系统指定设置界面