MicroProfile 5、MicroProfile Rest Client 3.0和Open Liberty 22.0.0.1-beta中的JPA增强功能

322 阅读4分钟

Open Liberty 22.0.0.1-beta提供了MicroProfile 5.0,其中包括MicroProfile Rest Client 3.0并与Jakarta EE 9.1保持一致。这个测试版还引入了声明 "默认 "JPA持久性属性的能力。

对于22.0.0.1-beta,有一个针对Open Liberty的单一测试包:

  • 所有测试版功能:这个包包含了所有Open Liberty的测试版功能和GA的特性和功能。

这意味着你可以尝试我们正在开发的Open Liberty功能,只需在你的构建工具中添加相关的坐标。

如果你试了一下测试包,让我们知道你的想法

所有测试版功能包

所有测试版功能包包括以下测试版功能和增强功能:

MicroProfile 5.0

MicroProfile 5.0使应用程序能够与Jakarta EE 9.1一起使用MicroProfile APIs。除了与Jakarta EE 9.1保持一致,MicroProfile 5.0不提供任何其他功能更新。 MicroProfile 5.0包括以下功能:

  • 配置3.0

  • 容错4.0

  • 休息客户端3.0

  • 健康4.0

  • 衡量标准 4.0

  • 开放追踪 3.0

  • 开放的API 3.0

  • JWT传播2.0

这个测试版驱动程序将被用作发布MicroProfile 5.0的兼容实现。

server.xml ,以启用Open Liberty中的MicroProfile 5.0功能,包括以下内容:

<featureManager>
    <feature>microProfile-5.0</feature>
</featureManager>

另外,你也可以启用你需要的个别MicroProfile功能,比如说:

<featureManager>
    <feature>mpOpenTracing-3.0</feature>
</featureManager>

关于这次更新的更多信息,请查看GitHub上的MicroProfile 5.0版本

MicroProfile休息客户端3.0

MicroProfile Rest Client是一个API,帮助开发者编写类型安全的接口,抽象和调用远程RESTful服务。这是MicroProfile Rest Client的3.0版本,它增加了对Jakarta EE 9.1技术的支持。从开发者的角度来看,与之前的版本(2.0)相比,唯一的变化是将Jakarta包的空间名称从 javax.改为 jakarta..然而,另一个变化是Open Liberty的实现从Apache CXF变成了RESTEasy - 这一变化带来了一些行为和属性的变化(其中大部分已经被记录为 jaxrs-2.1restfulWS-3.0 之间的差异)

要使用这个新功能,你需要在server.xml中的featureManager 元素中添加mpRestClient-3.0 。代码应该与以前版本的MP Rest Client相似,但包应该从 javax.改为 jakarta..

<featureManager>
    <feature>mpRestClient-3.0</feature>
</featureManager>

更多信息,请查看:

在服务器范围内定义JPA持久化属性

这个新的JPA增强功能增加了为所有容器管理的持久化上下文声明 "默认 "JPA持久化属性的能力,作为Liberty server.xml配置。

以前,如果需要为所有persistence.xml配置文件设置一个持久性属性,你需要手动更新所有应用程序中的所有persistence.xml文件。有了这个改进,你可以在server.xml中指定持久化属性,这些属性将传播到安装在该服务器上的应用程序的所有容器管理的持久化单元。

要开始使用这个新功能,请在你的server.xml 文件中的<jpa> 配置中添加<defaultProperties> 配置元素。指定你想应用到所有容器管理的持久化单元的持久化属性,如下面的例子所示。

例1:
<server>
    <featureManager>
        <feature>persistenceContainer-3.0</feature>
    </featureManager>

    <jpa defaultPersistenceProvider="org.hibernate.jpa.HibernatePersistenceProvider">
        <defaultProperties>
            <property name="javax.persistence.lock.timeout" value="4000"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle12cDialect"/>
        </defaultProperties>
    </jpa>
</server>
例2:
<server>
    <featureManager>
        <feature>jpa-2.1</feature>
    </featureManager>

    <jpa>
        <defaultProperties>
            <property name="javax.persistence.lock.timeout" value="12345"/>
            <property name="eclipselink.cache.shared.default" value="false"/>
        </defaultProperties>
    </jpa>
</server>

技术描述

这些defaultProperties 是集成级的持久化属性,当JPA容器调用PersistenceProvider.createContainerEntityManagerFactory 方法时,这些属性被提供给指定的持久化提供者。

根据JPA规范(3.4.4.3):

If the same property or hint is specified more than once, the following order of overriding applies, in order of decreasing precedence:
  • argument to method of EntityManager, Query, or TypedQuery interface
  • specification to NamedQuery (annotation or XML)
  • argument to createEntityManagerFactory method
  • specification in persistence.xml

这些defaultProperties 持久性属性值覆盖在persistence.xml 文件中指定的任何具有相同名称的属性。然而,通过PersistenceContext注解、或persistence-context-ref 部署描述符元素、或查询提示属性指定的属性值将覆盖这些defaultProperties

现在就试试吧

要尝试这些功能,只需更新你的构建工具,拉出Open Liberty所有测试版功能包,而不是主版本。该测试版适用于Java SE 17、Java SE 11或Java SE 8。

如果你使用Maven,这里有坐标:

<dependency>
  <groupId>io.openliberty.beta</groupId>
  <artifactId>openliberty-runtime</artifactId>
  <version>22.0.0.1-beta</version>
  <type>pom</type>
</dependency>

或者对于Gradle:

dependencies {
    libertyRuntime group: 'io.openliberty.beta', name: 'openliberty-runtime', version: '[22.0.0.1-beta,)'
}

或者看一下我们的下载页面

Jakarta EE 9.1测试版功能

你是否在寻找我们关于Jakarta EE 9.1 Beta功能更新的常规部分? 好消息是,从21.0.0.12开始,Jakarta EE 9.1的功能已经脱离了测试阶段,完全支持。 这意味着你可以在21.0.0.12正式版中使用它们,或者在22.0.0.1-beta测试包中继续使用它们。 就像以前一样,你可以启用你想要的单个功能,或者你可以只添加Jakarta EE 9.1便利功能,一次性启用所有Jakarta EE 9.1测试版的功能。

  <featureManager>
    <feature>jakartaee-9.1</feature>
  </featureManager>

或者你可以添加Web Profile便利功能来一次性启用所有的Jakarta EE 9.1 Web Profile测试版功能。

  <featureManager>
    <feature>webProfile-9.1</feature>
  </featureManager>