Archive for the ‘Java’ Category

ZK与HIBERNATE 集成的事务

Tuesday, February 14th, 2012

listener 中,在进入ZK 边界时,ZK 先创建session ,并启动事务。在离开ZK 边界时,ZK 完成事务。

JBoss连接池输出连接未关闭信息

Monday, August 22nd, 2011

一、修改log4j的配置,增加如下内容:

<category name=”org.jboss.resource.connectionmanager.JBossManagedConnectionPool”>

<priority value=”TRACE”/>

</category>

二、修改要监控的数据源配置,增加:

<track-statements>true</track-statements>

用MSCS构建J2EE应用集群的编码问题

Thursday, August 5th, 2010

现象:

手上一个应用,原来是 Apusic 3.0+J2SDK 1.4.2,用MSCS构建集群,一直运行正常。后来Apusic升级为6.0,JDK升级为JavaSE 6.0,这下问题来了:A节点运行正常,但当通过MSCS切换到B节点时,Apusic日志上中文全是乱码,通过应用修改、保存的中文也全是乱码。

测试:

  1. rollback to Apuisc 3.0+J2SDK 1.4.2,恢复正常
  2. B节点上直接运行J2EE应用,正常。

分析:

中文乱码问题与本机环境有关,由于之前(J2SDK)是正常的,因此可以认为两节点环境配置无差,经检查(Java输出环境参数),的确无差。怀疑为MSCS在切换时对某些环境参数做了修改,于是在JSP代码中加入环境参数的打印语句,分别在A、B两节点上运行,检查输出结果,果然有不一致的地方:

A节点:file.encoding=GBK user.language=zh

B节点:file.encoding=CP1252 user.language=en

显然,MSCS在启动资源时,传递了错误的环境参数。

解决:

在应用的启动命令行里强制环境参数,即加入-Dfile.encoding=GBK -Duser.language=zh,然后通过MSCS启动应用,Apusic日志中文输出正常,登录应用,保存中文正常。

Ubuntu 下Java GUI应用中文乱码的解决方法

Monday, November 16th, 2009

每次更新JDK版本后,Java GUI应用的中文总是乱码,因此特在此记录解决方案备查:

  1. 在 jre/lib/fonts下建立fallback目录
  2. ln -s /usr/share/fonts/truetype/arphic/uming.ttf /usr/local/jdk/jre/lib/fonts/fallback/
  3. jre/lib/fonts/fallback/ 执行 mkfontscale
  4. 在fonts目录下执行cat fallback/fonts.scale >> fonts.dir

Roadmap of Java 7 updated

Friday, January 9th, 2009

Java 7路线图更新了:更多的I/O API(包括异步I/O)、动态语言、并发的类加载、取代CMS的G1垃圾收集器、以及众多小的语法增强,如 String 的 switch(终于等到了)。
  另一个引人注目的是,之前争论激烈的闭包没有出现在 Java 7中,好事坏事,不得而知。总的来说,Java朝着方便开发人员的道路上前进着。

面向契约的编程实践(二)

Thursday, May 15th, 2008

四、QBE 的职责

最近监控的一项目使用了(仿) QBE 技术(Query By Example) 。一直未深入研究过 QBE,但就 Query By Example 的字面理解,按给定的例子/模型进行查询。这个 example 自然应是“鲜明”的,即至少某个属性是明确有值的

to be continued …
(more…)

面向契约的编程实践(一)

Monday, May 12th, 2008



/* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:”"; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:”Times New Roman”; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} 一、releaseChunk()的故事

故事要从千年的妖精旅店说起。某天David贴出如下两个方法,问有什么区别:

protected static void releaseChunks(Chunk c) {

  while (c != null) {

    Chunk.releaseChunk(c);

    c = c.next

  }

}

 

protected static void releaseChunks(Chunk c) {

  while (c != null) {

    Chunk temp = c.next;

    Chunk.releaseChunk(c);

    c = temp;

  }

}

(more…)

很好很强大的 EJB 3.1

Tuesday, January 29th, 2008

  EJB 3.1 的新特性终于“泄露”出来,引人注目的有:

  • EJB 接口不再是必须的。这一来,EJB 看上去就是一个 POJO,如:
  • @Stateless public class PlaceBidBean {
    @PersistenceContext
    	private EntityManager entityManager;
    	public void placeBid (Bid bid) {
    	entityManager.persist(bid);
    	}
    }
    
  • Singleton Bean:由容器保证并发控制,当然也可由 Bean 自行管理。并发控制策略比较完善,这也得感谢 Doug Lea 在 Java 并发领域所作的大量工作。
  • 直接在 Servlet 容器中使用 EJB,如可以直接部署在 WEB-INF/classes 或 WEB-INF/lib 下面
  • EJB SPI,方便于诸如 Spring、iBATIS 等等之类的第三方组件的集成。

Powered by ScribeFire.

JPWT(机品问题)?

Saturday, December 29th, 2007

  前两天中山反映系统莫明其妙地退出,刚开始以为是 Jacob 并发调用冲突引起的,登陆上去一看,25日、26日均有一次 JVM Crash。一次是由虚拟机代码(~SafepointBlob)引起的 EXCEPTION_FLT_STACK_CHECK;一次是 Java 代码引起的 EXCEPTION_FLT_DIVIDE_BY_ZERO。
  两次 Crash 都指向 JDK/JRE 的 bug,但 JDK 1.4.2 系列应是不会再做维护的了。
  中山经常会发生有一些奇怪的问题,JDK 1.4.2_12用了这么多年了,现在还能碰上这种 bug,看来真是机品问题。

Powered by ScribeFire.

JACOB 调用 Office COM 组件的注意事项

Thursday, December 20th, 2007

  项目中使用 Jacob 调用 Office COM 组件也有好几年了,一直没有能完全摆脱并发时可能导致 JVM Crash 的困惑(通过序列化对 COM 组件的访问起到了一定效果)。期间曾怀疑过二进制兼容问题、STA/MTA 的问题等。
  从最近的一次 JVM dump 日志来看,引起 JVM Crash 的线程正在调用 ComThread.Release, (more…)