跟我上“云”端(三)eclipselink+jboss实现多租户基本配置

本文主要介绍,如何在jboss EAP6.2中使用eclipselink

  • 开发工具:jboss EAP6.2+maven
  • eclipselink版本:2.6.0

添加eclipselink的module

  • 使用预包装的集成库,下载地址:(eclipselink+jobss EAP6.2集成module)
  • 下载完成以后解压,并使用maven编译,解压后的文件:

  • 查看其中的pom.xml文件:

    其中properties结点中加入自己想使用的eclipselink版本,并修改 eclipselink.version为自己定义的版本:

如原文件:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <eclipselink.version.2.3.stable>2.3.2</eclipselink.version.2.3.stable>
    <eclipselink.version.2.3.milestone>2.3.3-M3</eclipselink.version.2.3.milestone>
    <eclipselink.version.2.4.milestone>2.4.0</eclipselink.version.2.4.milestone>
    <eclipselink.version>${eclipselink.version.2.4.milestone}</eclipselink.version>

    <jboss-version>7.1.1.Final</jboss-version>

    <as7module.srcdir>${project.basedir}/src/main/as7module</as7module.srcdir>
    <as7module.destdir>${project.build.directory}/as7module</as7module.destdir>
    <ECLIPSELINK_JAR_NAME>eclipselink-${eclipselink.version}.jar</ECLIPSELINK_JAR_NAME>
    <INTEGRATION_JAR_NAME>${project.artifactId}-${project.version}.${project.packaging}</INTEGRATION_JAR_NAME>
  </properties>

修改后:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <eclipselink.version.2.3.stable>2.3.2</eclipselink.version.2.3.stable>
    <eclipselink.version.2.3.milestone>2.3.3-M3</eclipselink.version.2.3.milestone>
    <eclipselink.version.2.4.milestone>2.4.0</eclipselink.version.2.4.milestone>
    <eclipselink.version.2.6.milestone>2.6.0</eclipselink.version.2.6.milestone>
    <eclipselink.version>${eclipselink.version.2.6.milestone}</eclipselink.version>

    <jboss-version>7.1.1.Final</jboss-version>

    <as7module.srcdir>${project.basedir}/src/main/as7module</as7module.srcdir>
    <as7module.destdir>${project.build.directory}/as7module</as7module.destdir>
    <ECLIPSELINK_JAR_NAME>eclipselink-${eclipselink.version}.jar</ECLIPSELINK_JAR_NAME>
    <INTEGRATION_JAR_NAME>${project.artifactId}-${project.version}.${project.packaging}</INTEGRATION_JAR_NAME>
  </properties>
  • 使用命令窗口进入到此目录,执行命令:
mvn -DskipTests clean install
  • 运行完以后生成target目录如下:

  • 拷贝target/as7module目录下id和org两个文件夹到$JBOSS_HOME/modules/system/layers/base目录下(如果已经存在org目录,就合并)
  • 启动jboss,执行
 $JBOSS_HOME/bin/jboss-cli.bat --connect
  • 执行如下命令:
/system-property=eclipselink.archive.factory:add(value=id.au.ringerc.as7.eclipselinkintegration.JBossArchiveFactoryImpl)
  • 执行完会发现在standalone.xml文件中多出如下配置:
 <system-properties>
        <property name="eclipselink.archive.factory" value="id.au.ringerc.as7.eclipselinkintegration.JBossArchiveFactoryImpl"/>
    </system-properties>
  • 此时可以一起设置eclipselink.target-server执行:
 /system-property=eclipselink.target-server:add(value=JBoss)

设置eclipselink.target-server

  • 在persistence.xml中删除原有hibernate的配置,添加下面的provider和property
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<property name="eclipselink.target-server" value="JBoss"/>

设置实体自动扫描

  • 如果不进行任何配置默认情况下需要在persistence.xml中列出你系统中的所有的实体,如下:
<class>mtsample.hotel.model.RentHistory</class>
<class>mtsample.hotel.model.HotelGuest</class>
<class>mtsample.hotel.model.Tenant</class>
<class>mtsample.hotel.model.Room</class>
<class>mtsample.hotel.model.Category</class>
<class>mtsample.hotel.model.HotelAdmin</class>
……
  • 当进行第一步的设置以后实体就可以自动被扫描。

设置静态织入(static weaving),使实体支持继承。

  • 什么时候需要实体继承,这其实是个很常用的功能,实体中会有一些通用的属性,比如id,或者时间戳,但是使用eclipselink的实体继承时,由于某些原因会不能在运行时动态织入,需要配置在编译时静态织入。
  • 确切的说,如何设置静态织入取决于你使用的构件插件,如果你使用的是Ant,eclipselink提供了一个Ant的任务,org.eclipse.persistence.tools.weaving.jpa.StaticWeaveAntTask. 如果你使用的是maven,可以使用maven的静态织入插件,这个插件不属于eclipselink项目。
<build>
    <plugins>
        <plugin>
            <groupId>au.com.alderaan</groupId>
            <artifactId>eclipselink-staticweave-maven-plugin</artifactId>
            <version>1.0.3</version>
            <executions>
                <execution>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>weave</goal>
                    </goals>
                    <configuration>
                        <persistenceXMLLocation>META-INF/persistence.xml</persistenceXMLLocation>
                        <logLevel>FINE</logLevel>
                    </configuration>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>org.eclipse.persistence</groupId>
                    <artifactId>eclipselink</artifactId>
                    <version>2.6.0</version>
                </dependency>

            </dependencies>
        </plugin>
    </plugins>
</build>
  • 你还需要在persistence.xml文件中添加如下属性:
<property name="eclipselink.weaving" value="static"/>
  • 到此你就可以使用eclipselink开发你的企业级多租户项目了。

本文翻译参考了:

https://developer.jboss.org/wiki/HowToUseEclipseLinkWithAS7?_sscc=t

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-03 07:43:59

跟我上“云”端(三)eclipselink+jboss实现多租户基本配置的相关文章

跟我上“云”端(一)认识多租户

什么是多租户,其优缺点是什么? 从软件的单个共享实例将软件交付给多个客户端组织(或承租者)的能力是 Web 交付解决方案的重要要求.例如,假设有一个由银行服务提供者作为服务提供的简单银行应用程序.本上下文中的多租户 是指从银行应用程序的单个共享实例向多个银行提供银行服务的能力.图 1 说明了从共享的应用程序服务器.数据库.操作系统和物理服务器向两个银行(北卡罗来纳州第一银行和加拿大第二银行)提供的多承租银行服务. 图 1. 使用共享中间件和硬件为银行业务构建的示例 Web 交付的多承租服务 上图

跟我上“云”端(四)使用eclipselink构建企业级多租户应用

上一篇博客中我们介绍了多租户的数据隔离,文中具体的介绍了hibernate和eclipselink对于多租户的实现情况,博客的最后,我也对hibernate实现多租户的细节上做了解释,这次,我想带大家一起来使用eclipselink构建企业级的多租户项目. eclipselink的三种实现 由于eclipselink完整实现了jpa规范,我们就可以使用ejb构建一个企业级的多租户项目,首先eclipselink支持3中多租户的模式: - Single-Table Multi-tenancy,依靠

跟我上“云”端(二)多租户的数据隔离

多租户两种极端实现方式 启用多租户的方法有很多,我不想做一一的介绍,但是有两个极端我们可以考虑一下: 极端一: 是所有租户共享单一应用程序实例,也就是相同的服务器.中间件和应用程序.实现的方法是用租户标识参数对应用程序的单一实例进行参数化. 图1 在多个租户之间共享应用程序和中间件的单一实例 极端二: 是租户在单独的服务器上运行自己的应用程序实例(当前许多 Application Service Provider [ASP] 采用这种方法). 租户只共享数据中心的基础结构(比如供电和制冷),但是

2018亚太CDN峰会开幕,阿里云王海华解读云+端+AI的短视频最佳实践

摘要: 4月11-12日,2018亚太CDN峰会在北京隆重召开,在11日下午的短视频论坛中,阿里云高级技术专家王海华进行了<短视频最佳实践:云+端+AI>的主题演讲,分享了短视频的生命周期关键点和阿里云技术解决方案. 4月11-12日,2018亚太CDN峰会在北京隆重召开,在11日下午的短视频论坛中,阿里云高级技术专家王海华进行了<短视频最佳实践:云+端+AI>的主题演讲,分享了短视频的生命周期关键点和阿里云技术解决方案.以下全文为演讲内容. 每个人都将成名十五秒钟 短视频已经走进

阿里云发布新版SaaS上云工具包,全面助力SaaS上云

9月26日,在云栖大会SaaS加速器专场上,阿里云发布了新版的SaaS上云工具包(SaaS Launch Kit),发布了API网关的新功能,以及推出了全新升级的能力中心. SaaS上云工具包,顾名思义,就是帮助伙伴的SaaS上云的工具包.这里的SaaS指的广义的企业应用,包含SaaS,传统企业软件,API.解决方案等等.对SaaS而言,上云不是目的,而是手段.上云真正的目的是客户体验提升,业务连续,以及伙伴业务发展和降低成本.阿里云希望SaaS上云对伙伴是快捷的, 省心的; 对客户是友好的,

上云十年:阿里云的奇幻漂流

现代人的生活是不缺乏刺激的.我们总能在电影院或化身“沙发土豆”,作为旁观者,与凤凰社.夜魔侠.蜘蛛侠等诸多主角们经历了一场场“安全的冒险”,体会他们挣脱束缚的破釜沉舟,欣赏他们踏上未知冒险的勇气. 回到真实的商业故事中,很少有人会将阿里与“困境”这样的字眼联系在一起,尤其是在花团锦簇.全民狂欢的双十一之后. 但少有人知道,这场剁手党的“春晚”,却是技术人眼中冰峰林立.人迹罕至的“珠穆朗玛峰”.而阿里云的工程师们,刚刚经历过一场大汗淋漓的搏斗. 极致双 11:阿里云的技术攀爬 11 月 11 日

为什么LinuxONE是核心上云之首选?一文读懂混合云的新选择

2020 年是私有云以及混合云的大时代.市场调查公司计世咨讯的调研显示,中国私有云产品市场在 2019 年渐入佳境,一股新的建设高潮即将汹涌而至.越来越多的企业开始采用私有云的思想和技术,以主导企业的数字化转型架构,当前大中型用户是私有云的主战场.而在上云受访者中,行业用户的场景化工作内容近一半在私有云中运行. 然而,随着私有云和混合云部署的大规模到来,企业究竟选择何种硬件承载基础设施,成为了新的痛点.在 2019 年一份绿色和平组织对中国云数据中心的能耗报告中,预测到 2023 年中国云数据中

“解救”程序猿, i.MX6Ul让您的设备上“云”更简单

2019年--都知道物联网行业将会是一个互联互通的落地年,届时会有更多的设备接入云端,利用云端的优势节省成本,掌控数据,对客户进行精准远程服务,将一次销售变为终身销售.虽然设备上云已经成为不可逆转的发展趋势,但是设备上云仍然面临着许多复杂的挑战. 一.开发的难度身为嵌入式开发者的你一定经常为设备上云而伤神,繁琐的上云步骤.复杂的环境配置,两个工程师因为设备端与云端协议是否互通经常是"拳脚相加". 整体开发工作量大.效率低.物联网世界看似美好,实则折腾不起. 二.设备的稳定和性能传统物联

安全狗服云:将服务器安全管理搬上“云”

摘要:如何抵御网络安全问题带来的侵害?如何应对多元化的运维需求?如何从安全角度去考虑运维管理?2014年初安全狗服云依托自身核心安全服务,借力云计算优势,精心打造并推出了基于云计算SaaS(软件即服务)模式的服务器安全运维云服务平台--服云,真正将服务器安全管理搬上了"云. [赛迪网讯]从去年年初至今,网络安全问题便一直围绕着我们的日常生活.从日常出行到社交软件,从门户网站到政务平台,曾经的网络安全隐患已经呈现爆发之势.另外,随着企业运营的多元化,使得租用服务器同样存在多元化的需求,最终导致了管