前段时间由于客户需要,进行系统的分布式部署,原来我们的系统在架构的设计上主要使用EJB的方式来实现的,通过一个代理来进行app端的功能的调用,由于已经2年多没有对这样的问题进行部署了,所以产品部署起来比较麻烦,主要源于以下几个方面(系统采用struts+hibernate+spring)
1.有些地方web和app不能很好的分离。主要是代码的书写习惯的问题。
2.app端和web端存在紧密耦合,分离起来比较复杂。
3.由于前期没有使用EJB部署,很多程序和内容尤其直接使用JDBC的地方使用了Commit和Rollback这样会导致使用的容器出现错误,我们使用的Weblogic,因为事务的处理由容器本身完成了,而原来的Commit和Rollback就会出现错误,主要包的错误就是两段提交异常
4.需要将EJB的配置文件进行修改。将trans-attribute改成下面的形式,负责在调用WTC的时候会出现错误javax.transaction.TransactionRolledbackException: BEA1-0045FDF1F30887325B62: javax.transaction.xa.XAException 。
<trans-attribute>NotSupported</trans-attribute>
5.总归部署起来比较麻烦,各位朋友如果想不重蹈我的噩梦,请在准备开发前有个好的规划,可以参考我的文章如何构建一个大型的商务系统