求一个hibernate jta 分布式事务的一个例子要求:
不是web项目不考虑容器(websphere\weblogic等),直接存java工程可以支持的例子

解决方案 »

  1.   

    我做过一个测试,环境是Jboss 数据库是mysql
    建一个EJB项目添加JPA支持,在Jboss  boss-4.0.5.GA\server\default\deploy目录下配置mysql的
    数据源(有几个配置几个),下面是我配置的数据源
    <datasources>
      <local-tx-datasource>
        <jndi-name>MySqlDS</jndi-name>
        <connection-url>jdbc:mysql://localhost:3306/ejb3</connection-url>
        <driver-class>com.mysql.jdbc.Driver</driver-class>
        <user-name>root</user-name>
        <password>root</password>
        <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>    <metadata>
           <type-mapping>mySQL</type-mapping>
        </metadata>
      </local-tx-datasource>
      
     <local-tx-datasource>
        <jndi-name>MySqlDS01</jndi-name>
        <connection-url>jdbc:mysql://localhost:3306/ejb3_01</connection-url>
        <driver-class>com.mysql.jdbc.Driver</driver-class>
        <user-name>root</user-name>
        <password>root</password>
        <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
        <metadata>
           <type-mapping>mySQL</type-mapping>
        </metadata>
      </local-tx-datasource>
    </datasources>然后在你的persistence.xml使用你配置的数据源,事务管理方式选用JTA
    具体代码如下: <persistence-unit name="test00" transaction-type="JTA">
       <jta-data-source>java:/MySqlDS</jta-data-source>
       <class>com.bjsxt.ejb.jpa.User</class>
       <exclude-unlisted-classes>true</exclude-unlisted-classes>
       <properties>
       <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
       <property name="hibernate.hbm2ddl.auto" value="update"/>
       <property name="hibernate.show_sql" value="true"/>
       </properties>
    </persistence-unit>


    <persistence-unit name="test01" transaction-type="JTA">
       <jta-data-source>java:/MySqlDS01</jta-data-source>
       <class>com.bjsxt.ejb.jpa.Person</class>
       <exclude-unlisted-classes>true</exclude-unlisted-classes>
       <properties>
       <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
       <property name="hibernate.hbm2ddl.auto" value="update"/>
       <property name="hibernate.show_sql" value="true"/>
       </properties>
    </persistence-unit>接着就是编写你自己的EJB了,然后写一个客户端去访问  远程的、本地的、webservice的都行
      

  2.   

    有不需要web容器支持的例子不
      

  3.   

    EJB的客户端有好几种,不一定要WEB容器支持啊
    你就写一个JAVA PROJECT的项目然后在里面调用EJB也可以
      

  4.   


    JTA 事务不是需要 Web、Servlet 容器支持,而是需要 J2EE 应用服务器支持,JTA 必须用在 J2EE 环境中,而不是 J2SE 环境中。如果需要在 J2SE 环境中支持分布式事务的话(比如说在 tomcat 中),可以去看看 jOTM 这个开源分布式事务框架。