`
wangshare
  • 浏览: 20614 次
  • 性别: Icon_minigender_1
  • 来自: 佛在我心
社区版块
存档分类
最新评论

jboss5下面ejb3使用hibernate3.3 session

    博客分类:
  • java
阅读更多
使用ejb3的时候,一般使用JPA,也就是用entityManager作为连接来操作持久化的业务,如果用hibernate的session来操作持久化业务,将是怎样呢?

查了一些资料,也走了一点弯路,现在把细节公布出来,希望能帮助类似项目的开发者节省一些时间,简而言之,hibernate文档中关于 把SessionFactory注册到JNDI中的方法在jboss5环境下面有问题,jboss5针对这个场景有新的办法:



原来的(struts2.1 spring2.5 hibernate3.3)架构转为 struts2+spring2.5   +  jboss5( ejb3+hibernate3 )
为了继续能使用hibernate的会话以及一大堆BO DAO的代码,希望不使用entityManager,继续使用hibernate session,
那么为了得到sessionFactory,看了hibernate的文档,原来的mbean的方式是针对以前版本jboss4的写法,在jboss5下面报错。
<mbean code="org.hibernate.jmx.HibernateService"
    name="jboss.jca:service=HibernateFactory,name=HibernateFactory">

    <!-- 必须的服务 -->
    <depends>jboss.jca:service=RARDeployer</depends>
    <depends>jboss.jca:service=LocalTxCM,name=HsqlDS</depends>

    <!-- 将Hibernate服务绑定到JNDI -->
    <attribute name="JndiName">java:/hibernate/SessionFactory</attribute>

    <!-- 数据源设置 -->
    <attribute name="Datasource">java:HsqlDS</attribute>
    <attribute name="Dialect">org.hibernate.dialect.HSQLDialect</attribute>

    <!-- 事务集成 -->
    <attribute name="TransactionStrategy">
        org.hibernate.transaction.JTATransactionFactory</attribute>
    <attribute name="TransactionManagerLookupStrategy">
        org.hibernate.transaction.JBossTransactionManagerLookup</attribute>
    <attribute name="FlushBeforeCompletionEnabled">true</attribute>
    <attribute name="AutoCloseSessionEnabled">true</attribute>

    <!-- 抓取选项 -->
    <attribute name="MaximumFetchDepth">5</attribute>

    <!-- 二级缓存 -->
    <attribute name="SecondLevelCacheEnabled">true</attribute>
    <attribute name="CacheProviderClass">org.hibernate.cache.EhCacheProvider</attribute>
    <attribute name="QueryCacheEnabled">true</attribute>

    <!-- 日志 -->
    <attribute name="ShowSqlEnabled">true</attribute>

    <!-- 映射定义文件 -->
    <attribute name="MapResources">auction/Item.hbm.xml,auction/Category.hbm.xml</attribute>

</mbean>

现在jboss5下面,使用的是如下的方法:
在deploy目录下面,新建一个以 -hibernate.xml结尾的xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<hibernate-configuration xmlns="urn:jboss:hibernate-deployer:1.0">

   <session-factory name="java:/hib-timers/SessionFactory" bean="jboss.test.har:service=Hibernate,testcase=TimersUnitTestCase">
      <property name="datasourceName">java:/PostgresDS</property>
      <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
  <!--
      <property name="sessionFactoryInterceptor">org.jboss.test.hibernate.SimpleInterceptor</property>
  -->
      <property name="hbm2ddlAuto">update</property>
      <depends>jboss:service=Naming</depends>
      <depends>jboss:service=TransactionManager</depends>
   </session-factory>

</hibernate-configuration>

这样的话即可。启动jboss5出现 如下log:
18:30:47,906 INFO  [Hibernate] SessionFactory successfully built and bound into JNDI [java:/hib-timers/SessionFactory]
那么算是成功的创建了sessionFactory


检查一下上面的log,发现SimpleInterceptor有noFoundException,但是sessionFactory还是创建成功

再检查检查...


学习参考来源:http://community.jboss.org/wiki/JBossHibernate3


分享到:
评论
2 楼 hmq9545 2011-10-17  
看来楼主是个牛人呀,我正被这个问题困扰。
按你的方法增加了 -hibernate.xml文件,但客户端还是不能建立到访问EJB的连接,错误信息是 hibernate not bind. 请问应该如何解决呀?

是不是Hibernate实体 MyData.har文件中的 META-INF下的配置文件也要修改?

或者说是Jboss5修改了远程连结的端口了不是1099了?
1 楼 ch21 2010-07-21  
刚刚看了一篇文章
http://www.datadisk.co.uk/html_docs/java_app/jboss5/jboss5_deployment.htm

不知有用不!

相关推荐

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    第二部分详细讲解了jsf ri、jta、jndi、rmi、jms、javamail、ejb 3的session bean、message driven bean、jpa、jax-ws 2、jaas等java ee知识,这部分知识以jsf+ejb 3+jpa整合开发为重点,通过使用netbeans ide工具...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     3.5.2 访问Hibernate的Session接口  3.6 运行helloapp应用  3.6.1 创建运行本书范例的系统环境  3.6.2 创建helloapp应用的目录结构  3.6.3 把helloapp应用作为独立应用程序运行  3.6.4 把helloapp应用作为...

    Hibernate实战(第2版 中文高清版)

     1.4.4 Hibernate、EJB 3和JPA简介   1.5 小结   第2章 启动项目   2.1 启动Hibernate项目   2.1.1 选择开发过程   2.1.2 建立项目   2.1.3 Hibernate配置和启动   2.1.4 运行和测试应用程序   2.2...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     3.5.2 访问Hibernate的Session接口  3.6 运行helloapp应用  3.6.1 创建运行本书范例的系统环境  3.6.2 创建helloapp应用的目录结构  3.6.3 把helloapp应用作为独立应用程序运行  3.6.4 把helloapp应用作为...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     3.5.2 访问Hibernate的Session接口  3.6 运行helloapp应用  3.6.1 创建运行本书范例的系统环境  3.6.2 创建helloapp应用的目录结构  3.6.3 把helloapp应用作为独立应用程序运行  3.6.4 把helloapp应用作为...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     3.5.2 访问Hibernate的Session接口  3.6 运行helloapp应用  3.6.1 创建运行本书范例的系统环境  3.6.2 创建helloapp应用的目录结构  3.6.3 把helloapp应用作为独立应用程序运行  3.6.4 把helloapp应用作为...

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    JBoss Seam 简介......................................................................................................................................................................... 11 Chapter 1. ...

    kgshop金刚网店系统 v3.0.2

    KgShop,是国内一款快速/稳定/安全的开源电子商城系统,采用linux,mysql,srutsEX,hibernate,ejb3等技术,Kghop第一版诞生于2010年,经过多年开发,Kgshop系统已拥有快速、稳定、支持大量并发访问等软件特性,是10万...

    KgShop金刚网店系统 v3.0.2.rar

    KgShop,是国内一款快速/稳定/安全的开源电子商城系统,采用linux,mysql,srutsEX,hibernate,ejb3等技术,Kghop第一版诞生于2010年,经过多年开发,Kgshop系统已拥有快速、稳定、支持大量并发访问等软件特性,是10万...

    java面试题

    书写EJB要遵循一定的规范,另外要运行EJB,你需要有相应的EJB容器,比如WebLogic、jboss等,而JavaBean不需要,只需要安装Tomcat就可以了。EJB用于服务端的应用开发,而JavaBean用于客户端应用开发。 触发器? 答:...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

Global site tag (gtag.js) - Google Analytics