`
wangshare
  • 浏览: 21333 次
  • 性别: 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

不知有用不!

相关推荐

    Jboss下hibernate整合EJB

    本文将详细讲解如何在JBoss应用服务器上整合Hibernate和EJB。 **一、EJB简介** EJB是Java EE平台的一部分,它提供了一种标准的方式来创建分布式、事务处理、安全和可管理的企业级服务。EJB类型主要包括会话Bean...

    Jboss6.0.0 M4配置jndi和hibernate

    3. **SessionFactory 创建**:在应用程序中,通过读取`hibernate.cfg.xml`创建SessionFactory,并使用它来创建Session,进而进行数据库操作。 ```java Configuration config = new Configuration().configure(); ...

    EJB3.0标准技术手册与JBoss实践指南第5版.rar

    EJB3.0通过JPA(Java Persistence API)引入了实体管理,使得开发者可以使用ORM(对象关系映射)框架,如Hibernate,来实现数据访问层。 2. **会话Bean**:会话Bean提供业务逻辑,可以分为有状态和无状态两种。无...

    精通JBoss——EJB与Web Services开发精解

    《精通JBoss——EJB与Web Services开发精解》是一本深入探讨企业级Java应用开发的专业书籍,专注于JBoss应用服务器的使用以及EJB(Enterprise JavaBeans)和Web Services的集成开发。本书旨在帮助读者全面掌握如何在...

    EJB3入门例子

    1. **注解驱动(Annotation-based)**:在EJB3中,开发者可以使用注解来声明组件的角色、生命周期方法和持久化属性,如`@Entity`、`@Stateless`、`@Stateful`、`@SessionBean`等,大大减少了XML配置文件的使用。...

    EJB3.0开发Session Bean.rar

    **企业级JavaBeans (EJB) 3.0:核心概念与Session Bean详解** 企业级JavaBeans(Enterprise JavaBeans,简称EJB)是Java平台上用于构建可部署在服务器端的企业级应用的重要组件模型。EJB 3.0是EJB规范的一个重大...

    myEclipse+Jboss+mysql+EJB

    结合这个配置,我们可以推断这是一个使用myEclipse进行开发,Jboss作为应用服务器,mysql作为数据库,且应用中可能使用了EJB技术的环境。开发者可以利用myEclipse的集成特性,编写EJB组件,并在Jboss上进行部署和...

    EJB3.0所需jar文件(60多个)

    3. **Session Beans**:会话bean(Session Bean)是EJB3.0中的业务逻辑组件,它们负责处理应用逻辑。相关的jar可能包括EJB容器提供的API,如`ejb-api.jar`,以及可能的实现库,如`geronimo-ejb_3.1_spec.jar`。 4. ...

    ejb3-persistence.jar

    此外,EJB3的持久化机制也可以与Hibernate、OpenJPA等ORM工具配合使用,提供更高级的功能和性能优化。 总结,ejb3-persistence.jar是Java EE中实现EJB3持久化规范的关键组成部分,它极大地简化了Java应用与数据库...

    开发ejb3的第一个实例

    在本实例中,我们将使用MyEclipse6.0作为集成开发环境,以及JBoss3.2.1作为应用服务器来创建一个基本的EJB3入门项目。 **1. 开发环境准备** 首先,确保安装了JDK 1.5或更高版本,因为EJB3需要Java 5以上的支持。在...

    EJB3 in action 源代码

    3. **无容器依赖的Session Bean**:EJB3的无容器依赖的Session Bean(也称为“Plain Old Java Object”,POJO)允许开发者使用普通Java类来实现业务逻辑,无需继承特定的接口或实现特定的方法。 4. **容器管理事务*...

    EJB2和EJB3的架构异同.doc

    尽管JPA允许使用注解代替XML配置,但仍然需要一个名为persistence.xml的配置文件来指定数据源和其他服务器特定的属性,如在JBoss中配置Hibernate。 ```xml &lt;persistence-unit name="Ejb3Tutorial"&gt; ...

    Hibernate所需要的jar包

    5. **javassist.jar**:Hibernate使用这个库来动态生成字节码,处理实体类的动态代理和类转换。 6. **jta.jar**:Java Transaction API,用于处理事务管理,确保数据的一致性和完整性。 7. **jboss-logging.jar**...

    ejb3整合Struts1.x实例

    5. **Action和EJB3的交互**:在Action中注入EJB3 Session Bean,或者通过JNDI查找。例如,使用`@EJB`注解注入: ```java @EJB private MySessionBean ejbRef; ``` 6. **视图层**:Struts1.x的视图通常由JSP页面...

    hibernate3 所需要的所有jar包

    1. **hibernate3.jar**:这是Hibernate的核心库,包含了许多主要的类和接口,如SessionFactory、Session、Query等,以及实体管理、事务处理和事件监听等功能。 2. **dom4j-1.6.1.jar**:DOM4J是一个用于XML处理的...

    Hibernate5教程文档大纲

    本教程详尽地涵盖了Hibernate5框架的各个方面,旨在帮助开发者深入理解和熟练使用这一强大的ORM(对象关系映射)工具。ORM技术的核心思想是将Java对象模型与关系数据库模型进行映射,使得在Java代码中可以直接操作...

    hibernate2.1相关jar包

    8. **ejb3-persistence.jar**: EJB 3持久化API,虽然Hibernate 2.1版本相对较早,但这个文件可能用于与EJB 3规范兼容。 9. **log4j.jar**: 日志记录库,用于记录Hibernate的操作日志,便于调试和问题排查。 10. **...

Global site tag (gtag.js) - Google Analytics