使用embeded tomcat进行嵌入式javaee开发-启动tomcat

     昨天在网上研究了下关于将tomcat嵌入到主程序中进行运行,而不是像以前将一个web项目copy到tomcat中进行运行。之所以这样做的原因,即是因为项目部署到客户方,在进行更新的时候,需要手动地进行更新,再把相应代码copy到tomcat,然后再运行。运用embeded tomcat就可以将项目与tomcat分开,在进行更新时,先使用自定义的程序进行自动化更新,待更新完毕之后,再启动tomcat(或其它javaee容器)进行项目运行。

继续阅读“使用embeded tomcat进行嵌入式javaee开发-启动tomcat”

使用jacob或com4j将Excel转换为html

     前段时间碰到一个新需求,客户系统中有一个用于管理Excel的模块,excel文档由下边的人上传至系统,由管理员负责进行查看和审查。现在客户提出,因为excel默认需要下载才能打开,又加上客户要查看很多excel,每次都要下载下来。Office的Excel又启动得很快,客户就提出,是否可以直接在网页中查看,而不是以Excel的形式打开。比如,点击一个文档时,直接弹出一个界面,这个界面就是显示的excel的内容,而并不是由excel进行打开了。这样,客户每次看了之后,就可以直接关闭,再看下一篇文档,以节约时间和提高速度。下来研究了一下,可以使用jacob和com4j来将excel在服务器端转化为一个html,再将这个html发送到客户端进行查看。

继续阅读“使用jacob或com4j将Excel转换为html”

spring和aspectj的结合inject原理(下篇)

     上篇讲解了在spring中aspectj,对普通@Transactional的事务控制支持,这篇主要了解一下spring的@Configurable对新建对象的spring属性支持,并顺带发布一个简单的rich domain的例子:)
    上篇地址:http://www.iflym.com/index.php/code/the-theory-about-spring-and-aspectj-pre.html

继续阅读“spring和aspectj的结合inject原理(下篇)”

spring和aspectj的结合inject原理(上篇)

     最近研究下aspectj,特别是对里面的代码编织和上下文控制有兴趣。后面看了下spring对aspectj的支持,以及简单了解了一下spring与aspectj结合的产品spring roo。这里主要介绍一下由aspectj支持的@transactional注释和@configurable原理,具体它们之间的关系以及由此衍生的domain静态编织等。

继续阅读“spring和aspectj的结合inject原理(上篇)”

在Intellij idea下为tomcat7设置sessionCookieName

     由于现在的浏览器在对同一ip不同端口的cookie保存时,并没有区分不同端口的session信息。那么当我们时同开启两个tomcat进行开发时,由于用户验证信息是通过session进行保存的。那么就会出现,在同一个机器布置两个系统A和B,当用户A登陆A系统并成功之后,用户B登陆B系统之后,再回到A系统,当进行点击时,就会提示A用户已经不存在了,即相应的session信息已经不存在了。
    java的web系统,一般是通过jessionid来进行session标识的,即A系统和B系统均会与客户端进行jsessionid的信息交互。但由于这两个系统是在同一个ip上,所以客户端的浏览器并不能区分每一个jessionid与不同的系统之间的关系。相反,他会将后来的jessionid覆盖前一个cookie信息,即后面的登陆时,jessionid会将A系统的jsessionid信息覆盖掉,再请求A系统时,客户端就会发送系统B的jsessionid至A系统,这样A系统肯定会取不掉最开始的session信息,而被认为是新登陆了。
    解决的办法就是两个系统使用不同的session标识来保存信息,从tomcat7开始,为兼容j2ee规范,tomcat提供了一套标准的设置sessioncookiename的方法。即在整个tomcat下的conf目录下的context.xml中添加一个属性即可。

继续阅读“在Intellij idea下为tomcat7设置sessionCookieName”

使用JOTM进行Tomcat的JTA调用

     前段时间碰到一个需要访问多个数据库的例子,由于项目上是采用tomcat作为项目开发和布署,所以就没有考虑采用特定厂商的JTA实现,而是通过一个开源的JTA实现来完成tomcat和多个数据库之间的直接交互。
    多数据库访问最直接的问题就是在一个service中,存在着多个数据库dao对象,当前面的dao对象操作完成之后,如果后面的某一个dao访问出错,那么这个service应该如何进行回滚呢。一般来说,回滚应该是整个service一起回滚,所以就需要对这个service中的所有dao所涉及的sessionFactory进行处理。而对于hibernate+spring来说,spring是使用hibernate的sessionFactory来进行事务的控制和回滚的,而hibernate又是将由自己的一个transactionFactory引用相关的transaction来进行事务的提交和回滚。所以,如果要用到多个数据库,就需要一个支持多个数据库的transaction。JOTM就提供了一个开源的多数据库Transaction应用,它采用了支持XADatasource的Xpool来进行数据源管理。

继续阅读“使用JOTM进行Tomcat的JTA调用”