`
yanfaguanli
  • 浏览: 662390 次
文章分类
社区版块
存档分类
最新评论

JBoss 系列六十三:JBoss 7/WildFly 集群之 Java Persistence API (JPA) - II(Hibernate查询缓存和二级缓存示例)

 
阅读更多


目录(?)[+]

概述

JBoss 系列五十六:JBoss 7/WildFly 集群之 Java Persistence API (JPA) - I 中讨论了JBoss集群情况下JPA相关的基本理论,JBoss的JPA实现是Hibernate,所以JBoss集群JPA主要是Hibernate集群,在基本理论中我们说明了Hibernate的一级缓存(查询缓存)和二级缓存,本文给出一个Hibernate一级缓存(查询缓存)和二级缓存示例,示例大致架构如下图所示:


如上为两个节点的集群,Web应用提供REST接口,供外界访问来操作数据库,REST语法如下:

  • http://<IP>:<PORT>/cluster-demo-jpa/test/addUsers/{number} 用来添加用户
  • http://<IP>:<PORT>/cluster-demo-jpa/test/getUserByName/{name}用来查询用户

应用使用JPA/hibnernate操作数据库,Hibernate 二级缓存基于数据库之上。

JBoss端以及数据库端的配置

添加Oracle数据库驱动模块到JBoss

在JBOSS_HOME/modules/目录下创建com/oracle/main目录,将Oracle驱动jar(ojdbc6.jar)拷贝到此目录下,并同在此目录下创建module.xml文件,添加内容如下:

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <modulexmlns="urn:jboss:module:1.1"name="com.oracle">
  3. <resources>
  4. <resource-rootpath="ojdbc6.jar"/>
  5. </resources>
  6. <dependencies>
  7. <modulename="javax.api"/>
  8. <modulename="javax.transaction.api"/>
  9. </dependencies>
  10. </module>

添加驱动配置到JBoss服务器配置文件

编辑JBOSS_HOME/standalone/configuration/standalone-ha.xml文件,在<subsystem xmlns="urn:jboss:domain:datasources处datasources,drivers中添加如下内容:

  1. <drivername="oracle"module="com.oracle">
  2. <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
  3. </driver>

注意,此部分配置,我们在之前的系列JBoss 7/WildFly中配置使用Oracle数据库中有所提及。

Oracle数据库端的配置

使用DBA用户连接到Oracle数据库控制台,创建demo_user/soong,并分配相应的权限,如下:

  1. sqlplus/assysdba
  2. createtablespaceTESTSPACEdatafile'/oracle/oradata/TESTSPACE.DBF'size100M
  3. createuserdemo_useridentifiedbysoongdefaulttablespaceTESTSPACE;
  4. grantconnect,resource,dbatodemo_user;

启动JBoss

以上配置完成,我们启动两个JBoss节点构成一个集群,如下:

  1. ./standalone.sh-cstandalone-ha.xml-b10.66.218.46-bmanagement=10.66.218.46-u239.255.100.100-Djboss.node.name=node1
  2. ./standalone.sh-cstandalone-ha.xml-b10.66.218.47-bmanagement=10.66.218.47-u239.255.100.100-Djboss.node.name=node2

部署应用到JBoss

本示例代码位于(https://github.com/kylinsoong/cluster/tree/master/demo/jpa),使用软件安装及资料下载中描述的方法下载示例代码,编译代码。在编译之前我们需要做一些修改配置。

配置DataSource

配置DataSource文件指向Oracle数据库,具体编辑jpa/src/main/webapp/WEB-INF/cluster-jpa-ds.xml文件指向Oracle数据库:

  1. <datasourcejndi-name="java:jboss/datasources/JBossClusterDemoJPADS"
  2. pool-name="tasks-rs-xml-quickstart"enabled="true"
  3. use-java-context="true">
  4. <connection-url>jdbc:oracle:thin:@//10.66.192.144:1521/JBOSS</connection-url>
  5. <driver>oracle</driver>
  6. <security>
  7. <user-name>demo_user</user-name>
  8. <password>soong</password>
  9. </security>
  10. </datasource>

配置persistence-unit

配置persistence-unit,包括Datasource相关,缓存相当,具体编辑jpa/src/main/resources/META-INF/persistence.xml,配置内容如下:

  1. <persistence-unitname="primary">
  2. <jta-data-source>java:jboss/datasources/JBossClusterDemoJPADS</jta-data-source>
  3. <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
  4. <properties>
  5. <!--PropertiesforHibernate-->
  6. <propertyname="hibernate.dialect"value="org.hibernate.dialect.Oracle10gDialect"/>
  7. <propertyname="hibernate.default_schema"value="demo_user"/>
  8. <!--use'create'or'create-drop'firsttime-->
  9. <propertyname="hibernate.hbm2ddl.auto"value="validate"/>
  10. <propertyname="hibernate.show_sql"value="false"/>
  11. <propertyname="hibernate.cache.use_second_level_cache"value="true"/>
  12. <propertyname="hibernate.cache.use_query_cache"value="true"/>
  13. </properties>
  14. </persistence-unit>

编译生成部署包

使用软件安装及资料下载中描述的方法,执行

  1. mvncleaninstall

部署应用及测试

上面步骤完成会生成jpa/target/cluster-demo-jpa.war文件,使用使用4种方式部署应用到JBoss7/WildFly描述方法部署应用。

测试添加用户

部署成功后在节点1上添加用户:

http://10.66.218.46:8080/cluster-demo-jpa/test/addUsers/1

添加成功后页面会返回字符串,类似:“Add 1 users to database spend 154 milliseconds

测试查询用户

使用http://10.66.218.47:8080/cluster-demo-jpa/test/getUserByName/name-449

通过节点2查询用户name-499,将会返回字符串类似:“Get 164 users spend 614 milliseconds

理解Invalidation

本示例中集群两个节点之间通过Invalidation(失效)来确保数据连续性,失效模式是一种集群缓存,但实际上集群中各个节点之间并没有共享任何数据,而仅仅是从运行节点上在移除可能是过时的数据,详细理解参照JBoss Data Grid(Infinispan)缓存模式

分享到:
评论

相关推荐

    diario-classe-vraptor-jpa

    Vraptor-4-模板依赖[Java 8] ( ) [WildFly 8.2] ( ) (JBoss AS 工具) [常春藤 - IvyDe] ( ) [JBoss 工具] ( )安装使用命令行下载项目。 git clone ...

    jboss-4-3-jpa-ejb:将 JBoss 4.3.0 与 JPA 2.0 一起使用的测试项目(Hibernate 4.3.9.Final)

    将 JBoss 4.3.0.GA_CP06 与 JPA 2.0 (Hibernate 4.3.9.Final) 一起使用的测试项目。 com.foo.bar.example.EntityManagerHolderBean 旨在注入@PersistenceContext,但这并没有发生。 部署从该项目构建的 EAR 会导致...

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

    第一部分 从Hibernate和EJB 3.0开始  第1章 理解对象/关系持久化   1.1 什么是持久化   1.1.1 关系数据库   1.1.2 理解SQL   1.1.3 在Java中使用SQL   1.1.4 面向对象应用程序中的持久化   1.2 范式不...

    clj-jpa:Clojure方式的JPA库

    clj-jpa Clojure的美味JPA 开始吧 将clj-jpa添加为项目的依赖项: [clj-jpa " 0.1.0-SNAPSHOT " ] 并添加一个JPA实现。 [org.eclipse.persistence/org.eclipse.persistence.jpa " 2.5.2 " ] [org.jboss.weld.se/...

    hibernate-orm-on-java9-modules

    Hibernate ORM 5作为Java 9自动... hibernate-jpa-2.1-api-1.0.0.Final.jar不能用作自动模块,因为命名算法依赖于JAR名称中的“ 2.1”; 因此,改为使用ModiTect( )将JPA API JAR转换为显式的JPMS模块 所有模块都收集

    SpringMVC 所有jar包

    ├── hibernate-jpa-2.0-api-1.0.1.Final.jar_bak ├── hibernate-jpa-2.1-api-1.0.0.Final.jar ├── jackson-all-1.9.0.jar ├── javassist-3.12.0.GA.jar ├── jboss-logging-3.1.3.GA.jar ├── jboss...

    培训体系管理系统-oracle-ssh

    javassist.jar jaxen-1.1-beta-7.jar jboss-cache.jar jboss-common.jar jboss-jmx.jar jboss-system.jar jdbc2_0-stdext.jar jgroups-2.2.8.jar jstl.jar jta.jar jxl.jar log4j-1.2.11.jar log4j-1.2.14.jar mysql...

    Apress - Beginning JSF 2APIs and JBoss Seam

    JPA(Java Persistence API)作为Java EE 5.0平台标准的ORM规范,将得到所有Java EE服务器的支持。Sun这次吸取了之前EJB规范惨痛失败的经历,在充分吸收现有ORM框架的基础上,得到了一个易于使用、伸缩性强的ORM规范。...

    hibernate-greeter

    迎宾员:本地Hibernate(无JPA) 此应用程序基于WildFly 10 Quickstart Greeter 使用本地Hibernate而不是JPA。 请注意,JPA批注用于映射用户实体。 所做的更改 删除了所有两个UserDao实现 使用本地Hibernate方法...

    MathBattleServer:MathBattle服务器(适用于Android的多人数学测验者,使用语音识别和文本转语音功能)

    MathBattleServer MathBattleServer充当。 它是基于Java Web服务(JAX-RS),Enterprise JavaBeans(EJB)和Java Persistence API(JPA)的Java EE应用程序。 它被设计为托管在WildFly / JBoss服务器上。

    LightBulb:示例应用程序

    对于JSF 的JPA 支持hibernate 库,使用了标准的javax 实现。 Maven 被选为构建工具,您可以想象 - git 用于版本控制。 应用程序本身展示了如何在不使用 JBoss 或 WebSphere 等重型应用程序服务器的情况下开发 JPA/...

    spring-framework-3.0.5.RELEASE-dependencies-7

    org.apache.openjpa org.apache.axis org.apache.catalina org.apache.commons org.apache.coyote org.apache.ibatis org.apache.juli 4号包: org.apache.tiles org.apache.velocity org.apache.xerces org.apache....

    spring-framework-3.0.5.RELEASE-dependencies-1

    org.apache.openjpa org.apache.axis org.apache.catalina org.apache.commons org.apache.coyote org.apache.ibatis org.apache.juli 4号包: org.apache.tiles org.apache.velocity org.apache.xerces org.apache....

    spring-framework-3.0.5.RELEASE-dependencies-5

    org.apache.openjpa org.apache.axis org.apache.catalina org.apache.commons org.apache.coyote org.apache.ibatis org.apache.juli 4号包: org.apache.tiles org.apache.velocity org.apache.xerces org.apache....

    spring-framework-3.0.5.RELEASE-dependencies-3

    org.apache.openjpa org.apache.axis org.apache.catalina org.apache.commons org.apache.coyote org.apache.ibatis org.apache.juli 4号包: org.apache.tiles org.apache.velocity org.apache.xerces org.apache....

    spring-framework-3.0.5.RELEASE-dependencies-2

    org.apache.openjpa org.apache.axis org.apache.catalina org.apache.commons org.apache.coyote org.apache.ibatis org.apache.juli 4号包: org.apache.tiles org.apache.velocity org.apache.xerces org.apache....

    spring-framework-3.0.5.RELEASE-dependencies-4

    org.apache.openjpa org.apache.axis org.apache.catalina org.apache.commons org.apache.coyote org.apache.ibatis org.apache.juli 4号包: org.apache.tiles org.apache.velocity org.apache.xerces org.apache....

    spring-framework-3.0.5.RELEASE-dependencies-8

    org.apache.openjpa org.apache.axis org.apache.catalina org.apache.commons org.apache.coyote org.apache.ibatis org.apache.juli 4号包: org.apache.tiles org.apache.velocity org.apache.xerces org.apache....

    spring-framework-3.0.5.RELEASE-dependencies-6

    org.apache.openjpa org.apache.axis org.apache.catalina org.apache.commons org.apache.coyote org.apache.ibatis org.apache.juli 4号包: org.apache.tiles org.apache.velocity org.apache.xerces org.apache....

Global site tag (gtag.js) - Google Analytics