试用我们的早期 Java EE 8 特性实现,其中包含 Servlet 4.0、CDI 2.0、Application Security、JPA 2.2、JSF 2.3 等!这些特性全部包含在 WebSphere Liberty 2017 年 11 月 beta 版中。

得益于您对我们的定期测试计划的支持,我们每隔几个月就会发布新 Liberty 特性。最近一次是在 10 月。敬请期待未来几个月的更多 beta 版。如果您迫不及待,可以看看 Open Liberty 的每日构建版本。WebSphere Liberty 基于 Open Liberty 而构建。

这个 beta 版中有何新特性?

Get it now! 立即获取!询问有关该 beta 版的问题

Java EE 8 Full Platform 和 Web Profile

在这里抢先了解所有 Java EE 8 特性!在这个月,您甚至可以同时启用所有 Java EE 8 特性。=)
您现在可以通过 server.xml 中的一个特性启用所有 Java EE 8 特性(或更加轻量级的 Web Profile 特性集)。

webProfile-8.0 (Java EE 8 Web Profile) 中包含的新特性有:

  • appSecurity-3.0
  • beanValidation-2.0
  • cdi-2.0
  • jaxrs-2.1
  • jpa-2.2
  • jsf-2.3
  • jsonb-1.0
  • jsonp-1.1
  • servlet-4.0

webProfile-8.0 特性也包含以下还未更新的现有特性: ejbLite-3.2, el-3.0, jaspic-1.1, jdbc-4.2, jndi-1.0, jsp-2.3, managedBeans-1.0, transaction-1.2, websocket-1.1.

javaee-8.0 (Java EE 8 Full Platform) 中包含的新特性有:

  • webProfile-8.0 (参见上文)
  • javaMail-1.6

javaee-8.0 特性也包含以下还未更新的现有特性: appClientSupport-1.0, batch-1.0, concurrent-1.0, ejb-3.2, jacc-1.5, jaxws-2.2, jca-1.7, jms-2.0, j2eeManagement-1.1, wasJmsClient-2.0, wasJmsSecurity-1.0, wasJmsServer-1.0.

要试用它,只需将相关特性定义添加到 server.xml 中。

对于 Java EE 8 Web Profile:

<featureManager>
    <feature>webProfile-8.0</feature>
</featureManager>

或者对于 Java EE 8 Full Platform:

<featureManager>
    <feature>javaee-8.0</feature>
</featureManager>

了解更多信息:

Servlet 4.0

Servlet 4.0 是 Servlet 规范的最新 Java EE 8 版本。该 beta 版包含以下新特性和功能:

  • 支持 HTTP/2 push/promise
  • 支持 HTTP trailers
  • HttpServletRequest.getServletMapping()
  • ServletContext.getSessionTimeout() and setSessionTimeout()
  • ServletContext.addJspFile()
  • 支持 web.xml 中的新元素::
    • default-context-path
    • request-character-encoding
    • response-character-encoding

要试用它,可以将以下特性定义添加到 server.xml 中:

<featureManager>
    <feature>servlet-4.0</feature>
</featureManager>

有关更多信息,请参阅 Servlet 4.0 规范

Security API 1.0

appSecurity-3.0 特性提供了对 Java EE Security API 1.0 规范的支持。 Java Specification Request (JSR) 375 指定了需求。

该规范提升了独立的应用程序安全机制跨所有 Java EE 服务器的可移植性,而且使用了现代编程概念,比如表达式语言和上下文依赖注入 (CDI)。它定义了特定于各种身份验证机制的注释,定义了身份存储来处理用户身份验证,还定义了通用编程 API 来实现程序化的 Java EE 安全性。它减少了对使用部署描述符和基于应用服务器的配置来保护 Java EE Web 资源的依赖。

例如,您可以创建一种能够捆绑到 Web 应用程序中的自定义令牌身份验证机制,而无需为 login-config 文件中的 web.xml 元素配置一种预先定义的身份验证方法类型。 如果您还将自己的 IdentityStore bean 包含在应用程序中,您的 IdentityStore 可用于验证您的自定义令牌,而无需在 server.xml中配置一个用户注册表。您的 Web 应用程序将使用您的自定义令牌来对用户执行验证,使用您自己的 IdentityStore 来验证这些令牌,无论它部署到哪个应用服务器上。

配置 appSecurity-3.0 特性后,您的应用程序可以对身份验证机制和需要的身份存储进行注释。应用程序可以提供自己的实现来替代应用服务器提供的实现。应用程序也可以使用 SecurityContext API 来执行程序化的安全检查。这是一段 server.xml 配置示例:

<server description="Java EE Security API 1.0 sample configuration">

    <featureManager>
        <feature>appSecurity-3.0</feature>
    </featureManager>

    <!-- Change password and application details -->
    <keyStore id="defaultKeyStore" password="myKeyStorePwd" />

    <application type="war" id="MyWebApp" name="MyWebApp" location="MyWebApp.war">
        <application-bnd>
            <security-role name="myAppRole">
                <!-- Realm name in access id is tied to the identity store's id or defaultRealm if not provided -->
                <user name="someUser" access-id="user:defaultRealm/someUser" />
                <group name="someGroup" />
            </security-role>
        </application-bnd>
    </application>

</server>

CDI 2.0

CDI 2.0 是全新的,实现了最新的 CDI 规范。它包含许多不错的功能,尤其是非常有用且强大的 Configurator SPI。新特性 cdi-2.0 包含在 Weld bundle 3.0.1 中。CDI 2.0 的以下特性已可供使用:

  • 异步事件
  • 主要 SPI 元素的配置器
  • 配置或否决观察者方法
  • 添加内置的注释文字

这个 beta 版没有提供对通用注释 1.3 的支持,所以它不支持观察者排序。

要启用 JSF 2.3 特性,只需将以下特性定义添加到 server.xml 中:

<featureManager>
    <feature>cdi-2.0</feature>
</featureManager>

有关 CDI 2.0 的更多信息,请参阅 CDI 规范

Bean validation 2.0

借助 Bean Validation 2.0 特性,Liberty 使用 Hibernate Validator 作为它的 bean 验证机制。以前针对 bean val 1.0 和 1.1,我们使用的是 Apache Validator。您可能已猜到,bean val 2.0 特性提供了对 Bean validation 2.0 规范的基本支持。

要试用它,只需在 beanValidation-2.0 中启用 server.xml特性:

<featureManager>
    <feature>beanValidation-2.0</feature>
</featureManager>

可以在 Hibernate 网站规范中进一步了解 bean 验证。

Java Persistence API 2.2 (JPA 2.2)

已更新来支持 Java 8 中引入的新特性,包括新 Java Date and Time API、Query Result Collection 流、可重复的 JPA 注释。请参阅 10 月 beta 版 了解更多细节。

JavaServer Faces 2.3 (JSF 2.3)

JavaServer Faces 2.3 (JSF 2.3) 是 JSF 规范的最新版本。JSF 2.3 包含许多新特性和增强。

充分利用最新的 JSF 特性和增强。jsf-2.3 特性中包含 Apache MyFaces 实现并将它集成到 Liberty 运行时中。JSF 2.3 的以下特性已经过测试且可供使用:

  • <f:importConstants/>
  • 增强的组件搜索工具
  • 可以注册 DataModel 实现
  • @ManagedProperty 的 CDI 替代注释
  • UIData 和 <ui:repeat>对 Map 和 Iterable 的支持
  • <ui:repeat> 条件检查
  • Java 时间支持
  • 通过 <f:websocket>集成 WebSocket
  • 通过 <f:validateWholeBean>验证多字段
  • 使用 CDI 评估特定于 JSF 的 EL 隐式对象
  • 在特定于 JSF 的工件上支持@Inject
  • Ajax 方法调用。参阅 vdldoc 了解 <h:commandScript>

要启用 JSF 2.3 特性,只需将以下特性定义添加到 server.xml 中:

    <featureManager>
        <feature>jsf-2.3</feature>
    </featureManager>

这个 beta 版中现在提供了 CDI 2.0 特性,该特性应与这个 JSF 2.3 特性结合使用。

要获得更多信息,请访问:
* Apache MyFaces
* JavaServerFaces 2.3 规范

并发性

应用服务器管理员现在可以为受管理执行器配置并发性策略,以对并发性约束和其他行为执行细粒度控制。这包括允许多少个任务并行运行,可将多少个任务加入队列,以及在无法将任务加入执行队列时要采取何种操作,等等。可为长期运行的任务(由LONGRUNNING_HINT 执行属性标识)与正常任务分配不同的策略。受管理的执行器继续由 Liberty 全局线程池提供支持,继续享受 Liberty 的自动调优带来的好处,但现在可以对单个受管理执行器或受管理执行器组应用这些约束(多个执行器可共享一个并发性策略)。

要试用此特性,可在服务器配置中配置一种或多种并发性策略。例如:

<concurrencyPolicy id="max10" max="10" maxQueueSize="30" maxWaitForEnqueue="20s" startTimeout="1m"/>

可配置受管执行器来使用并发性策略,如下所示:

<managedExecutorService jndiName="concurrent/executor1" concurrencyPolicyRef="max10"/>
<managedScheduledExecutorService jndiName="concurrent/executor2" concurrencyPolicyRef="max10"/>

有关更多信息,请参阅有关 受管执行器服务受管执行器服务的知识中心文档。

这个 beta 版中的其他更新

JSF Container 2.2

此特性让您能引入自己的 JSF 2.2 实现(Mojarra 或 MyFaces)并利用 cdi-1.2 特性所提供的 CDI 集成。

要试用此特性,在 jsfContainer-2.2 中启用 server.xml 特性,并将您自己的 JSF API 和实现打包到您的应用程序内就可以了。

<featureManager>
    <feature>jsfContainer-2.2</feature>
</featureManager>

有关更多信息,请参阅 知识中心文档

社交登录

服务器管理员现在可以配置多个社交媒体提供者来保护给定的 Web 应用程序,使用户能够选择他们希望使用的提供者来向您的应用程序执行验证:

要启用此功能,服务器管理员只需在 server.xml 中启用该特性,并配置多个社交媒体提供者来保护一个应用程序。社交媒体提供者既可以保护所有应用程序,也可以使用身份验证过滤器来保护特定端点。没有必要执行其他配置。

<featureManager>
    <feature>socialLogin-1.0</feature>
</featureManager>

对 logstashCollector 和 bluemixLogCollector 中的事件进行节流

发送到 logstash 收集器的事件的最大数量没有限制,这意味着每秒可以发送无限多个事件。

要限制每秒发送的事件数量,现在可以设置 logstashCollectorbluemixLogCollector 元素中的新属性 maxEvents 来自定义最大事件数量。默认值为 0,表示每秒发送的事件数量没有限制。如果希望对事件节流,可以将该值设置为大于 0 的整数。

已实现哪些特性?

Liberty 10 月 beta 版 包含一些 Java EE 8 特性(包括 JPA 2.2、JSF 2.3)以及 OpenAPI 3.0 的预览版。

这是自 2017 年 10 月的 17.0.0.3 版本以来的第二个 beta 版。

Get it now! 立即获取!在 Stack Overflow 上提问


在 developerWorks 上的相关资源:



本文翻译自:Early Java EE 8 implementation in the November Liberty beta(2017-11-30)

加入讨论