本文主要介绍,如何在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-10-12 02:35:35