[Tapestry5] 关于Tapestry5+spring+hibernate启动,报Service id 'HibernateEntityPackageManager' has already been defined错
guanyq
2007-11-05
系统使用包如下:
ant.jar antlr-2.7.5H3.jar asm.jar asm-attrs.jar bsf-2.3.0.jar c3p0-0.8.5.2.jar cglib-2.1.jar cleanimports.jar commons-codec-1.3.jar commons-collections-2.1.1.jar commons-dbcp.jar commons-fileupload-1.0.jar commons-lang-2.0.jar commons-logging-1.0.4.jar commons-logging-api-1.0.4.jar commons-pool.jar concurrent-1.3.2.jar connector.jar dom4j-1.6.1.jar easymock.jar easymockclassextension.jar ehcache-1.1.jar ejb3-persistence.jar groovy-1.0-jsr-05.jar hibernate3.jar hivemind-1.1.jar hivemind-lib-1.1.jar jaas.jar jacc-1_0-fr.jar javassist-3.0.jar jaxen-1.1-beta-4.jar jdbc2_0-stdext.jar jgroups-2.2.7.jar jta.jar junit.jar log4j-1.2.9.jar msbase.jar mssqlserver.jar msutil.jar mysql-connector-java-3.1.11-bin.jar ognl-2.6.7.jar oro-2.0.8.jar oscache-2.1.jar proxool-0.8.3.jar spring.jar swarmcache-1.0rc2.jar tapestry-annotations-5.0.6.jar tapestry-core-5.0.6.jar tapestry-hibernate-5.0.6.jar tapestry-ioc-5.0.6.jar tapestry-spring-5.0.6.jar tapestry-test-5.0.6.jar tapestry-upload-5.0.6.jar xerces-2.6.2.jar xercesImpl.jar xml-apis.jar hibernate-annotations.jar slf4j-simple-1.4.3.jar slf4j-api-1.4.3.jar 用jetty启动到加载上下文都是正确的,但是接着就报下面的错误,哪位达人能给出些建议,在此谢谢 01:21:48.468 INFO [main] org.springframework.aop.framework.DefaultAopProxyFactory.<clinit>(DefaultAopProxyFactory.java:59) >27> CGLIB2 available: proxyTargetClass feature enabled 01:21:48.531 INFO [main] org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:189) >09> Using context class [org.springframework.web.context.support.XmlWebApplicationContext] for root WebApplicationContext 01:21:48.531 INFO [main] org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199) >09> Root WebApplicationContext: initialization completed in 1610 ms org.mortbay.util.MultiException[java.lang.RuntimeException: Service id 'HibernateEntityPackageManager' has already been defined by org.apache.tapestry.hibernate.HibernateModule.build(Collection) (at HibernateModule.java:45) and may not be redefined by org.apache.tapestry.hibernate.HibernateModule.build(Collection) (at HibernateModule.java:45). You should rename one of the service builder methods.] at org.mortbay.http.HttpServer.doStart(HttpServer.java:686) at org.mortbay.util.Container.start(Container.java:72) at com.iw.plugins.jettyrunner.PluginRunner.launch(PluginRunner.java:282) at com.iw.plugins.jettyrunner.PluginRunner.launch(PluginRunner.java:104) at com.iw.plugins.jettyrunner.PluginRunner.main(PluginRunner.java:75) java.lang.RuntimeException: Service id 'HibernateEntityPackageManager' has already been defined by org.apache.tapestry.hibernate.HibernateModule.build(Collection) (at HibernateModule.java:45) and may not be redefined by org.apache.tapestry.hibernate.HibernateModule.build(Collection) (at HibernateModule.java:45). You should rename one of the service builder methods. at org.apache.tapestry.ioc.internal.RegistryImpl.<init>(RegistryImpl.java:203) at org.apache.tapestry.ioc.RegistryBuilder.build(RegistryBuilder.java:132) at org.apache.tapestry.internal.TapestryAppInitializer.getRegistry(TapestryAppInitializer.java:152) at org.apache.tapestry.TapestryFilter.init(TapestryFilter.java:76) at org.mortbay.jetty.servlet.FilterHolder.start(FilterHolder.java:71) at org.mortbay.jetty.servlet.WebApplicationHandler.initializeServlets(WebApplicationHandler.java:310) at org.mortbay.jetty.servlet.WebApplicationContext.doStart(WebApplicationContext.java:509) at org.mortbay.util.Container.start(Container.java:72) at org.mortbay.http.HttpServer.doStart(HttpServer.java:708) at org.mortbay.util.Container.start(Container.java:72) at com.iw.plugins.jettyrunner.PluginRunner.launch(PluginRunner.java:282) at com.iw.plugins.jettyrunner.PluginRunner.launch(PluginRunner.java:104) at com.iw.plugins.jettyrunner.PluginRunner.main(PluginRunner.java:75) java.lang.RuntimeException: Service id 'HibernateEntityPackageManager' has already been defined by org.apache.tapestry.hibernate.HibernateModule.build(Collection) (at HibernateModule.java:45) and may not be redefined by org.apache.tapestry.hibernate.HibernateModule.build(Collection) (at HibernateModule.java:45). You should rename one of the service builder methods. at org.apache.tapestry.ioc.internal.RegistryImpl.<init>(RegistryImpl.java:203) at org.apache.tapestry.ioc.RegistryBuilder.build(RegistryBuilder.java:132) at org.apache.tapestry.internal.TapestryAppInitializer.getRegistry(TapestryAppInitializer.java:152) at org.apache.tapestry.TapestryFilter.init(TapestryFilter.java:76) at org.mortbay.jetty.servlet.FilterHolder.start(FilterHolder.java:71) at org.mortbay.jetty.servlet.WebApplicationHandler.initializeServlets(WebApplicationHandler.java:310) at org.mortbay.jetty.servlet.WebApplicationContext.doStart(WebApplicationContext.java:509) at org.mortbay.util.Container.start(Container.java:72) at org.mortbay.http.HttpServer.doStart(HttpServer.java:708) at org.mortbay.util.Container.start(Container.java:72) at com.iw.plugins.jettyrunner.PluginRunner.launch(PluginRunner.java:282) at com.iw.plugins.jettyrunner.PluginRunner.launch(PluginRunner.java:104) at com.iw.plugins.jettyrunner.PluginRunner.main(PluginRunner.java:75) |
|
lococode
2007-11-05
1.去除不必要的包,
2.log4j-1.2.9.jar 》 log4j-1.2.14.jar 3.明确核心包版本,spirng,hibernate... 4.提供详细的配置文件(web.xml ...) 5.如果只是一个示例,提供示例文件。 6.和hibernate集成可参见 http://tapestry.apache.org/tapestry5/tapestry-hibernate/ 7.可参看 tapestry-hibernate 的test。 |
|
guanyq
2007-11-05
hibernate-annotations.jar (3.2.1.GA)
hibernate3.jar (3.2.5.ga) spring(1.2.6) 配置文件web.xml <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>My Tapestry Application</display-name> <context-param> <param-name>tapestry.app-package</param-name> <param-value>com.org.example.myapp</param-value> </context-param> <filter> <filter-name>app</filter-name> <!-- Special filter that adds in a T5 IoC module derived from the Spring WebApplicationContext. --> <filter-class> org.apache.tapestry.spring.TapestrySpringFilter </filter-class> </filter> <filter-mapping> <filter-name>app</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/applicationContext.xml </param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> </web-app> 配置文件applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://localhost:3306/test</value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value>root</value> </property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="configurationClass"> <value>org.hibernate.cfg.AnnotationConfiguration</value> </property> <property name="configLocation"> <value>/WEB-INF/hibernate.cfg.xml</value> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.current_session_context_class"> thread </prop> <prop key="hibernate.transaction.factory_class"> org.hibernate.transaction.JDBCTransactionFactory </prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.cache.provider_class"> org.hibernate.cache.NoCacheProvider </prop> </props> </property> </bean> <!--transactionManager--> <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref local="sessionFactory" /> </property> </bean> <bean id="transactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager"> <ref local="txManager" /> </property> <property name="transactionAttributes"> <props> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> <property name="target"> <bean id="UserDAO" class="com.soueasy.community.admin.hibernate.dao.impl.UserDaoImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean> </property> </bean> <bean id="BeanTest" class="org.example.myapp.service.BeanTest" /> <bean id="UserService" class="org.example.myapp.service.UserService" /> </beans> 配置文件hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.hbm2ddl.auto">create-drop</property> <property name="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </property> <property name="hibernate.bytecode.use_reflection_optimizer"> true </property> <property name="default-lazy">false</property> <!-- 用于hibernate持久化的对象" --> <mapping class="org.example.myapp.hibernate.bean.User" /> </session-factory> </hibernate-configuration> |
|
lococode
2007-11-05
guanyq 写道 hibernate-annotations.jar (3.2.1.GA)
hibernate3.jar (3.2.5.ga) spring(1.2.6) 配置文件web.xml <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>My Tapestry Application</display-name> <context-param> <param-name>tapestry.app-package</param-name> <param-value>com.org.example.myapp</param-value> </context-param> <filter> <filter-name>app</filter-name> <!-- Special filter that adds in a T5 IoC module derived from the Spring WebApplicationContext. --> <filter-class> org.apache.tapestry.spring.TapestrySpringFilter </filter-class> </filter> <filter-mapping> <filter-name>app</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/applicationContext.xml </param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> </web-app> 配置文件applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://localhost:3306/test</value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value>root</value> </property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="configurationClass"> <value>org.hibernate.cfg.AnnotationConfiguration</value> </property> <property name="configLocation"> <value>/WEB-INF/hibernate.cfg.xml</value> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.current_session_context_class"> thread </prop> <prop key="hibernate.transaction.factory_class"> org.hibernate.transaction.JDBCTransactionFactory </prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.cache.provider_class"> org.hibernate.cache.NoCacheProvider </prop> </props> </property> </bean> <!--transactionManager--> <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref local="sessionFactory" /> </property> </bean> <bean id="transactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager"> <ref local="txManager" /> </property> <property name="transactionAttributes"> <props> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> <property name="target"> <bean id="UserDAO" class="com.soueasy.community.admin.hibernate.dao.impl.UserDaoImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean> </property> </bean> <bean id="BeanTest" class="org.example.myapp.service.BeanTest" /> <bean id="UserService" class="org.example.myapp.service.UserService" /> </beans> 配置文件hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.hbm2ddl.auto">create-drop</property> <property name="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </property> <property name="hibernate.bytecode.use_reflection_optimizer"> true </property> <property name="default-lazy">false</property> <!-- 用于hibernate持久化的对象" --> <mapping class="org.example.myapp.hibernate.bean.User" /> </session-factory> </hibernate-configuration> 能用高版本的 spring 吗? 2.0.6? 下次 format 一下你要给别人看得配置文件。 |
|
guanyq
2007-11-05
ok
spring版本换成1.2.8 hibernate-3.2.1.ga hibernate-annotations-3.2.1.ga log4j-1.2.14 还是一样报错 |
|
guanyq
2007-11-05
高版本的 spring2.0.6也是一样错
是不是哪里配置错了? |
|
guanyq
2007-11-05
终于搞好了,谢谢lococode的帮助
原因还是包版本不对 最后还是按照官方网spring,hibernate的版本依赖关系重新构造, 构造完后,还是少一些包,根据maven的提示去完善就是 其中有个jta的包,需要自己构建jar包 首先到http://java.sun.com/products/jta/下载class的zip包, 保存到本地指定目录,然后启动cmd,在zip包目录下执行如下命令: mvn install:install-file -Dfile=./jta-1_0_1B-classes.zip -DgroupId=javax.transaction -DartifactId=jta -Dversion=1.0.1B -Dpackaging=jar jta包将被拷贝到maven的repository\javax\transaction\jta\1.0.1B目录下 用maven导入即可 另外还少对应的数据库驱动包 spring-hibernate3包 均通过maven导入即可 T5的hibernate依赖关系请查看:http://tapestry.apache.org/tapestry5/tapestry-hibernate/dependencies.html#org.hibernate:hibernate-annotations:jar T5的spring依赖关系请查看:http://tapestry.apache.org/tapestry5/tapestry-spring/dependencies.html 一定要确保版本正确,否则会报错 |