4.3.8. 当移植 Seam 2.2 Booking 例程时所作修改的总结
尽管提前决定依赖关系并在一个步骤里添加隐性的依赖关系具有更高的效率,这种方式还是展示了问题是如何出现在日志里并提供如何调试和解决的信息。下面是在移植到 JBoss EAP 6 时所作修改的总结。
重要
直接使用 Hibernate 的 Seam 2.2 应用程序可以使用包裹在应用程序里的一个 Hibernate 3 版本。而通过 JBoss EAP 6 的 org.hibernate 模块提供的 Hibernate 4,不被 Seam 2.2 支持。这个例子将帮助你在 JBoss EAp 6 运行应用程序。请注意,将 Hibernate 3 包裹在 Seam 2.2 应用程序不是被支持的配置。
- 你在 EAR 的
META-INF/目录里创建了一个jboss-deployment-structure.xml文件。你添加了<dependencies>和<exclusions>来解析ClassNotFoundExceptions。这个文件包含下列数据:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 你将下列 JAR 从
EAP5_HOME/jboss-eap-5.1/seam/lib/目录复制到jboss-seam-booking.ear/lib/目录以解析ClassNotFoundExceptions:- hibernate-core.jar
- hibernate-validator.jar
- 你修改了
jboss-seam-booking.jar/META-INF/persistence.xml文件。- 你修改了
jta-data-source元素以使用 JBoss EAP 6 附带的示例数据库。<!-- <jta-data-source>java:/bookingDatasource</jta-data-source> --> <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
<!-- <jta-data-source>java:/bookingDatasource</jta-data-source> --> <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 你注释了 hibernate.cache.provider_class 属性:
<!-- <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/> -->
<!-- <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/> -->Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 你修改了 WAR 的
lib/components.xml文件来使用新的 JNDI 绑定。- 你替换了现有的
core:init元素:<!-- <core:init jndi-pattern="jboss-seam-booking/#{ejbName}/local" debug="true" distributable="false"/> --> <core:init jndi-pattern="java:app/jboss-seam-booking.jar/#{ejbName}" debug="true" distributable="false"/><!-- <core:init jndi-pattern="jboss-seam-booking/#{ejbName}/local" debug="true" distributable="false"/> --> <core:init jndi-pattern="java:app/jboss-seam-booking.jar/#{ejbName}" debug="true" distributable="false"/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 你为 "EjbSynchronizations" 和 "TimerServiceDispatcher" JNDI 绑定添加了 component 元素:
<component class="org.jboss.seam.transaction.EjbSynchronizations" jndi-name="java:app/jboss-seam/EjbSynchronizations"/> <component class="org.jboss.seam.async.TimerServiceDispatcher" jndi-name="java:app/jboss-seam/TimerServiceDispatcher"/>
<component class="org.jboss.seam.transaction.EjbSynchronizations" jndi-name="java:app/jboss-seam/EjbSynchronizations"/> <component class="org.jboss.seam.async.TimerServiceDispatcher" jndi-name="java:app/jboss-seam/TimerServiceDispatcher"/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow