Jakarta EE 10 - Jakarta Security 3.0 およびその他変更内容まとめ


Jakarta Security 3.0

2.0 から 3.0 へのバージョンアップ

  • 認証メカニズムとして OpenID Connect Annotation がサポートされた
    • OpenIdAuthenticationMechanismDefinition アノテーションを利用
  • HttpAuthenticationMechanism インターフェースを実装した HttpAuthenticationMechanismWrapper クラスが追加された
    • HttpAuthenticationMechanismのカスタム動作を提供したいアプリケーション向けにAPIを提供
  • CallerPrincipalSerializable 宣言された
    • 認証されたプリンシパルをシリアル化して保存するケースに対応
  • 各アノテーションにアノテーションリテラルが追加された
  • Java モジュールシステム用の module-info.java が追加された
module jakarta.security {
    exports jakarta.security.enterprise;
    exports jakarta.security.enterprise.authentication.mechanism.http;
    exports jakarta.security.enterprise.authentication.mechanism.http.openid;
    exports jakarta.security.enterprise.credential;
    exports jakarta.security.enterprise.identitystore;
    exports jakarta.security.enterprise.identitystore.openid;

    requires jakarta.servlet;
    requires jakarta.cdi;
    requires jakarta.security.auth.message;
    requires jakarta.el;
    requires jakarta.json;
}


Jakarta Authentication 3.0

2.0 から 3.0 へのバージョンアップ

  • いくつかのジェネリクス対応
  • AuthConfigFactoryServerAuthModule を登録するメソッドが追加された
  • ServerAuthModuleClientAuthModule インターフェースにのメソッドをデフォルトメソッド化
  • AuthException のコンストラクタ(Throwableを引数に取る)追加
  • PasswordValidationCallback のJavaDocに実装例が追記された
  • SecurityManager の非推奨化に伴う関連APIの非推奨化
    • 具体的には jakarta.security.auth.message.config.AuthConfigFactory の各メソッド
  • ServerAuthModule と他の仕様との相互作用に関する要件の追加
    • ServerAuthModule がデータソース、EJB Bean、CDI Bean などの参照を取得可能となる
  • jakarta.servlet.http.isAuthenticationRequest キーの追加
    • 認証モジュールの validateRequest は HTTPリクエストの開始時、または HttpServletRequest.authenticate 呼び出しの後に呼び出されるケースがあり、これらを区別可能とする
  • Java モジュールシステム用の module-info.java 追加
module jakarta.security.auth.message {
    exports jakarta.security.auth.message;
    exports jakarta.security.auth.message.callback;
    exports jakarta.security.auth.message.config;
    exports jakarta.security.auth.message.module;
}


Jakarta Server Pages 3.1

3.0 から 3.1 へのマイナーバージョンアップ

  • EL 5.0 の変更に合わせ、ELResolver.getFeatureDescriptors() オーバーライドするメソッドが非推奨となった
  • ELの式が未知の識別子を含んでいる場合、PropertyNotFoundException を発生させるオプションを追加された
    • error-on-el-not-found
  • カスタムアクションに関連するスクリプト変数における 'scope' の定義が明確化された
  • jsp:plugin に関連するアクションが非推奨となった
    • 関連する HTML 要素がどのメジャーなブラウザでもサポートされなくなったため
  • isThreadSafe ページディレクティブ属性が非推奨となった
    • Servlet 6.0 で SingleThreadModel インターフェースが削除されたため
  • JSP内のEL環境は、スクリプト環境のデフォルトインポートと一致するデフォルトインポートのセットを持っていることが明確化された
    • ScopedAttributeELResolverがリファクタリングされ、importと未解決の変数に対する特別な処理が削除された
  • Java モジュールシステム用の module-info.java 追加
module jakarta.servlet.jsp {
    exports jakarta.servlet.jsp;
    exports jakarta.servlet.jsp.tagext;
    exports jakarta.servlet.jsp.el;

    requires transitive jakarta.el;
    requires transitive jakarta.servlet;
    requires transitive java.desktop;
}


Jakarta Activation 2.1

2.0 から 2.1 へのマイナーバージョンアップ

  • API と実装が整理され、API として Jakarta Activation、実装として Eclipse Angus Activation というプロジェクトに分離された
    • これに伴いインターフェース追加など各種変更が入った
  • Java モジュールシステム用の module-info.java が追加された
module jakarta.activation {
    uses jakarta.activation.spi.MailcapRegistryProvider;
    uses jakarta.activation.spi.MimeTypeRegistryProvider;
    exports jakarta.activation;
    exports jakarta.activation.spi;
    requires java.logging;
    //reflective call to java.beans.Beans.instantiate
    requires static java.desktop;
}


Jakarta Authorization 2.1

2.0 から 2.1 へのマイナーバージョンアップ

  • PolicyConfiguration に現在の設定を読み取る以下のメソッドが追加された
void addToExcludedPolicy(Permission permission) throws PolicyContextException;
Map<String, PermissionCollection> getPerRolePermissions();
PermissionCollection getUncheckedPermissions();
PermissionCollection getExcludedPermissions();
  • PolicyConfiguration の変更に合わせて PolicyConfigurationFactory の getPolicyConfiguration() に、状態なしの設定読み込みメソッドが追加された
  • PolicyContextgetContext() メソッドの戻り値がジェネリクス化された
  • Java モジュールシステム用の module-info.java が追加された
module jakarta.security.jacc {
    exports jakarta.security.jacc;
    requires jakarta.servlet;
}


Jakarta Connectors 2.1

2.0 から 2.1 へのマイナーバージョンアップ

  • 幾つかのジェネリクス対応がなされた
    • IndexedRecord, MappedRecord,
  • Java モジュールシステム用の module-info.java が追加された。
module jakarta.resource {

    requires java.desktop;
    requires transitive java.naming;
    requires transitive java.sql;
    requires transitive java.transaction.xa;

    requires jakarta.annotation;
    requires transitive jakarta.transaction;

    exports jakarta.resource;
    exports jakarta.resource.cci;
    exports jakarta.resource.spi;
    exports jakarta.resource.spi.endpoint;
    exports jakarta.resource.spi.security;
    exports jakarta.resource.spi.work;
}


Jakarta Interceptors 2.1

2.0 から 2.1 へのマイナーバージョンアップ

  • 他の仕様に合わせた依存の更新
  • Java モジュールシステム用の module-info.java の追加
module jakarta.interceptor {
    exports jakarta.interceptor;

    requires jakarta.annotation;
}


Jakarta Mail 2.1

2.0 から 2.1 へのマイナーバージョンアップ

  • API と実装が整理され、API として Jakarta Mail、実装として Eclipse Angus Mail というプロジェクトに分離
    • 分離に伴って API として jakarta.mail.util.StreamProvider というインターフェースが追加
  • Java モジュールシステム用の module-info.java の追加
module jakarta.mail {

    requires java.logging;
    requires transitive jakarta.activation;

    exports jakarta.mail;
    exports jakarta.mail.event;
    exports jakarta.mail.internet;
    exports jakarta.mail.search;
    exports jakarta.mail.util;

    uses jakarta.mail.Provider;
    uses jakarta.mail.util.StreamProvider;
    //reflective call to java.beans.Beans.instantiate
    requires static java.desktop;
}


Jakarta Messaging 3.1

3.0 から 3.1 へのマイナーバージョンアップ

  • @JMSDestinationDefinition@JMSConnectionFactoryDefinition@Repeatable としてマークされた
  • 各例外にコンストラクタが追加された
  • Java モジュールシステム用の module-info.java 追加
module jakarta.messaging {
    // Optional for jakarta.annotation.Resource javadoc refs
    requires static jakarta.annotation;
    // Optional for XA* classes
    requires static transitive java.transaction.xa;

    exports jakarta.jms;
}