您的位置:首页 > 编程语言 > Java开发

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

2015-07-31 16:01 477 查看
本文主要介绍,如何在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为自己定义的版本:

如原文件:

[code]<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>


修改后:

[code]<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>


使用命令窗口进入到此目录,执行命令:

[code]mvn -DskipTests clean install


运行完以后生成target目录如下:



拷贝target/as7module目录下id和org两个文件夹到$JBOSS_HOME/modules/system/layers/base目录下(如果已经存在org目录,就合并)

启动jboss,执行

[code] $JBOSS_HOME/bin/jboss-cli.bat --connect


执行如下命令:

[code]/system-property=eclipselink.archive.factory:add(value=id.au.ringerc.as7.eclipselinkintegration.JBossArchiveFactoryImpl)


执行完会发现在standalone.xml文件中多出如下配置:

[code] <system-properties>
        <property name="eclipselink.archive.factory" value="id.au.ringerc.as7.eclipselinkintegration.JBossArchiveFactoryImpl"/>
    </system-properties>


此时可以一起设置eclipselink.target-server执行:

[code] /system-property=eclipselink.target-server:add(value=JBoss)


设置eclipselink.target-server

在persistence.xml中删除原有hibernate的配置,添加下面的provider和property

[code]<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<property name="eclipselink.target-server" value="JBoss"/>


设置实体自动扫描

如果不进行任何配置默认情况下需要在persistence.xml中列出你系统中的所有的实体,如下:

[code]<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项目。

[code]<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文件中添加如下属性:

[code]<property name="eclipselink.weaving" value="static"/>


到此你就可以使用eclipselink开发你的企业级多租户项目了。

本文翻译参考了:

https://developer.jboss.org/wiki/HowToUseEclipseLinkWithAS7?_sscc=t
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: