2009年06月26日
对Hibernate默认的JDBC事务的尝试
作者:http://blog.csdn.net/fenglibing,转载请保留。
Hibernate的默认事务为JDBC事务,它其是就旧通过设置JDBC的Connection.setAutoCommit(false)来做点这一点,默认是不允许自动提交的,因为用户如果需要将对库表的修改提交到数据库,需要用户手工增加事务,否则不会将对数据库的更改提交到数据库。因为是对默认的JDBC事务的尝试,为了省去配置文件及简洁明了,以下我全部都是通过获取Connection的方式去操作数据库。
一、最简单的事务:单表操作
这种情况通常都是出现在对单表的操作,如下简单示例:
/*起事务的提交*/
public static void simpleAction(int value) throws SQLException{
/*Hibernate Session*/
Session session=null;
/*获取当前连接*/阅读全文>
发表于 @ 2009年06月26日 13:25:00|评论(loading...)|举报|收藏
Spring入门示例及相关概念介绍
作者:http://blog.csdn.net/fenglibing,转载请保留。
相对于Hibernate(冬眠),Spring(春天),具有更多的诗意与希望的感觉,是为了解决传统J2EE开发效率过低、开发商之间不统一、没有真正实现“写一次到处使用”,它的优点有如下:
1、低侵入式设计,代码污染极低。
2、独立于各种应用服务,真正实现写一次到处都可以使用。
3、用户可选择的自由度高,用户可以选择部分或者是全部SPRING的功能,它并不是设计来取代其它框架,可以和其它的框架(如STRUTS、HIBERNATE)等结合极好。
4、面向接口的编程方式,使得代码的偶合度降到最低。
5、所有的BEAN默认都被会单态化,相同的BEAN只会被初使化一次,因而节省了BEAN初使化的时间及减少垃圾回收,增加了应用效率。
...
有以上的优点的结合,因而它是被广大程序员所欢迎的,因为它可以给我们带来高效、稳定的开发,很大程度的减少了程序的开发、维护周期,也就自阅读全文>
发表于 @ 2009年06月26日 13:22:00|评论(loading...)|举报|收藏
JNI简单示例
作者:http://blog.csdn.net/fenglibing,转载请保留。
JNI既Java Native Interface,中文称为JAVA本地接口,一定要和JNDI(Java Name Directory Interface,JAVA命名目录接口),主要用于调用与操作系统紧密相关的一些DLL应用封装,为什么要调用DLL封装呢?1)、一种情况是为了应用原来写的基于底层的实现,现在可以直接使用,就不必重新去做新的开发;2)、另外一种主要是为了某种安全性上来说,如我这里的与银行的核心进行通信,就需要使用其提供的DLL,通过调用其提供的DLL,A)、首先可以保证比较安全,因为它可以在DLL对传入的报文进行特殊加密处理,待主机收到后通过解密看报文是否合法,B)、其次将报文转换为对方主机接收的报文,现在对方核心的服务器为S400主机,所以在主机接收接文之前就先将其转换为S400可识别的编码,在返回的时候再通过该DLL转换为当前系统可识别的报文编码。3)、与特定服务的通信配置,如与TUXEDO的通信,我公司采用阅读全文>
发表于 @ 2009年06月26日 12:47:00|评论(loading...)|举报|收藏
2009年06月08日
问题如下:我用JAVA写的服务端,每收请求以线程响应,读取报文的代码如下:
DataInputStream dis=new DataInputStream(socket.getInputStream());
//缓冲区的大小
byte[] bt=new byte[MsgEnvironment.MAX_MESSAGE_LENGTH];//MsgEnvironment.MAX_MESSAGE_LENGTH为32000
dis.read(bt);
//处理接收到的报文,转换成字符串
String message=new String(bt).trim();
我用JAVA写的SOCKET客户端,发送超过8K的报文,能够正常接收,在本机以及其它机器都有测试,正常通过。
客户端用C给我发,也是TCP/IP给我发过来,超过4380,就只能够收到4380字节了,C端给本身编写的测试服务端发报文,也可以超过5K,能够正常收到。
现在的问题就是C客户端与JAVA服务端通信时,阅读全文>
发表于 @ 2009年06月08日 14:33:00|评论(loading...)|举报|收藏
需要将Windows的报文服务(MessageServer)程序移植到Linux下,其中涉及到编码的问题,在Windows下正常的中文,到Linux下、以及Linux的Eclipse打开就全成了乱码了,当然这可是不是我们所想要的结果,程序的提示还是得保证中文,这样才能够明白。 我使用的Linux为RedFlag6.0,感觉挺好用的,安装软件之类可以不需要记那些命令了,类似于Windows一样,在文件上面点击右键,可以解压缩及压缩、安装等操作了,并且有一些环境变量它他还自动设置好,如安装JDK的时候,会设置PATH,但是CLASSPATH就得自己设置了。 解决乱码分两种,一种是解决在Linux下,采用其内置查看器查看的时候,要能够正确显示中文,这里就需要设置其默认编码,我在本机的ECLIPSE默认的编码为GBK,在LINUX下,用其自带的编码器查看就不正确,显示乱码,这说明RG6中的默认编码不为GBK,默认的应该是UTF-8,这里就要设置其默认编码为GBK,这里可以在两个地方设置环境变量,一个是".bash_profile"(注:此在root的根目录下,通阅读全文>
发表于 @ 2009年06月08日 14:31:00|评论(loading...)|举报|收藏
2009年06月05日
现在我这边的SOCKET作为TUXEDO发送报文的接收服务端,在返回数据给TUXEDO的时候,现在遇到一个问题,就是同一个SOCKET连接不能够将消息分批返回给TUXEDO,
因为TUXEDO要求第一个报文为8位的后续报文长度,然后再发送后续报文,必须分开发,否则不能够正常接收。
我记得在JDK1.4的时候,我们做通讯测试的时候,可以将报文分两次发送,后面因为要使用到线程池,就换成了JDK1.5,结果现在不能够分两个次发送,我尝试了JDK1.6_U18也不行,我的程序如下:
...
dos=new DataOutputStream(socket.getOutputStream());
dos.writeBytes(returnLen);//先发送报文长度
dos.flush();
dos.writeBytes(message);//先发送报文长度
dos.flush();
...
采用JDK5以上的版本按这样的程序发送的时候,他会报两个一起发送,我的SOC阅读全文>
发表于 @ 2009年06月05日 19:14:00|评论(loading...)|举报|收藏
2009年05月15日
阅读全文>
发表于 @ 2009年05月15日 08:23:00|评论(loading...)|举报|收藏
2009年05月13日
现在部门开发电子票据系统,应该说这种涉及到银行交易的系统,应该是一批资格比较老,能够比较熟悉架构的人来设计或者是开发这样的系统,可是我觉得我们现在项目组的人,就是一种玩玩与无耐的感觉,因为:
一是老大不熟悉JAVA,其实JAVA都不是一个问题,问题是老大没有架构观念,想到哪里做到那里,今天觉得这个表少了一个字段,就加上,明天觉得这个字段多了,又给删除掉,觉得好像这个功能是多余的就删除掉,明天觉得好像还可以又加回去......如此循环。前期没有怎么花时间做系统分析,其它几个负责业务功能开发的几个同事,总是不停的修改来修改去,项目的进展很慢,这就应了软件工程上说的:项目没有规划、质量无法保证、后期维护困难、代码和架构乱七八糟;我做的是对来ECDS过来的报文的分析,保证报文的处理,一个人做,也就没有受到这方面的折磨。
二是其它的同事都是一些经验不怎么够的,工作经验和项目都比较少,做这种项目,缺少安全、责任意识是非常严重的事情,这种情况下合作肯定就比较困难,都是拿一些做好了的东西,东拼西改,最终跑得过就算是,不管性能、效率、安全如何,我不阅读全文>
发表于 @ 2009年05月13日 20:09:00|评论(loading...)|举报|收藏
一个类似于Logic与Bean的Jsp标签示例
示例说明:
首先通过Logic标准的校验,是否存在相应的属性,如果不存在,就不继续执行其中包含的内容体,如果存在则执行其中包含的内容体,调用方式如:
这里有两个类,一个是MyLogic类,一个是MyBean,分别代表上面的logic及bean。
1、MyLogic源程序:
package test;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.BodyTagSupport;
import org.jdom.Documen阅读全文>
发表于 @ 2009年05月13日 18:35:00|评论(loading...)|举报|收藏
转自:JAVA中文站
作者简介
廖雪峰,软件工程师,现从事J2EE开发,您可以通过asklxf@163.com与他联系。
java.util包中包含了一系列重要的集合类。本文将从分析源码入手,深入研究一个集合类的内部结构,以及遍历集合的迭代模式的源码实现内幕。
下面我们先简单讨论一个根接口Collection,然后分析一个抽象类AbstractList和它的对应Iterator接口,并仔细研究迭代子模式的实现原理。
本文讨论的源代码版本是JDK 1.4.2,因为JDK 1.5在java.util中使用了很多泛型代码,为了简化问题,所以我们还是讨论1.4版本的代码。
集合类的根接口Collection )
Collection接口是所有集合类的根类型。它的一个主要的接口方法是:
boolean add(Object c) )
add()方法将添加一个新元素。注意这个方法会返回一个boolean,但是返回值不是表示添加成功与否。仔细阅读doc可以看到,Collection规定:如果一个集合阅读全文>
发表于 @ 2009年05月13日 12:57:00|评论(loading...)|举报|收藏