1. Checkfree transaction

    Checkfree transaction managed in specified layer:   In a dedicated  class, say TransactionAdapter,  it encapsulated the transaction handling over com.checkfree.isolutions.persist.PersistServer   1. begainTransaction:  PersistServer.activate() -> PersistServer.beginTransaction() 2. commitTransaction: PersistServer.commitTransaction() -> PersistServer.deactivate() 3. rollbackTransaction: PersistServer.rollbackTransaction() -> PersistServer.deactivate() try{                    txnStarted = TransactionAdapter.beginTransaction();                  //    boolean flag = checkfree invocation }finally{                  if(flag == "success" )                           TransactionAdapter.commitTransaction(txnStarted);                 else                             TransactionAdapter.rollbackTransaction(txnStarted);   }    

    2017/02/12 iteye

  2. Read-Only transactions

    read-only="true|false" 经常出现在Spring事务配置文件或者annotation 属性中,具体解释如下:     1. Spring documents describes:   Read-only status: a read-only transaction does not modify any data. Read-only transactions can be a useful optimization in some cases (such as when using Hibernate). 2. from Google   if the transaction is marked as read-only, Spring will set the Hibernate Session's flush mode to FLUSH_NEVER, and will set the JDBC transaction to read-only.   3. Hiberante   when a session's flush mode is set to FLUSH_NEVER, two things happen: First, running HQL queries no longer cause Hibernate to flush the session state to the database, which can provide a dramatic performance improvement. Secondly, Hibernate will not flush the changes before commiting the transaction. But the user can still call Session.flush() by hand, causing any modifications to be persisted to database.   4. Oracle   When using the Oracle JDBC driver, calling connection.setReadOnly(true) translates into the statement "SET TRANSACTION READ ONLY". This statement limits the types of SQL statements that can be executed during the transaction. Only SELECTS (without 'FOR UPDATE') and a few other statements can be executed. Specifically, no UPDATEs, DELETEs, INSERTs or MERGEs can be executed. This behavior is Oracle-specific. Other RDBMS can have different semantics for read only transactions or simply not support it at all.       from:  http://www.codeinstructions.com/2009/04/read-only-transactions-with-spring-and.html

    2017/02/12 iteye

  3. Websphere MQ

    WebSphere MQ 提供了处理大消息的两种方法:消息分片和消息分组。 消息分片和消息分组是在 WebSphere MQ 的编程中处理大消息的常用手段,到底采用哪种方式比较合适,需要根据实际的需求而定。如果大消息需要分割成有实际业务意义的一批小消息,那么采用消息分组比较合适;反之,如果大消息无法分割成有实际业务意义的小消息,那么就采用消息分片。

    2017/02/12 iteye

  4. 今日感悟

    你很想乘上电梯门即将关上的电梯,如果你小跑一下,大多数情况下电梯里的人会等一下你;如果你面无表情,慢悠悠的,大多数情况下准备乘下一班吧。生活需要积极主动。   2. 看到马路上川流不息的车流,你也许会怀疑怎么会有我行进的空间。大多数情况下,你置身于车流时发现还有有你前进的距离。生活需要勇气和实践。宏观的看问题需要让你畏惧。有的问题没有你想象的难。

    2017/02/12 iteye

  5. SOA设计

    SOA中为保持交易一致性广泛使用的 Compensation(冲正)  机制

    2017/02/12 iteye

  6. MQ/CICS

    CICS:  CICS 是一系列为 IBM和非 IBM 平台上的应用提供联机事务处理和事务管理的产品,其功能是为商业应用提供一个事务处理环境。CICS其全称是 Customer Information Control System,即客户信息控制系统。   RACF: Resource Access Control Facility(资源访问控制程序)是用于IBM主机(大型服务器)操作系统的安全管理产品RACF只分配给有权使用申请资源的用户的计算机系统(比如文件,打印序列,程序的运行空间等等)。为了实现这些,RACF识别并授权给一个用户,并决定这个用户可以使用什么样的资源,并且对非授权用户试图访问保护资源进行记录日志和报告。   3270: The IBM 3270 is a class of terminals made by IBM since 1972 (known as "display devices") normally used to communicate with IBM mainframes. IBM stopped manufacturing terminals many years ago, but the IBM 3270 protocol is still commonly used via terminal emulation to access some mainframe-based applications. Accordingly, such applications are sometimes referred to as green screen applications. Use of 3270 is slowly diminishing over time as more and more mainframe applications acquire Web interfaces, but some web applications use the technique of "screen scraping" to capture old screens and transfer the data to modern front-ends.

    2017/02/12 iteye

  7. Java虚拟机

    摘自: http://www.ibm.com/developerworks/cn/java/j-lo-jvm-perf/    JVM 的实现 Sun Hotspot、IBM J9、Oracle JRockit        一. Java 堆和栈     类装载子系统:通过类的全限定名(包名和类名,网络装载还包括 URL)将 Class 装载进运行时数据区; 方法区:Class 对于所有方法和 static 静态数据的定义存储在这里,它就像一张表或数组,让程序执行时在这里找到相应方法的 Java 字节码和静态数据; Java 堆:Java 对象的持久化存储区,从类实例化而来的对象存储在此,垃圾收集也在此进行,若是空间不够容纳当前所有对象,Out Of Memory 的异常将会抛出,对 Java 堆和垃圾收集的认识对应用性能调优很关键;        创建的 Java 对象(包括数组,数组也是一种对象)分配在堆中,垃圾收集对象来释放空间; 最常设置的堆大小参数有:-Xms,设置堆的初始大小;-Xmx,设置堆空间的最大值;-Xmn,设置年轻代空间大小;-Xmo,设置年老代空间大小  Java 栈:Java 方法的字节码执行的地方,方法中局部变量的生命周期都在栈中,栈的大小是我们要考虑的一个关键点,它直接决定了方法调用的层数,这对递归程序来说尤为重要。我们所用的 JVM 都是基于 Java 栈的运行机制,而有一个例外的实现,Google 移动设备操作系统 Android 的虚拟机 Dalvik 则是基于寄存器的机制(Dalvik 虽然支持 Java 语言开发,但从虚拟机的角度看,并不符合 Java 标准),关于虚拟机实现时,栈和寄存器机制的比较,请参考论文“Virtual Machine Showdown: Stack Versus Registers”; 栈划分为操作数栈、栈帧数据和局部变量区,方法中分配的局部变量在栈中,同时每一次方法的调用都会在栈中分配栈帧. 对于基于栈的 Java 虚拟机,方法的调用和执行伴随着压栈和出栈操作。每个线程有各自独立的栈,由虚拟机来管理栈的大小,但我们应该对它的大小有个概念。栈的大小是把双刃剑,如果太小,可能会导致栈溢出,特别是在该线程内有递归、大的循环时出现溢出的可能性更大,如果过大,就会影响到可创建栈的数量,如果是多线程的应用,就会导致内存溢出。通过 -Xss可以设置 Java 栈的最大值,默认值为 256K。 程序计数器:对于基于栈实现的 JVM,这几乎是唯一寄存器了,它用来指示当前 Java 执行引擎执行到哪条 Java 字节码,指针指向方法区的字节码; 本地方法栈:这是 Java 调用操作系统本地库的地方,用来实现 JNI(Java Native Interface,Java 本地接口); 执行引擎:JVM 的心脏,控制装入 Java 字节码并解析; 本地接口:连接了本地方法栈和操作系统库。   二.  Java内存泄漏例子      下面的pop1会引起内存泄漏 public class Stack { private static final int MAXLEN = 10; private Object stk[] = new Object[MAXLEN]; private int stkp = -1; public void push(Object p) { stk[++stkp] = p; } public Object pop1() { return stk[stkp--]; } public Object pop2() { Object p = stk[stkp]; stk[stkp--] = null; return p; } }    

    2017/02/12 iteye

  8. process server 启动问题

    Process Server 启动时报错 Caused by: org.omg.CORBA.INTERNAL: CREATE_LISTENER_FAILED_4  vmcid: 0x49421000  minor code: 56  completed: No   Changing the host file fixed it. For windows : c:\windows\system32\drivers\etc\hosts 127.0.0.1 localhost .

    2017/02/12 iteye