Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Spring2.5.6+Hibernate3+RMI整合

今天做spring2.5.6+Hibernate3+RMI整合的程序昨天的问题: Unable to create Java 1.5 dependent parser: org.springframework.context.annotation.ComponentScanBeanDefinitionParser
编译程序遇到的问题,应该是spring版本和配置文件之间的问题。 见 http://www.linuxidc.com/Linux/2013-08/89162.htm解决方法:
要将编译工程的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 requiredat 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"/>相关阅读:Spring MVC+Spring3+Hibernate4开发环境搭建 http://www.linuxidc.com/Linux/2013-07/87119.htmSpring MVC整合Freemarker基于注解方式 http://www.linuxidc.com/Linux/2013-02/79660.htm基于注解的Spring MVC简单介绍 http://www.linuxidc.com/Linux/2012-02/54896.htmSpring MVC 框架搭建及详解 http://www.linuxidc.com/Linux/2012-01/52740.htm