前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >spring2.5.6+Hibernat

spring2.5.6+Hibernat

作者头像
py3study
发布2020-01-14 16:55:55
6990
发布2020-01-14 16:55:55
举报
文章被收录于专栏:python3

今天做spring2.5.6+Hibernate3+RMI整合的程序

昨天的问题:  Unable to create Java 1.5 dependent parser: org.springframework.context.annotation.ComponentScanBeanDefinitionParser 编译程序遇到的问题,应该是spring版本和配置文件之间的问题。 解决方法: 要将编译工程的jre改为1.6.0.3+spring2.5.6+hibernate3.3.2这样才匹配 另外,要将applicationContext.xml放在src目录下才能直接通过 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");配置文件导入成功 还有,对应类的****.hbm.xml文件最好一定和类文件放在一起,否则也容易找不到!! 并且要在配置文件中加相对路径

错误spring+Hibernate整合普通java工程, 网上很多都是web工程 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 少包conmons—logging.jar包

j今天的 问题:在正确整合spring2.5.6+hibernate3之后配置文件加入RMI服务配置,即报错: Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'logPersonService' defined in class path resource [server.xml]: Cannot resolve reference to bean 'logPerson' while setting bean property 'service';  nested exception is org.springframework.beans.factory.BeanCreationException:  Error creating bean with name 'logPerson' defined in class path resource [server.xml]:  Invocation of init method failed; nested exception is java.lang.IllegalArgumentException:   'sessionFactory' or 'hibernateTemplate' is required

at com.test.ServicTest.main(ServicTest.java:15) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'logPerson' defined in class path resource [server.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required

解决方法:去掉重复定义的bean id原来有问题的配置文件如下(注意黑体字的地方):

<!-- Pass the session factory to our UserDAO --> <bean id="PersonTarget" class="com.hibernate.LogPerson">  <property name="sessionFactory"><ref local="SessionFactory"/></property> </bean>

<!-- RMI service -->

<bean id="logPerson" class="com.hibernate.LogPerson"/>   <bean id="logPersonService"      class="org.springframework.remoting.rmi.RmiServiceExporter">  <!-- RmiServiceExporter 对服务名没有特殊要求 -->     <property name="serviceName">    <value>LogPerson</value>   </property>     <property name="service">    <ref bean="logPerson"/>   </property>   <property name="serviceInterface">    <value>com.rmi.ILogPerson</value>   </property>       <!-- 避免与默认的RMI注册端口冲突,因此修改为1200 -->   <property name="registryPort">    <value>1200</value>   </property>

</bean>

修改过正确的配置文件如下:

<!-- Pass the session factory to our UserDAO --> <bean id="PersonTarget" class="com.hibernate.LogPerson">  <property name="sessionFactory"><ref local="SessionFactory"/></property> </bean>

<!-- RMI service -->

<bean id="logPersonService" class="org.springframework.remoting.rmi.RmiServiceExporter">  <!-- RmiServiceExporter 对服务名没有特殊要求 -->     <property name="serviceName">    <value>LogPerson</value>   </property>     <property name="service">    <ref bean="logPerson"/>   </property>   <property name="serviceInterface">    <value>com.rmi.ILogPerson</value>   </property>       <!-- 避免与默认的RMI注册端口冲突,因此修改为1200 -->   <property name="registryPort">    <value>1200</value>   </property>

</bean>

总结: 对于spring+hibernate+RMI合并的配置文件,所有的类都不要进行bean id的重复定义。 例如在<!-- Pass the session factory to our UserDAO -->部分已经定义了com.hibernate.LogPerson类 <bean id="PersonTarget" class="com.hibernate.LogPerson">   <property name="sessionFactory"><ref local="SessionFactory"/></property> </bean> 后面的部分就不能再重复定义,否则就会报错 <!-- RMI service -->重复定义 <bean id="logPerson" class="com.hibernate.LogPerson"/>

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/07/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档