Following the "Using Hibernate with JBoss" on
http://www.hibernate.org/66.html ,
I created a sar package and deployed it to JBoss 4.0.0's default/deploy folder.
The sar package includes the following files:
/com/xx/hibernate/po/Teacher.class
/com/xx/hibernate/po/Student.class
/com/xx/hibernate/po/Book.class
/com/xx/hibernate/po/Teacher.hbm.xml
/com/xx/hibernate/po/Student.hbm.xml
/com/xx/hibernate/po/Book.hbm.xml
/hibernate.cfm.xml
and the file related to JBoss
/META-INF/jboss-service.xml
the /hibernate.cfm.xml looks like:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<!-- Generated file - Do not edit! -->
<hibernate-configuration>
<!-- a SessionFactory instance listed as /jndi/name -->
<session-factory>
<!-- properties -->
<property name="connection.datasource">java:/myHibernateSqlServerDB</property>
<property name="dialect">net.sf.hibernate.dialect.SQLServerDialect</property>
<property name="show_sql">true</property>
<property name="use_outer_join">true</property>
<!-- mapping files -->
<mapping resource="com/xx/hibernate/po/Book.hbm.xml"/>
<mapping resource="com/xx/hibernate/po/Student.hbm.xml"/>
<mapping resource="com/xx/hibernate/po/Teacher.hbm.xml"/>
</session-factory>
</hibernate-configuration>
the jboss-service.xml looks like:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE server>
<!-- Generated file - Do not edit! -->
<server>
<mbean code="net.sf.hibernate.jmx.HibernateService" name="jboss.jca:service=myHibernate">
<depends>jboss.jca:service=RARDeployer</depends>
<depends>jboss.jca:service=LocalTxCM,name=myHibernateSqlServerDB</depends>
<attribute name="MapResources">com/xx/hibernate/po/Book.hbm.xml,com/xx/hibernate/po/Student.hbm.xml,com/xx/hibernate/po/Teacher.hbm.xml</attribute>
<attribute name="JndiName">java:/HibernateFactory</attribute>
<attribute name="Datasource">java:/myHibernateSqlServerDB</attribute>
<attribute name="Dialect">net.sf.hibernate.dialect.SQLServerDialect</attribute>
<attribute name="UseOuterJoin">true</attribute>
<attribute name="ShowSql">true</attribute>
<attribute name="UserTransactionName">UserTransaction</attribute>
<attribute name="TransactionStrategy">net.sf.hibernate.transaction.JTATransactionFactory</attribute>
<attribute name="TransactionManagerLookupStrategy">net.sf.hibernate.transaction.JBossTransactionManagerLookup</attribute>
</mbean>
</server>
and the mssql-ds.xml looks like:
Code:
<datasources>
<local-tx-datasource>
<jndi-name>myHibernateSqlServerDB</jndi-name>
<connection-url>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=hibernate;SelectMethod=cursor</connection-url>
<driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver-class>
<user-name>sa</user-name>
<password></password>
<metadata>
<type-mapping>MS SQLSERVER2000</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
When firing up the JBoss, I got a error message:
15:46:42,070 FATAL [DatasourceConnectionProvider] Could not find datasource: java:/myHibernateSqlServerDB
javax.naming.NameNotFoundException: myHibernateSqlServerDB not bound
And if I removed the sar package from JBoss 4.0.0 's defaul/deploy folder, the Datasource just worked well.
So, why did the error happen when deploying my sar package???