2013年11月6日

Struts2 架构图

摘要: Struts2架构图 请求首先通过Filter chain,Filter主要包括ActionContextCleanUp,它主要清理当前线程的ActionContext和Dispatcher;FilterDispatcher主要通过AcionMapper来决定需要调用哪个Action。 ActionMapper取得了ActionMapping后,在Dispatcher的serviceAction方法里创建ActionProxy,ActionProxy创建ActionInvocation,然后ActionInvocation调用Interceptors,执行Action本身,创建Result并返 阅读全文

posted @ 2013-11-06 13:42 heartstage 阅读(1022) 评论(0) 推荐(0) 编辑

java synchronized详解

摘要: Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。 三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时, 阅读全文

posted @ 2013-11-06 03:13 heartstage 阅读(147) 评论(0) 推荐(0) 编辑

Java线程同步:synchronized锁住的是代码还是对象

摘要: 所以我们在用synchronized关键字的时候,能缩小代码段的范围就尽量缩小,能在代码段上加同步就不要再整个方法上加同步。这叫减小锁的粒度,使代码更大程度的并发。原因是基于以上的思想,锁的代码段太长了,别的线程是不是要等很久,等的花儿都谢了。当然这段是题外话,与本文核心思想并无太大关联。 再看上面的代码,每个线程中都new了一个Sync类的对象,也就是产生了三个Sync对象,由于不是同一个对象,所以可以多线程同时运行synchronized方法或代码段。 为了验证上述的观点,修改一下代码,让三个线程使用同一个Sync的对象。class MyThread extends Thread {p.. 阅读全文

posted @ 2013-11-06 03:11 heartstage 阅读(450) 评论(0) 推荐(0) 编辑

设计模式之不变模式(Immutable Pattern)分析

摘要: http://www.iteye.com/topic/959751最近老有人问我不变模式,我其实也理解得不深,于是花了一些时间进行学习总结,分析了一下不变模式(immutable pattern),和大家一起分享。说得不对的地方欢迎拍砖,谢绝谩骂。姐妹篇:精通有状态vs无状态(Stateful vs Stateless).http://www.iteye.com/topic/960532 不变模式(immutable pattern) 一个类的内部状态创建后,在整个生命期间都不会发生变化时,就是不变类。这种使用不变类的做法叫做不变模式。 不变模式有两种形式:一种是弱不变模式,另一种是强不变模式 阅读全文

posted @ 2013-11-06 03:07 heartstage 阅读(347) 评论(0) 推荐(0) 编辑

一个错误使用单例模式的场景及ThreadLocal简析

摘要: 近来参与一个Java的web办公系统,碰到一个bug,开始猜测是线程池管理的问题,最后发现是单例模式的问题。即,当同时发起两个事务请求时,当一个事务完成后,另一个事务会抛出session is closed异常。具体见下图:至于,下面这种情况,当时也测试过,但问题情形忘了,手上没有数据库环境,无法进行测试:最开始,个人认为是session管理的问题,比如,在关闭session的时候,会同时关闭先前打开的session。由于下面采用的是其他公司的框架,所以就反馈给了技术总监。后来,反馈给我,竟然是单例的问题。简单看了一下本系统,其在框架基础上又封装了一层,涉及这个bug的类关系如下:发现原来设想 阅读全文

posted @ 2013-11-06 03:05 heartstage 阅读(1574) 评论(0) 推荐(0) 编辑

Jboss ESB简介及开发实例

摘要: 一、Jboss ESB的简介 1、 什么是ESB。 ESB的全称是Enterprise Service Bus,即企业服务总线。ESB是过去消息中间件的发展,ESB采用了“总线”这样一种模式来管理和简化应用之间的集成拓扑结构,以广为接受的开放标准为基础来支持应用之间在消息、事件和服务的级别上动态的互连互通。 ESB是一种在松散耦合的服务和应用之间标准的集成方式。它可以作用于: ①面向服务的架构 - 分布式的应用由可重用的服务组成。 ②面向消息的架构 - 应用之间通过ESB发送和接受消息。③事件驱动的架构 - 应用之间异步地产生和接收消息。 用一句比较通俗的话来描述ESB:ESB就是在S... 阅读全文

posted @ 2013-11-06 01:43 heartstage 阅读(1729) 评论(0) 推荐(0) 编辑

ESB架构之企业实施案例

摘要: 本文讲述了ESB架构在企业内的实际运用,包括在部门内、部门间以及企业级ESB架构的设计和案例;分享了ESB设计过程需要考虑的关键问题;描述了不同ESB域的实施重心。概述ESB的存在主要是为了整合企业内部的应用,使企业内的应用能融为一体,而不是成为一个个信息孤岛。可以说ESB是企业内所有服务的中心点,其它系统间的交互都需要通过ESB来完成。为此,它需拥有如下质量属性:可用性、性能、可修改性、可测试性、易用性。参考“ESB的质量属性”一节。为了解释这些架构属性,我们可以从企业域、部门域、ESB内部视角三个层次来进行说明。ESB除了高可用性和性能之外,高可伸缩性也很重要,在实际实施过程中,读者可以对 阅读全文

posted @ 2013-11-06 01:23 heartstage 阅读(3077) 评论(0) 推荐(0) 编辑

socket 和 webservice 的区别和比较

摘要: 时间紧迫,我就直奔主题.目前需要说服客户使用webservice 而不是socket.我觉得要先分别解释下什么是socket 什么是webservice..这个要我该怎么说才比较形象,让人一定就明白.socket 属于7层中的那个层. 网上找了找,越看越迷糊. 有说属于应用层的. 有说属于传输和网络层的. 还有所属于网络和传输之间夹层的.昏了.webservice要怎么叙述,才能让人觉得不用webservice 就是一种罪过呢.."都怪上次说到 webservice+soap 在高负载和并发的情况下回出现消息堵塞或丢失."-------------------------- 阅读全文

posted @ 2013-11-06 01:18 heartstage 阅读(11962) 评论(0) 推荐(0) 编辑

SOAP、SOCKET协议

摘要: 一、SOAP( SOAP:Simple Object Access Protocol) 简单对象访问协议,简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。SOAP 包括四个部分: SOAP 封装:它定义了一个框架 , 该框架描述了消息中的内容是什么,谁应当处理它以及它是可选的还是必须的。 SOAP 编码规... 阅读全文

posted @ 2013-11-06 01:14 heartstage 阅读(1268) 评论(0) 推荐(0) 编辑

Springmvc构造RESTful详细讲解

摘要: Rest介绍Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/blog/1 HTTP GET => 得到id = 1的blog /blog/1 HTTP DELETE => 删除 id = 1的blog /blog/1 HTTP PUT => 更新id = 1的blog /blog HTTP POST => 新增BLOG以下详细解一下spring rest使用.首先,我们带着如下两个问题查看本文。1.如何在java构造 阅读全文

posted @ 2013-11-06 01:12 heartstage 阅读(351) 评论(0) 推荐(0) 编辑

Http和Socket连接区别

摘要: 相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望通过自己的浅显理解能对初学者有所帮助。1、TCP连接要想明白Socket连接,先要明白TCP连接。手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。建立起一个TCP连接需要经过“三次握手”:第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN 阅读全文

posted @ 2013-11-06 01:04 heartstage 阅读(206) 评论(0) 推荐(0) 编辑

TCP/IP,HTTP,SOAP等协议之区别

摘要: 术语TCP/IP代表传输控制协议/网际协议,指的是一系列协议。“IP”代表网际协议,TCP和UDP使用该协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。你应该能理解,TCP和UDP是FTP,HTTP和SMTP之类使用的传输层协议。虽然TCP和UDP都是用来传输其他协议的,它们却有一个显著的不同:TCP提供有保证的数据传输,而UDP不提供。这意味着TCP有一个特殊的机制来确保数据安全的不出错的从一个端点传到另一个端点,而UDP不提供任 阅读全文

posted @ 2013-11-06 01:01 heartstage 阅读(350) 评论(0) 推荐(0) 编辑

RMI,socket,rpc,hessian,http比较

摘要: SOCKET使用时可以指定协议TCP,UDP等;RIM使用JRMP协议,JRMP又是基于TCP/IP;RPC底层使用SOCKET接口,定义了一套远程调用方法;HTTP是建立在TCP上,不是使用SOCKET接口,需要连接方主动发数据给服务器,服务器无法主动发数据个客户端;可以用socket实现HTTP;其实符合HTTP规范的就是HTTP协议,不管用什么技术。hessian是一套用于建立web service的简单的二进制协议,用于替代基于XML的web service,是建立在rpc上的,hessian有一套自己的序列化格式将数据序列化成流,然后通过http协议发送给服务器,看源码发现其实是使用 阅读全文

posted @ 2013-11-06 00:59 heartstage 阅读(616) 评论(0) 推荐(0) 编辑

JAVA 父类与子类初始化顺序问题

摘要: main方法-->子类对象的初始化语句(new className()语句)--->子类构造【因为继承的缘故,它先不会执行】--->父类构造【这一步先不会执行】--->父类静态变量----->子类静态变量---->初始化父类变量(按顺序)--->父类构造---->子类变量初始初始(按顺序)--->子类构造--->运行main后的语句--->程序结束。(按eclipse得debug顺序记录)无继承的类初始化顺序:静态变量--->静态初始化块------>变量---->初始化块----->构造器。附测试程序: 阅读全文

posted @ 2013-11-06 00:59 heartstage 阅读(1139) 评论(0) 推荐(0) 编辑

SOAP很2的问题

摘要: 小弟说实话不很懂这方面的东西,但上头要求比较一下这两种方式的优劣,欢迎大家赐教啊!“按照一定的网络传输协议,通过符合FTP/TCP/IP等协议的数据报或者以SOAP的方式传送到接口服务器。”这是出处,请各位在大局方面评论一下这两种方式,搜索没有类似问题,只有请诸位赐教啦!先去看看OSI七层模型和TCP/IP四层模型...搞清楚TCP/IP和HTTP及FTP的关系...再去看看SOAP的概念...搞清楚SOAP和HTTP的关系...“按照一定的网络传输协议,通过符合FTP/TCP/IP等协议的数据报或者以SOAP的方式传送到接口服务器。”TCP/IP是通讯协议簇,是互联网通信的基础。FTP:应用 阅读全文

posted @ 2013-11-06 00:53 heartstage 阅读(205) 评论(0) 推荐(0) 编辑

spring 3.0 应用springmvc 构造RESTful URL 详细讲解

摘要: 由于下一版本的rapid-framwork需要集成spring RESTful URL,所以研究了一下怎么搭建. 并碰到了一下问题。springmvc 3.0 中增加 RESTful URL功能,构造出类似javaeye现在的URL。 rest介绍, 这里还有struts2 rest构造的一篇文章:使用 Struts 2 开发 RESTful 服务简单例子如下,比如如下URLJava代码 /blog/1HTTPGET=>得到id=1的blog/blog/1HTTPDELETE=>删除id=1的blog/blog/1HTTPPUT=>更新id=1的blog/blogHTTPPO 阅读全文

posted @ 2013-11-06 00:44 heartstage 阅读(327) 评论(0) 推荐(0) 编辑

获得类对象的四种方法

摘要: 转载自: http://duben.iteye.com/blog/367218在学习反射机制时,总结一下获得类对象方式: 第一种方式:通过类本身来获得对象Java代码 Classclassname= this .getClass(); 第二种方式:通过子类的实例获取父类对象Java代码 ClassNamecn= new ClassName(); UserClass=cn.getClass();ClassSubUserClass=UserClass.getSuperclass();第三种方式:通过类名加.class获取对象Java代码 ClassForClass=**.**.ClassNa... 阅读全文

posted @ 2013-11-06 00:42 heartstage 阅读(629) 评论(0) 推荐(0) 编辑

Apache CXF实战之四 构建RESTful Web Service

摘要: Apache CXF实战之一 Hello World Web ServiceApache CXF实战之二 集成Sping与Web容器Apache CXF实战之三 传输Java对象 这篇文章介绍一下怎么通过CXF来发布RESTful的Web Service.1. 首先是实体类,注意其中的@XmlRootElement注解[java] view plaincopyprint?packagecom.googlecode.garbagecan.cxfstudy.jaxrs;importjava.util.Date;importjavax.xml.bind.annotation.XmlRootEleme 阅读全文

posted @ 2013-11-06 00:36 heartstage 阅读(367) 评论(0) 推荐(0) 编辑

使用CXF开发RESTFul服务

摘要: 相信大家在阅读CXF官方文档(http://cxf.apache.org/docs/index.html)时,总是一知半解。这里向大家推荐一本PacktPub.Apache.CXF.Web.Service.Development。目前,这本书是没有中文版的,为此笔者简单的写了一些经验总结。CXF官方文档(http://cxf.apache.org/docs/index.html)时,总是一知半解。这里向大家推荐一本PacktPub.Apache.CXF.Web.Service.Development。目前,这本书是没有中文版的,为此笔者简单的写了一些经验总结。这本书内容上安排的比较浅显,语言上 阅读全文

posted @ 2013-11-06 00:25 heartstage 阅读(776) 评论(0) 推荐(0) 编辑

Java多线程中的异常处理

摘要: 在java多线程程序中,所有线程都不允许抛出未捕获的checked exception,也就是说各个线程需要自己把自己的checked exception处理掉。这一点是通过java.lang.Runnable.run()方法声明(因为此方法声明上没有throw exception部分)进行了约束。但是线程依然有可能抛出unchecked exception,当此类异常跑抛出时,线程就会终结,而对于主线程和其他线程完全不受影响,且完全感知不到某个线程抛出的异常(也是说完全无法catch到这个异常)。JVM的这种设计源自于这样一种理念:“线程是独立执行的代码片断,线程的问题应该由线程自己来解决. 阅读全文

posted @ 2013-11-06 00:22 heartstage 阅读(709) 评论(0) 推荐(0) 编辑

导航