`
qindongliang1922
  • 浏览: 2171083 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117076
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125421
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59491
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71017
社区版块
存档分类
最新评论

JAVA里使用Jetty作为轻量级嵌入式的Web容器

    博客分类:
  • JAVA
 
阅读更多
有时候,我们可能使用一个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 {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doPost(req, resp);
	}

	@Override
	protected 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();
	}

	@Override
	protected void doDelete(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		super.doDelete(req, resp);
	}
	
	@Override
	protected 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包打包上传,用的到的朋友可以测一下!

  • 大小: 106.9 KB
  • 大小: 136.1 KB
分享到:
评论

相关推荐

    简单迅速的web容器 简单迅速的web容器 简单迅速的web容器

    "简单迅速的web容器"可能指的是一个轻量级、快速启动且易于部署的Web服务器解决方案,适合小型项目或开发测试环境。 在提供的文件列表中,我们有以下几个关键文件: 1. **EasyWebSvr.exe**:这很可能是一个可执行...

    java web开发部署神器--jetty插件

    在这种情况下,Jetty作为一个轻量级、快速且高度可配置的Web服务器和Servlet容器,成为了开发者们的另一种优秀选择。本文将深入探讨"java web开发部署神器--jetty插件",带你领略Jetty在Java Web开发中的魅力。 ...

    java jetty容器

    Java Jetty容器是一款轻量级、高性能的HTTP服务器和Servlet容器,与Apache Tomcat相似,但因其快速启动和较小的内存占用而广受开发者欢迎。Jetty由Eclipse基金会维护,是一个开源项目,其设计目标是提供一个简单、...

    jetty 嵌入式开发源码

    Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,它允许开发者将Web服务器直接嵌入到他们的应用中,从而提供了极大的灵活性和控制权。Jetty被广泛应用于各种项目,从小型微服务到大型分布式系统,都有其...

    jetty6 嵌入式使用

    Jetty 6是一款轻量级、高性能的Java Web服务器和Servlet容器,因其可嵌入式使用而备受开发者青睐。在Eclipse这样的集成开发环境中,你可以直接通过Starter类快速启动和运行Jetty服务,大大简化了Web应用的部署流程。...

    Jetty web服务器

    Jetty 是一个开源的servlet容器... Jetty 可以作为嵌入式服务器使用,Jetty的运行速度较快,而且是轻量级的,可以在Java中可以从test case中控制其运行。从而可以使自动化测试不再依赖外部环境,顺利实现自动化测试。

    jetty 8及依赖包

    Jetty 8是一款轻量级、高性能的Java Web服务器和HTTP服务器容器,广泛用于开发、测试和部署Web应用程序。这个压缩包包含Jetty 8版本的实现及其依赖库,是学习和理解Jetty工作原理,尤其是NIO(非阻塞I/O)和Servlet...

    基于jetty嵌入式容器的java性能分析工具,内嵌H2 database,以图表形式直观展.zip

    Jetty是一个轻量级、高效的嵌入式Java HTTP服务器和Servlet容器,它被广泛用于各种项目,从简单的HTTP服务到复杂的Web应用。本工具利用Jetty作为基础,提供了一种对Java应用性能进行深入洞察的方式。 该工具的核心...

    SpringBoot切换Tomcat容器,SpringBoot使用Jetty容器

    在Spring Boot框架中,开发者可以选择不同的嵌入式Web服务器作为应用程序的容器,其中最常见的是Tomcat和Jetty。本文将深入探讨如何在Spring Boot项目中从Tomcat切换到Jetty容器,以及这两个容器的特点和使用场景。 ...

    jetty嵌入Web编程多种实现方式案例

    Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,它允许开发者将Web服务器功能直接嵌入到Java应用程序中,无需外部服务器。本案例主要探讨Jetty在嵌入式Web编程中的多种实现方法,旨在帮助开发者更好地...

    Jetty 9 Servlet容器

    Jetty 9是一款轻量级、高性能且开源的Servlet容器,它主要负责处理基于Java Servlet规范的应用程序。作为Java服务的一部分,Jetty9为开发者提供了高效、稳定且灵活的平台来部署和运行Web应用程序。 首先,Jetty 9...

    容器jetty

    Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,它在开源社区中广受欢迎,尤其适用于嵌入式系统和分布式应用程序。标题中的"jetty-distribution-9.3.5.v20151012"指的是Jetty的一个发行版本,具体为9.3.5...

    利用Jetty服务器开发web应用例程

    总结一下,Jetty作为一个强大的Servlet容器,提供了轻量级、快速和灵活的Web应用开发环境。通过学习如何配置和运行Jetty服务器,以及如何注册和管理Servlet,你可以为你的Java Web应用打下坚实的基础。不断探索Jetty...

    jetty 容器

    Jetty容器是一款轻量级、高性能的开源Java Web服务器和HTTP服务器,主要被设计用于处理Web应用程序。它以其模块化架构、低内存占用和对Java Servlet及JSR-356(WebSocket)标准的支持而闻名。Jetty由Eclipse基金会...

    jetty嵌入式实例

    Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,它被广泛应用于各种规模的项目,特别是作为嵌入式服务器使用。嵌入式Jetty允许开发者直接在应用程序中启动和管理Web服务器,无需单独部署或运行独立的...

    jetty for java

    Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,它被广泛应用于各种规模的项目,从微型服务器到大型企业级应用。标题"jetty for java"表明我们将要探讨的是如何在Java环境中使用Jetty服务。描述中的...

    jetty嵌入式服务器实例大全

    Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,因其开源、小巧且易于集成的特点,被广泛应用于各种项目中。本实例大全将全面解析Jetty在不同场景下的使用,帮助你深入理解和掌握Jetty的特性。 1. **...

    jetty嵌入式Httpserver

    Jetty是一款轻量级、高性能的开源HTTP服务器和Servlet容器,它被广泛应用于各种Java Web应用的部署。作为一款嵌入式服务器,Jetty可以直接在应用程序中运行,无需单独的Web服务器进程,这使得它在分布式系统、微服务...

    轻量级J2EE企业应用实战

    Tomcat是Apache软件基金会的一个项目,而Jetty则是一个更轻量级的选择,通常被用于嵌入式场景。 本书还涵盖了J2EE应用的架构模式,包括贫血模型(Thin Model),这是一种将业务逻辑层(BL)和数据访问层(DAL)分离...

Global site tag (gtag.js) - Google Analytics