Liberty 11 月 beta 版中的早期 Java EE 8 实现

试用我们的早期 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 版中有何新特性?

Java EE 8 Full Platform 和 Web Profile Servlet 4.0 Security API 1.0 CDI 2.0 Bean validation 2.0 Java Persistence API 2.2 (JPA 2.2) JavaServer Faces 2.3 (JSF 2.3) 并发性 这个 beta 版中的其他更新 JSF Container 2.2 社交登录 对 logstashCollector 和 bluemixLogCollector 中的事件进行节流

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>

了解更多信息:

Java EE 8 技术列表 (Oracle) 关于此工作的 Open Liberty GitHub 问题 Java EE 8 中的新特性 (developerWorks)

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 元素的配置器 配置或否决观察者方法 添加内置的注释文字