第一步:伺服器資料源釋出
第二步:持久化單元配置
persistence.xml 放置到jar包的META-INF(強烈注意,千萬不要用記事本寫persistence.xml 就算另存為UTF-8的格式,記事本會預設在前面加一個你看不見的BOM頭,而釋出時JBOSS解析XML是不認識它的。是以正确的做法是在eclipse中建立persistence.xml,然後再黏貼過去文本 就不會出問題了,我在這個地方栽過)
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
<persistence-unit name="mysql_pu" transaction-type="JTA">
<jta-data-source>java:MySqlDS</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
</properties>
</persistence-unit>
</persistence>
----------------------------------------------------------------------------------------------
ANT (其實eclipse就可以 幫我們打包工程了,是以我一般不用ANT,eclipse自己會用它自己的ANT)
build.xml
<?xml version="1.0"?>
<project name="EJB_JTA" default="ejbjar" basedir=".">
<property environment="env" />
<property name="src.dir" value="${basedir}/src" />
<property name="jboss.home" value="${env.JBOSS_HOME}" />
<property name="jboss.server.config" value="default" />
<property name="build.dir" value="${basedir}/build" />
<!-- Build classpath -->
<path id="build.classpath">
<fileset dir="${jboss.home}/client">
<include name="*.jar" />
</fileset>
<pathelement location="${build.dir}" />
</path>
<target name="undeploy" description="解除安裝EJB">
<delete file="${jboss.home}/server/${jboss.server.config}/deploy/${ant.project.name}.jar"/>
</target>
<target name="prepare" depends="undeploy">
<delete dir="${build.dir}"/>
<mkdir dir="${build.dir}" />
</target>
<target name="compile" depends="prepare" description="編繹">
<javac srcdir="${src.dir}" destdir="${build.dir}">
<classpath refid="build.classpath" />
</javac>
<!-- -->
<copy file="${src.dir}/META-INF/persistence.xml" todir="${build.dir}/META-INF"/>
</target>
<target name="ejbjar" depends="compile" description="建立EJB釋出包">
<jar jarfile="${basedir}/${ant.project.name}.jar" basedir="${build.dir}">
<fileset dir="build">
<include name="*"/>
</fileset>
</jar>
</target>
<target name="deploy" depends="ejbjar" description="釋出EJB">
<copy file="${basedir}/${ant.project.name}.jar" todir="${jboss.home}/server/${jboss.server.config}/deploy" />
</target>
</project>
第三步:注入EntityManager (不是線程安全的)
@PersistenceContext(unitName="my_u") //推薦的方式,EJB容器負責EntityManager 的生命周期
protected EntityManager entityManager;
-----------------------------------------------------------------------------------------------------------------------------------------
@PersistenceUnit(unitName="my_u")
protected EntityManagerFactory entityManagerFactory ;
@PostConstruct
EntityManager entityManager=entityManagerFactory .createEntityManager();
@PreDestroy
entityManager.close();