向银联upjas(jboss7.2)迁移总结
背景:
目前项目运行于tomcat与was,使用了公司框架,配备了双数据源。需要向银联开发的中间件upjas(基于jboss 7.2)上迁移,最终迁移成功:
遇到三大问题,先总结如下:
总结:
-
1)Jndi问题。
在jboss的modules中安装数据库驱动没有成功,原因可能在于需要写一个modules.xml文件配置较多。
后来按照官网文档只需将数据库驱动复制到deployments目录下即可成功,当然驱动包要有一个services.xml,见图1(其中sqlserver-jdbc-4.0.jar 就是数据库驱动)。
驱动安装完后,在standalone.xml里配置datasources即可,注意使用的驱动名(driver元素)就是上面jar包的名字,见图2。
-
2)vfs问题
因为jboss使用了vfs概念,发布的war里的文件常常以vfs://开头,而非file://开头,导致框架自动扫描appContext-*.xml扫描不到必要的文件,导致很多重要的bean如sessionFactory没有初始化,getSession()时候出现NullPointer。
办法是修改了框架代码支持vfs资源。修改后的框架更新包是webframe-core-spring-2.0.1.jar。
3)双sessionFactory问题。
公司框架搭载一个数据源。项目代码中,第二个数据源通过一个appContext-xx.xml文件引入第二个sessionFactory,和使用这个数据源的service,这在tomcat和was中没出现问题。但是两个sessionFactory先后在同一上下文创建,且命名相同,存在隐患。果然在jboss下创建第二个时候,第一个设置为null了。
办法是将第二个sessionFactory另外命名(本例中命名为 tdsessionFactory,在<session-factory>元素和 HibernateSupport.java中同时修改),见图三。