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

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

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

添加eclipselink的module

  • 使用预包装的集成库,下载地址:(eclipselink+jobss EAP6.2集成module)
  • 下载完成以后解压,并使用maven编译,解压后的文件:
    跟我上“云”端(三)eclipselink+jboss实现多租户基本配置_第1张图片

  • 查看其中的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目录如下:
    跟我上“云”端(三)eclipselink+jboss实现多租户基本配置_第2张图片

  • 拷贝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

你可能感兴趣的:(跟我上“云”端(三)eclipselink+jboss实现多租户基本配置)