以DHpayEJB工程为例。
DHpayEJB/src/META-INF下需要一个服务文件,比如hibernate-service.xml文件(jboss会将以-service.xml结尾的文件注册为服务)。内容如下
<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbean code="org.jboss.hibernate.jmx.Hibernate" name="jboss.har:service=Hibernate">
<!--在jboss中设置的jndi-->
<attribute name="DatasourceName">java:/OracleDS</attribute>
<attribute name="Dialect">org.hibernate.dialect.Oracle9Dialect</attribute>
<!--设置sessionFactory和jndi映射,在DAOFactroy.java中创建 SessionFactory实例时调用的jndi名字
将是此处设置的名字而不是数据源名称。
-->
<attribute name="SessionFactoryName">
java:/hibernate/dhgateSessionFactory
</attribute>
<attribute name="CacheProviderClass">org.hibernate.cache.HashtableCacheProvider</attribute>
<attribute name="ShowSqlEnabled">false</attribute>
</mbean>
</server>
在DAOFactory类中的按如下方式查找SessionFactory:
private void getSessionFactory() {
boolean productmode = false;
try {
//此处的jndi与hibernate-service.xml文件中配置一致
String jndisf = "java:/hibernate/dhgateSessionFactory";
sessionFactory = (SessionFactory) new InitialContext().lookup(jndisf);
productmode = true;
} catch (NameNotFoundException ex) {
// ignore just for flowing code to run
} catch (NamingException ex) {
// ignore just for flowing code to run
}
if (sessionFactory == null) {
throw new RuntimeException(
"can't not get sessionFactory , maybe you never deploy dhgate-hibernate.har to jboss ,please check it!!!");
}
}
数据源在xxx-ds.xml文件中配置。
这样hibernate和jboss就整合完成了。