解惑

解己之惑,解人之惑

2007年7月 (第1页共2页)

使用JBossCache作为Hibernate的二级缓存

这个是最近的工作成果,使用JBossCache作为Hibernate的二级缓存,因为JBossCache支持Transactional的缓存策略(Strategy),而且支持Cluster,Cluster还支持Invalidation的方式,比Replication方式更好,对两种方式同时支持同步和异步,还有其他很多特性,比OSCache好得多。
由于我们是把Hibernate作为服务配置的,所以CacheProviderClass使用的是org.jboss.hibernate.cache.DeployedTreeCacheProvider,需要另外一个MBean进行TreeCache的配置:
阅读全文

搞清楚自己的血型了

已经不记得有多少人问我的血型了,但是我一直不知道,从来没有输过血,也没有献过血,我这个体格的,献的话人家也不会收的。
血型是A型,当然,先看看A型血的人的气质,好像蛮符合的

爽!

闲来无事玩Travian,经常被人欺凌,上次就被人动用车子灭了一次,毫无还手之力,不甘心又重新开始玩,这次很快就近加入一个联盟,并且我隔壁最近的老大后来也加入了那个联盟,最近几天有个家伙又盯上我了,而且军力比较雄厚,没有办法请旁边的老大帮忙,好家伙,这位老大派了500多的兵过来,一下把对方派来的200多帝国兵干掉了(他也牺牲了200个兵),真是一个爽啊,我可怜的30多个兵竟然剩下一大半,让那位老大从我这里搬资源(我把号托管给他了),竟然大手一挥,不用了,那点兵一天就补回来了,可怜的我,在虚拟世界要傍大款度日

公证下好贵

上个月的大连之行没有把公积金弄好,只能委托朋友办,但是必须公证,原来以为只要100块就搞定了,谁知道竟然收了260块,200块的公证费,还有60块是委托书的起草费。什么事情在没有办过以前都是一头雾水,办完以后其实也很简单,不过还是比较缺乏像我这样喜欢给大家总结经验的人啊

公证处的位置很好找,凤阳路的那个是365天营业的,浦东的只是正常工作日办公。
委托书的内容嘛,很简单,注意体现以下几点就行:

  • 为何委托他人
  • 受委托人的姓名、身份证号
  • 委托事务
  • 委托前往的机构
  • 委托人是否可以再委托他人办理
  • 委托的有效时间

以上的六点内容,价值RMB60元整,当然,你可能省不了这笔钱

URLDataSource请求资源三次的问题

这个是进公司的第二个任务,由于是多个应用服务器集群,而产生pdf报表和发送邮件是通过JMS的异步方式,因此可能是服务器A产生PDF文件,而服务器B发送邮件,原来的实现是通过FileDataSource从本机取,因此有时候就不能成功发送邮件,后来修改为使用URLDataSource从自己写的一个Servlet取,但是很奇怪的是对于每个资源都会被请求三次,上网找了下,有个人也遇到同样的问题,但是他最后的解决方案不行,最后看了下URLDataSource的源代码(有兴趣的可以自己看看,注意getContentType和getInputStream的实现,每次都会开始一个新的请求),然后把URLDataSource重命名为自己的类试了下,发现getContentType方法会被调用两次,getInputStream方法被调用一次,对类稍稍做了修改,就是getContentType直接返回application/octet-stream类型,不真正请求服务器,问题解决,连带着昨天不能删除文件的问题也解决了,因为这样程序运行比较顺利,文件指针没有被占用,删除总是比较成功。
修改后的源代码:
阅读全文

文件删除不成功

Java的功能在某些地方确实很有缺陷,File的delete方法就是一个很大的问题,如果文件被使用而不能删除,那么这个方法调用是不会抛出异常的,也不会返回任何信息,就像方法调用根本没有发生一样。由于是临时产生的文件,如果不能删除,那么文件越来越多就可能撑爆硬盘。
方法当然可以有一些,例如可以加一个线程不停的试,,删除不成功就等待一段时间,直到删除成功,这个方法应该是比较有效的,因为大部分情况下,文件只是临时被占用,可能前后就差那么几百毫秒,当然,这个方法不完美,还是可能有漏网之鱼,明天再好好想想方法了。

Hot Deploy成功

前几天曾经抱怨新公司的开发环境太复杂,不能Hot Deploy,极其影响开发的效率,今天成功的在Eclipse(实际上是MyEclipse)中配置好了可以Hot Deploy的环境,其实也很简单,我们的工程发布非常的复杂,sar, ear, har, jar, war一个套一个,要想严格的按照那个目录结果配置工程几乎不可能,但是要想Hot Deploy很简单,配置一个Web工程,引入全部的工程需要的类,把Jar包修改为手工发布,然后使用MyEclipse的Manage Deployment发布,只要你的这个web工程先于原来的工程发布就行了,对于同名的类,由于新的工程先加载,所以也就可以达到Hot Deploy的目的了,现在修改了源代码,保存一下就可以生效了,爽啊

更新:
关于类加载,找到理论依据:
Packaging J2EE applications for JBOSS 3.2.1

By default, all the EARs in a jboss instance, under, JBOSS_HOME/server/jboss-instance-name/deploy/ use the same loader repository and hence, a class found in one can be used by the other. But we don’t like calling this bug a feature as it goes against the idea of scoping by EAR. Fortunately, JBoss provides a way to supress this behaviour through what they call as deployment based scoping.

JSP的一个小误区

相信很多人在面试的时候都会被问到JSP和Servlet的区别,我认为JSP就是功能受限的Servlet,因为JSP不能作为后台的控制Servlet用,但是实际上我的这个想法是错误的,JSP是可以像普通的Serlvet那样作为控制用的Servlet用的,在web.xml里面定义一下就行了:
    <servlet>
        <servlet-name>control</servlet-name>
        <jsp-file>/jsp/control.jsp</jsp-file>
    </servlet>

还不算倒霉到家

半个多月前说自己很倒霉,现在看来还不是倒霉到家,去新公司之前一直很不安,原因主要是:

  • 面试的时候就被告知是全英文环境,我的英语不是很好,担心开始完全不能适应
  • 上网看公司的评价是群硕第二,担心狂加班
  • 住的地方离公司比较远,现在又没有地铁,担心被挤死或者每天站三个多小时累死

到新公司一个星期了,结果比预料的好得多:

  • 几个大BOSS不在,大家都说中文,除了跟这里的老外说话外,虽然我的两个直接上司都是老外,但是他们这周都回美国,至少下周才回,有几天的缓冲期,这个星期狂补听力,主要是其中一个华裔血统的老外说话太快,而且口音不太纯正,另外的纯老外的英语还好懂一些,他知道我们英语不是非常好,说得比较慢,发音也比较正一些。
  • 没有强制加班的要求,很多人经常是六点下班就走了,我每天都是九点半以后到公司,所以也不好意思太早走,另外公司给七点半以后走的人供应晚餐(虽然现在已经变成实际意义上的福利,不论什么时候走都有),所以一般是7点以后,8点半以前走,也不考勤,只要求一般在10点到下午3点之间在公司就行
  • 公交车方面,上班的时候是起点,而且我8点多坐已经没有那么多人了,位子是肯定有的,现在回来一般是7点多走,位子也很空,而且司机开得比较快,这个时间段车还是比较少的(浦东)

AR何其多

看了新公司的发布目录,感叹公司把Java相关的发布包用得出神入化,从最简单的Jar到最常见的War,以及中大型J2EE工程中的Ear,然后是JBoss特定的Sar,以及被Jboss收购后的Hibernate提供的Har,真的是被AR搞混头了,特此列举一下:

  • JAR:java类文件的打包发布
  • WAR:WEB应用的打包发布
  • EAR:J2EE应用的打包发布,一般包括EJB
  • SAR:JBoss的Service打包发布
  • HAR:Hibernate打包发布

2007年7月13日更新:
一个E文的,好像比我的全面:

Intro to JARs, WARs, SARs, RARs and EARs

Anyone worth calling oneself a java developer would know what a JAR file is. It’s an archive, just like ZIPs and TARs are. In addition to being a simple archive, a JAR file can store some very useful meta information about its contents. A special file, META-INF/MANIFEST.MF is where a jar records meta information.

EJBs are packaged as jar files as well, albeit with one or more special files under META-INF, called deployment descriptors.

A WAR file packages a web application. What does a web application consist of? It consists of

  1. HTML/JSP pages and other resources such as images/javascript files/stylesheets that need to be reachable via URLs.
  2. Additional files such as java servlets, utility classes and jars for use in servlets/JSPs and deployment descriptors that should not be reachable via URLs.

The latter are stored under a special folder named WEB-INF. Both are then archived in JAR whose extension is modified as WAR to distinguish it as a java web application.

Similarly, RAR files are JAR files used to package resource adapter modules as defined under the J2EE Connector Architecture (JCA) and SAR files are the ones used to package JMX-enabled services in JBoss.

Just as all rivers are destined to go merge with the sea, all these archives that relate to a single enterprise application may be packaged under one EAR.

更早的文章

© 2025 解惑

本主题由Anders Noren提供向上 ↑