[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

一定要确保版本正确,否则会报错
Global site tag (gtag.js) - Google Analytics