环境Spring1.1.3,Hibernate 2.1.8, Websphere5.01
hbm文件采用通配符获取:
<bean class="com.wolfsquare.core.hibernate.DefaultSessionFactoryBean" id="sessionFactory">
<property name="dataSource"><ref bean="dataSource"></property>
<property name="mappingLocations">
<value>classpath:/**/*.hbm.xml</value>
</property>
<property name="hibernateProperties"><ref bean="hibernateProperties"></property>
</bean>
问题症状:
应用启动报错说不能重复定义某类,去掉该类后仍然报下一个类重复定义。
仔细查看Log输出发现,所有的hbm文件均找到了两份 -_-!!!
项目组认为应该是websphere不太厚道,在classpath中使用了多处目录(web-inf & classes),并以这些目录为根进行递归搜索匹配文件,可是如果这些目录有包含关系,WebSphere就没有处理重复查找的文件了。
于是在以上配置中改为:
<bean class="com.wolfsquare.core.hibernate.DefaultSessionFactoryBean" id="sessionFactory">
<property name="dataSource"><ref bean="dataSource"></property>
<property name="mappingLocations">
<value>classpath:/classes/**/*.hbm.xml</value>
</property>
<property name="hibernateProperties"><ref bean="hibernateProperties"></property>
</bean>
问题虽然解决了,可是tomcat中却又无效了。 :(
什么时候,企业应用才能一次拷贝,到处运行啊~~
本文描述了在一个Spring和Hibernate环境下,由于WebSphere服务器的特性导致HBM文件被重复加载的问题。通过调整配置文件中HBM文件的路径设置,最终解决了此问题,但又在Tomcat环境下失效。
4536

被折叠的 条评论
为什么被折叠?



