jetty实例

 

jetty实例

package com.jetty;

import java.io.IOException;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.eclipse.jetty.continuation.Continuation;
import org.eclipse.jetty.continuation.ContinuationSupport;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.AbstractHandler;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
import org.eclipse.jetty.util.thread.QueuedThreadPool;

import com.annotation.HBean;
import com.annotation.annoBean.AnnotationBeanLoader;

public class JettyServer {
	
	private final ExecutorService es = Executors.newCachedThreadPool();
	
	public void start(String host,int port) throws Exception{
		Server server = new Server();//服务
		//TCP监听
		SelectChannelConnector appBeanConn = new SelectChannelConnector();
		appBeanConn.setUseDirectBuffers(false);
		
		appBeanConn.setHost(host);
		appBeanConn.setPort(port);
		appBeanConn.setThreadPool(new QueuedThreadPool(20));
		appBeanConn.setName("appBeans");
		
		server.addConnector(appBeanConn);
		//处理类
		server.setHandler(new HttpAppBeanHandler());
		server.start();
		server.join();
	}
	
	
	private class HttpAppBeanHandler extends AbstractHandler{

		private static final String CALLTYPE = "calltype";
		
		Map<String, Class<HBean>> map;
		
		public HttpAppBeanHandler() throws Exception{
			map = AnnotationBeanLoader.loadHandlerBean(); 
		}
		
		public void invokeBean(String id,HttpServletRequest request,HttpServletResponse response) throws InstantiationException, IllegalAccessException{
			HBean bean = map.get(id).newInstance();//获取bean
			bean.init(request,response);//初始化bean
			bean.response(request,response);//相应bean
		}
		
		@Override
		public void handle(String str, final Request baseRequest, final HttpServletRequest request,
				final HttpServletResponse response) throws IOException, ServletException {

//			String method = request.getMethod();
			final String callType = (String) request.getAttribute(CALLTYPE);
			
			final Continuation continuation = ContinuationSupport.getContinuation(request);
			if(continuation.isExpired()){
				response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"http bean invocation timeout");
				Future<?> f = (Future<?>) request.getAttribute("KEY_INVOCATION_FUTURN");
				if(f != null)
					f.cancel(true);
			}else{
				continuation.setTimeout(1000*3);
				continuation.suspend(response);
				
				Future<?> f = es.submit(new Runnable() {
					@Override
					public void run() {
						try {
							invokeBean(callType, request, response);
						} catch (InstantiationException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						} catch (IllegalAccessException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						continuation.complete();
					}//run
				});//future
			}
			
		}
		
	}

}

 

server使用httphandler,在handler中根据请求id,分发到处理业务的实体bean接口上

/**
 * 处理实体类接口
 * @author y
 */
public interface HBean {
	/**
	 * 初始化bean
	 * @param request
	 * @param response
	 */
	void init(HttpServletRequest request,HttpServletResponse response);
	/**
	 * 相应
	 * @param request
	 * @param response
	 */
	void response(HttpServletRequest request,HttpServletResponse response);
}

 

实体bean用注释作为id区分,加载获取指定目录下的所有类,用注释“包名”-“id"作为实体bean的id

/**
 * 定义处理bean的ID注解
 * 包含ID前缀包,ID名称
 * ID前缀包默认值"com.dz"
 * @author y
 */
@Target(ElementType.TYPE)//放在哪
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface HBID {
	public String id();
	public String catalog() default "com.dz";
}

 

加载子类目录 http://blackproof.iteye.com/blog/2015036

jetty的continuation分析 http://blog.youkuaiyun.com/kobejayandy/article/details/11874353

 

 

 

 

以CTF题为例,浅学一些JAVAweb项目相关知识 本文更加偏重于学习题目有关的JAVA知识,而非解题思路,题目的解题与本文讲到的知识点大多无关。但是通过题目学习这些知识可以帮助理解JAVA中web服务和数据库连接的实现,知道了JAVA如何启动服务以及如何连接数据库,这是以后进行JAVA安全学习的前提和基础。本人大一,比较菜且基础薄弱,如有错误还望大佬指点。 阅读详情

相关推荐

Jetty实例包

完整的Jetty发布实例,是JAVA PROJECT,下载能直接运行。

Jetty的简单使用示例

[code="java"]package cn.com.songjy.jetty; import java.io.BufferedInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties; import org.apache....

sjy_2010的专栏 208

Jetty Demo

Hello Jetty 入门简单实例!可直接运行!

Jetty简单例子

本来没打算写博客的,但是想着知识是由每天的一点点积累来的,所以还是写一下吧! 今天我来介绍一下jetty的一个小例子! 下载jetty源码:http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.0.v20161208/jetty-distribution-9.4.0.v20161208.zip 创建一个ja

sunnyliqian的博客 5890

Jetty内嵌服务器实例

jetty服务器内嵌实例,运行JettTest后即可访问

SDM量化噪声等效到PLL输出的传递函数推导

在历年文章或书本中少见SDM量化噪声等效到PLL输出的传递函数推导。需了解SDM量化噪声的本质,配合欧拉方程简化,并将Z域转化成S域。最终结合断环处等效到PLL输出的传递函数,方可完成。

u010486560的博客 1409

jetty多实例部署

1、windows下   win下部署多个jetty8很简单,首先将jetty8复制多个文件夹,其次按分配的端口号修改[JETTY_HOME]/etc/jetty.xml和jetty-proxy.xml。如该文件夹下的jetty分配8888端口      jetty.xml ==============================================

Daniel的专栏 3845

DSP28335新手避坑指南:手把手教你用CCS6.2生成10KHz SPWM(附完整工程)

本文详细介绍了如何使用DSP28335开发板和CCS6.2环境生成10KHz SPWM波形的完整工程指南。从开发环境配置、ePWM模块设置到SPWM算法实现,特别针对新手常见问题提供了解决方案和调试技巧,帮助工程师快速掌握DSP28335的SPWM生成技术。

weixin_42522374的博客 182

jetty8多个实例同时运行的配置

jetty9开始支持standalone方式,可以互不影响的运行多个实例,但如果是jetty8的情况下,则比较因难 本人是在centos6+jdk1.7+jetty8的情况下,想运行多个jetty实例,但网上找到的各种说法不靠谱,最终测试发现,jetty8不能运行多个实例的罪魁祸手,是因为jetty.sh在运行时会检测JETTY_PID和JETTY_STATE两个变量是否存在,存在则不运行,所以...

feiying00544的博客 758

图像去雾常见数据集

上述数据集涵盖了室内、室外、真实和合成等多种场景,可以满足不同研究需求。在选择数据集时,建议根据具体任务的应用场景和目标选择合适的数据集,例如真实雾天图像适合模型的实际应用验证,而合成数据则适合模型的快速迭代和训练。希望本文能为从事图像去雾研究的朋友提供一些帮助!

m0_68604571的博客 6336

tcmalloc(高并发内存池)简化版讲解-项目

高清发不上去,私我发高清,项目完整代码@我。

2201_75352618的博客 910

centos7 jetty9 多实例 war包部署

1、下载.zip文件 如:jetty-distribution-9.4.8.v20171121.zip2、执行解压命令:  unzip jetty-distribution-9.4.8.v20171121.zip3、移动到jetty 的安装目录: mv jetty-distribution-9.4.8.v20171121 /data/soft/jetty4、在jetty的根目录下创建work目录 ...

hysxchina的博客 1572

STM32G4系列数字LLC控制程序开发实战

本文详细介绍了基于STM32G4系列MCU的数字LLC控制程序开发全流程。从开发环境搭建、中断服务函数设计,到核心的电压环PID算法、Burst模式控制、状态机设计以及软启动优化,提供了完整的实战代码和关键参数调试经验,帮助开发者高效实现高性能数字电源控制。

weixin_29185493的博客 281

Jetty 学习实例 例子 详解

package cn.cstnet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet

洪文聊架构 2945

(持续更新中!)详解【计算机类&面试真题】军队文职考试 ——第二期(真题+解析)| 网络协议的三个核心要素;交互式系统中的非剥夺策略;中断和陷入的区别;可变分区管理中的硬件机制;数据库系统的优点

本篇博客将讨论军队文职面试(计算机类)的几个关键问题。我们将介绍网络协议的核心要素(帮助你理解网络通信的基本原理)、交互式系统中的非剥夺策略(解释为何这是一个优秀的策略以及其对用户体验、系统稳定性和可预测性的影响)、中断和陷入的区别(从引起原因、处理机制、权限级别和应用等方面进行阐述)、可变分区管理的硬件机制以及数据库系统与文件系统的优点比较。通过阅读本文,您将深入了解这些话题,为面试准备和实际应用提供有价值的知识。

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 1707

NXP S32k3 MCAL EMIOS PWM配置

NXP s32k 配置 EMIOS PWM

Leon_0125的博客 2702

jetty的安装与配置 多实例

1 安装jdk 因为Tomcat的安装需要jdk里面的一些包的支持,所以先安装jdk。我们先到sun公司的jdk官网下载相应的版本到本地主机,再用xftp传输到虚拟机中的/usr/local/src目录。 jdk-8u144-linux-x64.tar.gz 官网下载地址 http://www...

chuyihuan7890的博客 286

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jetty java 实例_Maven+Jetty+Servlet 简单示例

一个朋友让我帮他写一个基于 Servlet +Jetty+Derby 实现的项目。本文先介绍 Maven+Jetty+Servlet 的整合例子。1、添加依赖pom.xml 里添加依赖javax.servletjavax.servlet-api3.1.0org.eclipse.jetty9.4.14.v20181114jetty-webapp2、准备两个 Servlet 例子HelloServle...

weixin_36431489的博客 328

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

jetty java 实例_深入jetty的使用详解-JAVA程序实例

本次的JAVA程序实例讲述了深入jetty的使用详解,通过具体的实例让大家从中了解,希望对大家学习JAVA程序实例有所帮助。简介:Jetty 是一个用 Java 实现、开源、基于标准的,并且具有丰富功能的 Http 服务器和 Web 容器,可以免费的用于商业行为。Jetty 这个项目成立于 1995 年,现在已经有非常多的成功产品基于 Jetty,比如 Apache Geromino, JBos...

weixin_35726374的博客 520

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Jetty嵌入式容器开发实例

Jetty可以方便的作为嵌入式容器,在Java应用程序中运行,并方便的实现与程序中其他组件的通信。下面是一个例子程序: 1、主程序分成两部分,前面部分启动了100个Jetty应用,其端口号从8080到8179。在访问Jetty应用时,Jetty应用将会向一个队列中插入消息。主程序的后部分从消息队列中获取消息,并输出。public class Hello { public static

刘展辰的专栏 2648

ESP32 OTA升级防变砖:双分区与自动回滚实战指南

在嵌入式系统开发中,固件升级的可靠性与设备容错能力是保障远程维护的关键。ESP32 通过 ROM Bootloader 和分区表机制,实现了双分区 OTA 升级与自动回滚功能,其原理在于利用 otadata 记录启动分区状态,并在新固件启动失败时自动切换回旧版本。这一技术显著降低了现场维护成本,适用于智能家居、工业物联网等需要远程升级的场景。本文将深入解析 ESP32 双分区配置、回滚触发条件及实战避坑经验,帮助开发者构建高可靠的 OTA 方案。

weixin_34378767的博客 341

jetty java 实例_深入jetty的使用详解

简介: Jetty 是一个用 Java 实现、开源、基于标准的,并且具有丰富功能的 Http 服务器和 Web 容器,可以免费的用于商业行为。Jetty 这个项目成立于 1995 年,现在已经有非常多的成功产品基于 Jetty,比如 Apache Geromino, JBoss, IBM Tivoli, Cisco SESM 等。Jetty 可以用来作为一个传统的 Web 服务器,也可以作为一个动...

weixin_39598954的博客 547

一个超级简单的Jetty实例

Maven: <!-- https://mvnrepository.com/artifact/org.mortbay.jetty/jetty --> <dependency> <groupId>org.mortbay.jetty</groupId> <a...

weixin_30361753的博客 247

学习Jetty AJAX Chat实例

第一次接触Jetty感觉还不错,小而简单速度也较快。对于纯java开发的开源web服务器来说确实值得推荐。今天在http://jetty.mortbay.org/上下载了Jetty 6版本,解压后无需安装就可以运行了(双击bin目录下的Jetty-Service.exe)。只得注意的是jettty也是使用的8080端口,所以机器上同时配置tomcat的朋友可以修改一下jetty的默认端口。(c

yehell的专栏 5408
上一篇: 报错 Cannot create inner bean '(inner bean)' of type [org.springframework.aop.aspe
下一篇: neo4j 入门实例
blackproof
博客等级 码龄17年 12粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值