1. Messaage Properties  常见属性 更多的属性以及介绍参考:http://activemq.apache.org/activemq-message-properties.html 消息属性,这个在之前刚学习ActiveMQ的时候已经介绍过,常见的如下: 1. queue消息默认是持久化 2. 消息得优先级默认是4. 3. 消息发送时设置了时间戳. 4. 消息的过期时间默认是永不过期,过期的消息进入DLQ,可以配置DLQ及其处理策略. 5. 如果消息是重发的,将会被标记出来.…
这段时间本意是想要研究一下Netty的多线程异步NIO通讯框架,看完原理想要做下源码分析.查找资料发现Jetty框架底层支持用Netty做web请求的多线程分发处理,于是就筹备着将Jetty框架内嵌到手头的一个测试项目中,调试源码分析实现原理.结果这集成一搞就是两天,有些细节部分还是要真正接触之后才会了解,为此特意整理博客一篇,就集成过程中的问题做一下总结. 项目说明:Maven多模块,springmvc,spring-security: 参考项目:JFinal(国产优秀的mvc开发框架); 问…
Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境.Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布.开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接.Jetty相比与Tomcat是轻量级的,而且Jetty更灵活,体现在其可插拔性和可扩展性,更易于开发者对Jetty本身进行二次开发,定制一个适合自身需求的Web Server. Jet…
1. Blob Message 有些时候,我们需要传递Blob(Binary Large Objects)消息,在5.14之前,(5.12和5.13需要在jetty.xml中手动开启)可以按照如下的方式配置使用fileserver: 配置BLOB Tansfer Policy,可以在发送方的连接URI上设置,如: tcp://localhost:61616?jms.blobTransferPolicy.uploadUrl=http://localhost:8161/fileserver 在5.1…
运行环境 java 6,eclipse juno,ssh(spring,hibernate,springmvc ) 1.离线安装 下载地址:http://pan.baidu.com/s/1qX67wOc,下载后,解压,把features和plugins拷贝到eclipse安装目录的plugins下,重启eclipse. 2.在线安装(我用的这种) help--> install new software... --> 地址:http://run-jetty-run.googlecode.com…
有的时候需要将一个简单的功能封装为服务,相比python使用flask.web.py的简洁,使用java-web显得太重量级,幸好,我们可以直接在java项目中使用jetty来搭建简易服务 1.pom.xml加入jetty依赖 <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-server</artifactId> <version>9.4.0.v2…
Slf4jLog logger = new Slf4jLog(); logger.setDebugEnabled(true); Log.setLog(logger); log4j2.xml中配置如下章节 <Logger name="org.eclipse.jetty" level="debug" />…
1. Messaage Properties ActiveMQ支持很多消息属性,具体可以参考 http://activemq.apache.org/activemq-message-properties.html 常见得一些属性说明: 1. queue得消息默认是持久化得 2. 消息得优先级默认是4. 3. 消息发送时设置了时间戳. 4. 消息的过期时间默认是永不过期,过期的消息进入DLQ,可以配置DLQ及其处理策略. 5. 如果消息是重发的,将会被标记出来. 6. JMSReplyTo标识响应…
一.延迟和定时消息投递 1 xml中配置schedulerSupport属性为true 2 每小时都会发生消息被投递10次,延迟1秒开始,每次间隔1秒: TextMessage message = session.createTextMessage("test msg");message.setStringProperty(ScheduledMessage.AMQ_SCHEDULED_CRON, "0 * * * *");message.setLongPropert…
为了完成web工程的测试,最近内嵌jetty也要搞起来.第一次搞还是挺焦头烂额的.直接上成果: package com.test.action; import java.io.File; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.nio.SelectChannelConnector; import org.ec…
引言 当后端Java服务用Dubbo协议作为RPC方案的基础,但部分消费方是前端Restful的PHP服务,不能直接调用,于是在中间架设了Router服务提供统一的基于HTTP的后端调用入口. 而Router调用后端Java服务就应用了Dubbo的高级特性--泛化调用 直接消费方(Router服务)不需要引入接口jar包 通过GenericService接口来处理所有服务请求 以PHP到Router的request body中的方法名和方法参数作为Router远程调用后端Java服务的入参,最后…
引言 当后端Java服务用Dubbo协议作为RPC方案的基础,但部分消费方是前端Restful的PHP服务,不能直接调用,于是在中间架设了Router服务提供统一的基于HTTP的后端调用入口. 而Router调用后端Java服务就应用了Dubbo的高级特性–泛化调用 直接消费方(Router服务)不需要引入接口jar包 通过GenericService接口来处理所有服务请求 以PHP到Router的request body中的方法名和方法参数作为Router远程调用后端Java服务的入参,最后将…
使用Active发送文件 ActiveMq 本身提供对于传输文件的支持. 1. 直接传输文件: 使用connection.createOutputStream 的形式.这种方式适合小文件.不能传输大文件. 2. BlobMessage:(Binary Large OBjects) 这种方式可以传输大文件.其本质是发送一个BlobMessage时,先将文件传输到文件服务器上,然后接受消息时再从文件服务器上取.这样我们在mq里面传输的实际上只是一个文件ID 本文介绍的是第二种方法,MQ本身自带jet…
Jetty的口号是“不要在Jetty中部署你的应用程序,在你的应用程序中部署Jetty!” 这意味着,作为将应用程序捆绑为要部署在Jetty中的标准WAR的替代方案,Jetty旨在成为一个软件组件,可以像任何POJO一样在Java程序中实例化和使用. 换句话说,在嵌入模式下运行Jetty意味着将HTTP模块放入应用程序,而不是将应用程序放入HTTP服务器. 本教程将逐步介绍从最简单的Jetty服务器实例化到使用基于标准的部署描述符运行多个Web应用程序. 大多数这些示例的来源是标准Jetty项目…
Tomcat的7引入了许多新功能,并对现有功能进行了增强.很多文章列出了Tomcat 7的新功能,但大多数并没有详细解释它们,或指出它们的不足,或提供代码示例.本文将明确描述TOMCAT 7中七个最显著的特征和新增的功能,并对其作出评论,而不是仅仅列出新的功能.本文还提供了代码例子以方便你可以对其有更好的理解. 本文分为两个部分,分别是”TOMCAT 7的新特性”和“TOMCAT 7增强的功能“. TOMCAT 7新特性 1 使用随机数去防止跨站脚本攻击. 2 改变了安全认证中的jessioni…
Spring Boot 内嵌容器 Tomcat / Undertow / Jetty 优雅停机实现 Anoyi 精讲JAVA 精讲JAVA 微信号 toooooooozi 功能介绍 讲解java深层次开发,解析各大流行框架的源码 2018-04-19 Spring Boot 在关闭时,如果有请求没有响应完,在不同的容器会出现不同的结果,例如,在 Tomcat 和 Undertow 中会出现中断异常,那么就有可能对业务造成影响.所以,优雅停机非常有必要性,目前官方是没有提供很好的策略来实现. Ea…
1. Message Cursors 1.1 概述 ActiveMQ发送持久化消息的典型的厝里方式是:当消息的消费者准备就绪时,消息发送系统把存储的消息按批次发送给消费者,在发送完一个批次的消息后,指针的标记位置指向下一个批次的待发消息的位置,进行后续的发送操作.这是一种 比较健壮和灵活的消息发送方式,但是大多数的情况下,消息的消费者不一定一直都处于这种理想的活跃状态. 因此,从ActiveMQ5.0.0版本开始,消息发送系统采用一种混合型的发送模式,当消息消费者处于活跃状态时,允许消息发送系统…
Message dispatch高级特性之 Message cursors概述            ActiveMQ发送持久消息的典型处现方式是:当消息的消费者准备就绪时,消息发送系统把存储的 消息按批次发送给消费者,在发送完一个批次的消息后,指针的标记位置指向下一批次待发送消息的位 置,进行后续的发送操作.这是一种比较健壮和灵活的消息发送方式,但大多数管况下,消息的消费者 不是一直处于这种理想的活跃状态            因此,从 ActiveMQ5.0.0版本开始,消息发送系统采用一种…
http://blog.csdn.net/robinpipi/article/details/7557035 需求:把jetty作为内嵌的一个服务器,直接启动,web项目不用部署在应用服务器中.在网上搜索了一些资料,参照后,都没有成功,经过3天的研究,终于搞定了,记录在此,以备查询. 最开始用的jetty8.1,没成功,后又下载7.6,仍然没有成功,最后使用了jetty7.0后成功.对于8.1和7.6后来没有再试,应该是一样的步骤,有兴趣或者有时间容后再试. 步骤: 1.首先下载jetty的ja…
PluginOK(牛插)中间件(原名:本网通WebRunLocal)是一个实现WEB浏览器(Web Browser)与本地程序(Local Application)之间进行双向调用的低成本.强兼容.安全可控.轻量级.易集成.可扩展.跨浏览器的小程序系统,是对浏览器进行功能扩展的最佳利器.通过此中间件可实现网页前端JS脚本无障碍操控本地电脑的各种硬件.调用本地系统API及相关组件功能,彻底解决DLL.ActiveX控件及自动化程序(如MSOffice.金山WPS.AutoCAD等)在Chrome.…
之前在Spring Boot启动过程(二)提到过createEmbeddedServletContainer创建了内嵌的Servlet容器,我用的是默认的Tomcat. private void createEmbeddedServletContainer() { EmbeddedServletContainer localContainer = this.embeddedServletContainer; ServletContext localServletContext = getServ…
前文回顾 riot.js教程[三]访问DOM元素.使用jquery.mount输入参数.riotjs标签的生命周期: riot.js教程[二]组件撰写准则.预处理器.标签样式和装配方法: riot.js教程[一]简介: 共享Mixins 混合开发可以使你很好的复用代码,如下所示: var OptsMixin = { // the `opts` argument is the option object received by the tag as well init: function(opts…
一.引言    上一篇文章写了Redis的特征,使用场景,同时也介绍了Redis的基本数据类型,redis的数据类型是操作redis的基础,这个必须好好的掌握.今天我们开始介绍一些Redis的高级特性,虽然有些命令很简单,但是这些命令是使用很广泛的,并且是通用的一些命令,好好的把握这些命令,通过组合这些命令可以完成比较复杂的任务,这都是基础,我们就开始我们今天的学习之旅吧.二.Redis的高级特性 下面我们就是Redis高级特性的每个知识点,只是个人的理解,随着学习的深入,也会更新相关的章节. …
1. JavaScript中的数组 在C++.Java中,数组是一种高效的数据结构,随机访问性能特别好,但是局限性也特别明显,就是数组中存放的数据必须是同一类型的,而在JavaScript中,数组中的每一项数据可以是任何类型,也就是说数组中可以同时存放Number类型,Object类型和其他类型,这一点类似于PHP的关联数组.本质上来说JavaScript中的数组是对象,在访问数组的数据时其实是在访问它的属性,这一点可以用以下的代码证明: var colors=["red","…
Redis进阶实践之五Redis的高级特性 一.引言 上一篇文章写了Redis的特征,使用场景,同时也介绍了Redis的基本数据类型,redis的数据类型是操作redis的基础,这个必须好好的掌握.今天我们开始介绍一些Redis的高级特性,虽然有些命令很简单,但是这些命令是使用很广泛的,并且是通用的一些命令,好好的把握这些命令,通过组合这些命令可以完成比较复杂的任务,这都是基础,我们就开始我们今天的学习之旅吧. 二.Redis的高级特性 下面我们就是Redis高级特性的每个知识点,只是个人的理解…
Redis高级特性及应用场景 redis中键的生存时间(expire) redis中可以使用expire命令设置一个键的生存时间,到时间后redis会自动删除它. 过期时间可以设置为秒或者毫秒精度. 过期时间分辨率总是 1 毫秒. 过期信息被复制和持久化到磁盘,当 Redis 停止时时间仍然在计算 (也就是说 Redis 保存了过期时间). expire  设置生存时间(单位/秒) expire key seconds(秒) ttl 查看键的剩余生存时间 ttl key persist 取消生存…
Spring Boot: SpringBoot-start-web 里面依赖的环境中 如果是外部的Tomcat 容器,可以通过修改config进行配置 内嵌的呢? 如何定制和修改Servlet容器的相关配置: 1.修改和server有关的配置(ServerProperties类[也是EmbeddedServletContainerCustomizer]): 经常用的: server.port=8081 server.context‐path=/crud server.tomcat.uri‐enc…
第4天 java高级特性增强 今天内容安排: 1.掌握多线程 2.掌握并发包下的队列 3.了解JMS 4.掌握JVM技术 5.掌握反射和动态代理 java多线程增强 .1. java多线程基本知识 .1.1. 进程介绍 不管是我们开发的应用程序,还是我们运行的其他的应用程序,都需要先把程序安装在本地的硬盘上.然后找到这个程序的启动文件,启动程序的时候,其实是电脑把当前的这个程序加载到内存中,在内存中需要给当前的程序分配一段独立的运行空间.这片空间就专门负责当前这个程序的运行. 不同的应用程序运行…
前言 前面我们介绍了RabbitMQ的安装.各大消息中间件的对比.AMQP核心概念.管控台的使用.快速入门RabbitMQ.本章将介绍RabbitMQ的高级特性.分两篇(上/下)进行介绍. 消息如何保障100%的投递成功? 幂等性概念详解 在海量订单产生的业务高峰期,如何避免消息的重复消费的问题? Confirm确认消息.Return返回消息 1 消息如何保障100%的投递成功? 1.1 什么是生产端的可靠性投递? 保障消息的成功发出 保障MQ节点的成功接收 发送端收到MQ节点(Broker)确…
常用写法: function add(a,b) { return a + b; } alert(add(1,2)); // 结果 3 当我们这么定义函数的时候,函数内容会被编译(但不会立即执行,除非我们去调用它).而且,也许你不知道,当这个函数创建的时候有一个同名的对象也被创建.就我们的例子来说,我们现在有一个对象叫做“add”(要更深入了解,看底下函数:对象节.) 匿名函数: 我们也可以通过指派一个变量名给匿名函数的方式来定义它. var add = function(a,b) { retur…