23
JBoss Enterprise Application Platform 4.2 リリースノート CP09 JBoss Enterprise Application Platform 4.2 Cumulative Patch 9 向け エディッション 1.0 Last Updated: 2017-10-17

4.2 JBoss Enterprise Application Platform

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 4.2 JBoss Enterprise Application Platform

JBoss Enterprise Application Platform4.2

リリースノート CP09

JBoss Enterprise Application Platform 4.2 Cumulative Patch 9 向けエディッション 1.0

Last Updated: 2017-10-17

Page 2: 4.2 JBoss Enterprise Application Platform
Page 3: 4.2 JBoss Enterprise Application Platform

JBoss Enterprise Application Platform 4.2 リリースノート CP09

JBoss Enterprise Application Platform 4.2 Cumulative Patch 9 向けエディッション 1.0

Laura [email protected]

Page 4: 4.2 JBoss Enterprise Application Platform

法律上の通知法律上の通知

Copyright © 2010 Red Hat, Inc.

This document is licensed by Red Hat under the Creative Commons Attribution-ShareAlike 3.0Unported License. If you distribute this document, or a modified version of it, you must provideattribution to Red Hat, Inc. and provide a link to the original. If the document is modified, all RedHat trademarks must be removed.

Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert,Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.

Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinitylogo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and othercountries.

Linux ® is the registered trademark of Linus Torvalds in the United States and other countries.

Java ® is a registered trademark of Oracle and/or its affiliates.

XFS ® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the UnitedStates and/or other countries.

MySQL ® is a registered trademark of MySQL AB in the United States, the European Union andother countries.

Node.js ® is an official trademark of Joyent. Red Hat Software Collections is not formally relatedto or endorsed by the official Joyent Node.js open source or commercial project.

The OpenStack ® Word Mark and OpenStack logo are either registered trademarks/service marksor trademarks/service marks of the OpenStack Foundation, in the United States and othercountries and are used with the OpenStack Foundation's permission. We are not affiliated with,endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.

All other trademarks are the property of their respective owners.

概要概要

本リリースノートには現在の製品マニュアルには記載されていない JBoss Enterprise ApplicationPlatform 4.2.0.CP09 関連の重要な情報が含まれている可能性があります。本リリースノートをすべて読んでから JBoss Enterprise Application Platform 4.2.0.CP09 をインストールするようにしてください。

Page 5: 4.2 JBoss Enterprise Application Platform

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

目次目次

1. はじめにはじめに1.1. 概要

2. JBOSS ENTERPRISE APPLICATION PLATFORM 4.2 の新機能の新機能2.1. データベースの認定2.2. IPv6 の認定2.3. JDK 1.6 の認定2.4. コンポーネントのバージョン

3. インストールと移行についての注記インストールと移行についての注記3.1. インストールに関する注記3.2. JBoss Enterprise Application Platform 4.2.0.CP08 からのアップグレード

4. 製品サポートとライセンスのウェブサイトリンク製品サポートとライセンスのウェブサイトリンク4.1. ドキュメント4.2. JSR-181 サポート

5. このリリースで修正された問題このリリースで修正された問題

6. 本リリースでの既知の問題本リリースでの既知の問題

A. 改訂履歴改訂履歴

22

22222

344

455

5

12

19

目次目次

1

Page 6: 4.2 JBoss Enterprise Application Platform

1. はじめに

本リリースノートには JBoss Enterprise Application Platform 4.2 に関する重要な情報が含まれています。 新機能、既知の問題、リソース、その他の問題などが説明されています。

1.1. 概要

JBoss Enterprise Application Platform は次世代のオープンソースなエンタープライズソフトウェアです。純粋な Java プラットフォーム上で多機能で高性能な Web 2.0 アプリケーションの開発を行うためのパワフルなツールを求めている方に最適です。

JBoss Enterprise Application Platform は、 既存の J2EE 1.4 エンタープライズ Java アプリケーションとの完全な互換性を提供します。 同時に Java EE 5.0 仕様で定義されている主な機能とコンポーネントがほぼ全てサポートされます。 そのため、 新しいエンタープライズ Java アプリケーションは、 JavaEE 5.0 の大変シンプルな POJO ベースのプログラミングモデルの利点をすぐに活用することができます。

さらに、JBoss Seam、 Hibernate、 Tomcat、 JBoss Cache など最良のオープンソースフレームワークと統合することで、 オープンソースコミュニティの革新技術を利用することができます。 JBossEnterprise Application Platform は Red Hat によって完全にテストされサポートされています。また、多くの企業向けハードウェアやソフトウェア製品に対応しています。

よって、 今後のバージョンの JBoss Platform との上位互換性が維持されることを確信して、 Java EE5.0 の技術を即座に取り入れた新しいアプリケーションを開発することができます。

2. JBOSS ENTERPRISE APPLICATION PLATFORM 4.2 の新機能

2.1. データベースの認定

JBoss Enterprise Application Platform 5.0.1 が、 Oracle 11g R2 データベースと Oracle 11g RAC データベース向けに認定されました。 Oracle JDBC ドライバ バージョン 11.2.0.1.0 の使用が条件となります。

また、 JConnect ドライババージョン 6.0.5 を使用した場合の Sybase ASE 15.0.3 に対しても認定されました。

2.2. IPv6 の認定

JBoss Enterprise Application Platform 4.2.0 CP09 およびそれ以降のリリースでは IPv6 アドレスを使用することができますが、 「本リリースでの既知の問題」 の一覧の通り、 IPv6 アドレスの使用にあたり既知の問題が存在することを理解しておいてください。

2.3. JDK 1.6 の認定

JBoss Enterprise Application Platform 4.2.0 CP09 およびそれ以降のリリースでは、 Sun JDK 1.6、IBM JDK 1.6、 OpenJDK 1.6 との使用が認定されています。 認定されているオペレーティングシステムとJDK1.6 の組み合わせやインストール手順については、 『JDK 1.6 互換性ガイド』を参照してください。

2.4. コンポーネントのバージョン

リリースノートリリースノート CP09

2

Page 7: 4.2 JBoss Enterprise Application Platform

本項では、 本 Cumulative Patch (累計パッチ) リリースに含まれる、 Enterprise Application Platform4.2 を構成するコンポーネントのバージョンについて説明します。

JBoss Application Server 4.2.z

JBoss Microcontainer 1.0.2

Hibernate Core 3.2.4.SP1_CP09

Hibernate Annotations 3.3.1.GA_CP02

Hibernate Entity Manager 3.3.2.GA_CP01

Hibernate Validator 3.0.0.GA

Apache Xalan 2.7.0.patch02

JacORB 2.3.0jboss.patch7

JAF 1.1.0

JavaServer Faces 1.2_13

JBoss AOP 1.5.5.GA_CP05

JBoss Cache 1.4.1_SP14

JBoss JAXR 1.2.0.SP2

JBoss Remoting 2.2.3.SP2

JBoss Serialization 1.0.3.GA

JBoss Transactions 4.2.3.SP5_CP07

JBoss XB 1.0.0.SP3

JBoss Web 2.0.0.GA_CP12

JBoss Web Services 1.2.1.GA_CP06

JGroups 2.4.7.GA

Seam 1.2.1.GA

注記注記

Enterprise Application Platform Server は、エンタープラズ市場用に再定義されており、 コミュニティリリースへの直接関連が認知できない程度まで変更が加えられています。

3. インストールと移行についての注記

本項では、 ハードウェアおよびプラットフォーム要件や前提条件など、 JBoss Enterprise ApplicationPlatform バージョン 4.2 のインストールやアップグレードに関する情報を取り上げます。

3. インストールと移行についての注記インストールと移行についての注記

3

Page 8: 4.2 JBoss Enterprise Application Platform

3.1. インストールに関する注記

JDK と JBoss Enterprise Application Platform をインストールするには、 十分なディスク領域を確保しながら、 アプリケーションの領域も十分に確保しておく必要があります。 また、 正常に機能するJDK 1.5 のインストールが必要となります。 サポート対象の OSと JVM の組み合わせや、 サポート対象のデータベースプラットフォーム、 含まれるコンポーネントのリビジョンレベルに関する最新情報は、 http://www.jboss.com/products/platforms/application/testedconfigurations を参照してください。 また、 JBoss Enterprise Application Platform のインストールや検証に関する詳細説明は、http://www.redhat.com/docs/en-US/JBoss_Enterprise_Application_Platform/ にあるインストールガイドを参照してください。

3.2. JBoss Enterprise Application Platform 4.2.0.CP08 からのアップグレード

CSP/JON の使用法の使用法

累計パッチのインストール累計パッチのインストール

1. Browse Resources を使用してパッチを適用したいリソースを探します。

2. Software タブをクリックします。 リソースに適用可能なすべてのパッチと、 以前 JON によってリソースにインストールされたすべてのパッチが表示されます。

3. Install リンクは、 JON によってインストール可能なすべてのパッチの横に表示されます。このリンクのないパッチは手作業でインストールする必要があります。 Manually Uninstall リンクの横に表示されたパッチを先に手作業でアンインストールしないと新しいパッチはインストールできません。

CSP/JON でパッチをインストールする方法についての詳細は、 JON documentation を参照してください。

4. 製品サポートとライセンスのウェブサイトリンク

サポートの工程サポートの工程

http://www.redhat.com/support/process/

実稼働サポートの対象範囲実稼働サポートの対象範囲

http://www.redhat.com/support/policy/soc/production

実稼働サポートのサービスレベル合意書実稼働サポートのサービスレベル合意書

http://www.redhat.com/support/policy/sla/production/

開発者サポートの対象範囲開発者サポートの対象範囲

http://www.redhat.com/support/policy/soc/developer/

開発者サポートのサービスレベル合意書開発者サポートのサービスレベル合意書

http://www.redhat.com/support/policy/sla/developer/

製品別の製品更新およびサポートポリシー製品別の製品更新およびサポートポリシー

http://www.redhat.com/security/updates/jboss_notes/

JBoss エンドユーザー使用許諾契約書エンドユーザー使用許諾契約書

http://www.redhat.com/licenses/jboss_eula.html

リリースノートリリースノート CP09

4

Page 9: 4.2 JBoss Enterprise Application Platform

4.1. ドキュメント

同梱されるドキュメントの一覧は、 documentation ディレクトリの index.html ファイルを参照してください。

zip ディストリビューションでは、Platform とその個別コンポーネントのドキュメントは 別の zip ファイル jboss-eap-docs-<version>.zip にて配布されています。

Linux システムでは、 手作業でインストールする必要がある 2 つの rpm、 jboss-seam-docs-<version>.noarch.rpm と rh-eap-docs-<version>.noarch.rpm にドキュメントがあります。Red Hat Enterprise Linux に rpm パッケージをインストールする際に不明な点などがある場合は、http://kbase.redhat.com/faq/FAQ_35_198.shtm にある Red Hat ナレッジベースを参照してください。

Installation Guideには、 異なるインストールモードを使用して JBoss EnterpriseApplication Platform をインストールする方法やインストールを検証する方法が記載されています。

Getting Started は、プラットフォームのディレクトリ構造や Application Server のクイックガイド、異なる設定セットやサービスについて説明します。 簡単なウェブアプリケーションを使用して、 JSF-EJB3 コンポーネントの使用や、Seam を使用した JSF と EJB3 コンポーネントの統合方法を説明します。

Server Configuration Guide は管理機能や設定機能のすべてを詳細に説明します。

エラータ、追加情報、サンプルアプリケーションコード、リリースノートの最新版が含まれるドキュメントの更新バージョンは、ウェブ上の http://www.redhat.com/docs/en-US/JBoss_Enterprise_Application_Platform/ で確認できます。

4.2. JSR-181 サポート

本バージョンの JBoss Enterprise Application Platform では JSR-181 に関連する機能はサポート対象外となっています。 JSR-181 関連の機能はバージョン 4.3 でサポートされています。

5. このリリースで修正された問題

本リリースで修正された問題は次の通りです。

セキュリティセキュリティ

JBPAPP-3952: JMX コンソール設定のセキュリティ問題によって、 攻撃者がセキュリティ認証を回避できることが判明しました。

MX コンソール設定は HTTP 「動詞」である GET および POST を使用した要求の認証要件のみを指定しました。 攻撃者は GET または POST を指定しない HTTP 要求を作成し、 認証なしでデフォルトの GET ハンドラが HTTP 要求を実行することができました。 本リリースには、HTTP 動詞を指定しない、 設定が更新された JMX コンソールが含まれています。 そのため、認証要件がすべての要求に対して適用されます。 

この脆弱性に関する詳細情報は、 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-0738 を参照してください。

この問題を解決するため、 全ユーザーが本リリースへアップグレードするようにしてください。

即座にアップグレードできない場合や、 サーバーのデプロイメントがカスタマイズされている場合は、 JMX コンソール WAR デプロイメント記述子 (WEB-INF/web.xml) を編集して修正を

5. このリリースで修正された問題このリリースで修正された問題

5

Page 10: 4.2 JBoss Enterprise Application Platform

適用することができます。 修正の適用方法に関する詳細は、http://kbase.redhat.com/faq/docs/DOC-30741 を参照してください。 変更を行う前に RedHat JBoss サポートへ連絡するようにしてください。

Red Hat は、 CVE-2010-0738 の問題を報告していただいた Minded Security の Stefano diPaola 氏および Giorgio Fedon 氏に感謝します。

JBPAPP-3979: JBoss Application Server Web Console (/web-console) への非認証アクセスはデフォルトで阻止されます。 しかし、 阻止が十分でなく、 GET および POST HTTP のみが阻止されました。 リモートの攻撃者はこの弱点を悪用して機密情報にアクセスすることができました。 本リリースには、 デフォルトですべての非認証アクセスを阻止する、 設定が更新された Web コンソールが同梱されています (詳細は CVE-2010-1428 を参照してください)。

JBPAPP-3633: JBPAPP-544 では、 /status サーブレットのマッピングを削除して保護された /web-console/status のみを残し、 セキュリティの問題を修正しました。 しかし、JBPAPP-1146 により保護されていない /status マッピングが再度追加されました。本リリースより JMX コンソールの JAAS セキュリティドメインで /status サーブレットが保護されるようになりました。

JBPAPP-2872: Twiddle は JMX パスワードを含むすべてのコマンドライン引数をログとして twiddle.log に記録しました。 このファイルは公的な読み取りパーミッションを持ち、 カレントワーキングディレクトリに作成されます。 そのため、 ログでパスワードがマスクされるようになり、 セキュリティリスクが回避されました (この問題は CVE-2009-3554 に関連しています)。

JBPAPP-2500: ステートレスセッション Bean に @RunAs アノテーションが付けられ、 @RunAsPrincipal が別のステートレスセッション Bean を呼び出すと、 2 番目の Bean の EJBContext.getCallerPrincipal メソッドが @RunAsPrincipal で最初の Bean に設定されたアイデンティティでなく、 非認証のアイデンティティを返しました。 本リリースより、 正しいアイデンティティが返されるようになりました。

JBPAPP-2312: プリンシパルセッションが HTTP セッションの属性として含まれるようにするため、 PrincipalSessionAttributeFilter が作成されました。 この属性はセッション期限を確認し、 発見した場合に認証済みキャッシュをフラッシュします。 このフィルタを使用するには、 JBoss Web の web.xml にあるフィルタのコメントを外します。

JBoss Application Server

JBPAPP-4018: HSQLDB がバージョン 1.8.0.8.patch03 にアップグレードされ、 IPv6 アドレスが正しく処理されるようになりました。

JBPAPP-4017: Apache HTTP Client がパッチにより更新され、 IPv6 アドレスを正しく処理するようになりました。

JBPAPP-3925: EJBTimer が永続化され、 サーバーの再起動後に読み戻しされると、 timerId 値がリセットされます。 そのため、 永続化されたすべての TimerHandle は確実にタイマを返すことができません。 これにより、 javax.ejb.NoSuchObjectLocalException: Timer not available が発生します。

この問題を修正するには、 $JBOSS_HOME/server/$PROFILE/deploy/ejb-deployer.xml ファイルにて、 次のように UUIDTimerIdGenerator を TimerIdGeneratorClassName として設定する必要があります。

<mbean code="org.jboss.ejb.txtimer.EJBTimerServiceImpl"name="jboss.ejb:service=EJBTimerService"><attribute name="RetryPolicy">

リリースノートリリースノート CP09

6

Page 11: 4.2 JBoss Enterprise Application Platform

また、 システムプロパティ jboss.ejb.txtimer.preserveTimerId をサーバー起動時に設定する必要があります。

重要重要

timerId はデフォルトでは保持されません。 これは、 JON でアップグレードする際に以前 $JBOSS_HOME/server/$PROFILE/deploy/ejb-deployer.xml に設定された BigIntegerTimerIdGenerator がアップデートされなかったため、 この動作が維持されました (JON はこの XML ファイルをアップデートしません)。 BigIntegerTimerIdGenerator を jboss.ejb.txtimer.preserveTimerId と使用すると、 timerId のコリジョンが予想されます。

JBPAPP-3336: JDK 6 でレプリケートされたセッションをアンマーシャルする際、 MarshalledValueInputStream#resolveClass() が WebappClassLoader#loadClass(name) を持つアレイクラスの解決を試みると ClassNotFoundException が発生します。 loadClass() はアレイ構文を処理できないため、 クラスを見つけられない親クラスへ委譲され、 例外が発生しました。 loadClass() メソッドがアレイ構文を理解できる Class.forName(name, false, WebappClassLoader)に置き換えられたため、 この問題は発生しないようになりました。

JBPAPP-2905: production 設定のScanPeriod は 60 秒に設定されています。 シャットダウンが実行された時にデプロイメントスキャナスレッドがスリープ状態であった場合、 デプロイメントスキャナがスリープ状態である期間、 シャットダウンが待機されました。 シャットダウンが実行されるとデプロイメントスキャナスレッドが停止するようになったため、 待機時間が発生しなくなりました。

JBPAPP-2764: LoadMgr3 はクラスのロード失敗をエラーとしてログに記録しましたが、 場合によってはエラーではないことがありました。 そのため、 ERROR メッセージが WARNING メッセージに格下げされました。

JBPAPP-2578: sample-bindings.xml の JBoss Messaging サービスに関する設定情報が更新され、 新しい設定を使用するようになりました。

クラスタリングクラスタリング

JBPAPP-2854: 複数のノードが同時に起動されると、 クラスタメンバとメッセージ送信側の間でアドレスの不一致が発生することがありました。 これにより、 NAKACK で内部状態の不整合が発生し、 次のようなエラーがログに記録されました。

jboss.ejb:service=EJBTimerService,retryPolicy=fixedDelay</attribute><attribute name="PersistencePolicy"> jboss.ejb:service=EJBTimerService,persistencePolicy=database</attribute><attribute name="TimerIdGeneratorClassName"> org.jboss.ejb.txtimer.UUIDTimerIdGenerator</attribute>

$JBOSS_HOME/bin/run.sh -c default -Djboss.ejb.txtimer.preserveTimerId

WARN [org.jgroups.protocols.pbcast.NAKACK] (IncomingPacketHandler (channel=Tomcat-DefaultPartition):)

5. このリリースで修正された問題このリリースで修正された問題

7

Page 12: 4.2 JBoss Enterprise Application Platform

この不一致は修正されたため、エラーが発生しないようになりました。

JBPAPP-2970: 楽観的ロックが有効になっていると、 ノードがローカルキャッシュに存在しない場合に remove(String fqn) と remove(String fgn,Object key) が他のクラスタメンバ上で動作しませんでした。 これは、 無効化を使用したりノードがエビクトされた時に発生しました。 ノードがローカルキャッシュに存在しなくても楽観的ロックが有効になっている状態で remove メソッドがクラスタ全体で動作するようになりました。

JBPAPP-2928: バディレプリケーションでは、 フェイルオーバー後に同じセッション ID で複数の同時要求が発生すると、 キャッシュデータをローカルノードへ移行中に要求が org.jboss.cache.lock.UpgradeException によって停止することがありました。 バディレプリケーションが有効になった状態でフェイルオーバー後に複数の同時リクエストが発生しても正常に動作するようになったため、 この問題は発生しなくなりました。

JBPAPP-2013: IPv6 アドレスの誤った処理を回避するため、 バインドアドレスを角括弧で囲みました。

しかし、 ホスト名とポートの組み合わせに対して無効な JGroups 構文だったため、 JGroupsは TCPPING プロトコル設定で IPv6 リテラルを解析することができませんでした。 JBPAPP-3018 に対する修正によりこの問題は解決しました。

EJB3

JBPAPP-2782: EJB3 エンティティに楽観的キャッシュが使用されると、 newerThan メソッドが A.newerThan ( A ) に対して不適切な true を返しました。 これにより、キャッシュからエントリを削除しようとすると、 DataVersioningException が発生しました。 この問題を回避するため、 EJB3 エンティティキャッシュサービスは悲観的キャッシュを使用するよう設定されるようになりました。

JBPAPP-2290: tx.registerSynchronization に失敗すると、 Bean がトランザクションに添付されないため、 トランザクションセマンティックに関係しません。

JBPAPP-2248: EJB3 クライアントは、 後続の呼び出しで既存のソケット接続を再使用しません。

JBoss Web

JBPAPP-3343: org.apache.catalina.loader.WebappClassLoader は存在しないリソースが要求される度に記録を行い、 その記録を notFoundResources に保存します。 このキャッシュメソッドには制限がなかったため、 存在しないリソースの保存に大量のメモリが拡張される可能性がありました。 この問題を防ぐため、 このキャッシュに 1000 の制限が設けられました。

JBPAPP-2039: JBPAPP-1992 への修正により、 バージョン 0 でなくバージョン 1 のクッキーが JBoss Web で使用されます。 CVE-2007-5333 の記載通り、 古いバージョンはセキュリティ問題に関連しています。 セキュリティの問題にかかわらず以前の動作に戻すには、 conf/catalina.properties ファイルを追加し、 ファイル内に次のプロパティを設定します。

node2:1234] discarded message from non-member node3:1234, my view is [node1:1234|2] [node1:1234, node2:1234, node3:1234]

ERROR [org.jgroups.protocols.pbcast.NAKACK] (Timer-3:) sender node3:1234 not found in received_msgs

./run.sh -b [$IPv6_ADDRESS] -c all

リリースノートリリースノート CP09

8

Page 13: 4.2 JBoss Enterprise Application Platform

JBoss Seam

JBPAPP-4093: 無効な検証によりトランザクションが停止されたため、 Seam Booking サンプルでパスワードを変更することができませんでした。 これは、 デフォルトパスワードの長さが検証ルールが指定する有効最小長に満たなかったため発生しました。 デモユーザーのデフォルトパスワードに対応するため、 パスワードの有効最小長が短くなりました。

JBPAPP-3176: org.jboss.seam.test.RemotingTest の testMapWrapper メソッドは、マーシャリングされた XML 出力とハードコードされた文字列値を比較しようとしたため、 メソッドの実行に失敗しました。 この問題は修正され、 このメソッドは XML 要素の内容を比較するようになりました。

JBPAPP-3138: 複数の BlogTest の単体テストメソッド (test.BlogTest.testEntry() および test.BlogTest.testLatest()) が全プラットフォーム上で失敗しました。 また、 test.BlogTest.testSearch() が一部のプラットフォームで失敗しました (詳細は JIRA のコンソール出力を参照)。 この問題の原因となっていたクラスが変更され、 Blog の単体テストを適切に処理するようになりました。

JBPAPP-2967: 負荷時に共有された値バインディングが null 値を返したため、 javax.el.PropertyNotFoundException が発生しました。 値バインディングが共有されなくなったため、 この問題は発生しなくなりました。

JBPAPP-1832: 一時的な会話が終了した時にステートフルセッション Bean がセッションより削除されませんでした。 後続の会話で Bean を使用しようとすると、 Bean がタイムアウトした時に NoSuchEJBException がスローされました。 一時的な会話が終了した時にステートフルセッション Bean が削除されるよう、 ServerConversationContext.java に行が追加されたため、 例外がスローされないようになりました。

JBoss Hibernate

JBPAPP-3487: AbstractCollectionPersister は、 Column.getAlias(Dialect,Table) ではなく Column.getAlias(Dialect) によって生成されたキー列エイリアスを使用したため、 Hibernate は正しくない table-pre-class 継承ストラテジを生成しました。 この誤ったエイリアスにより、 Hibernate が ResultSet からデータを読み出した時に例外が発生しました。 AbstractCollectionPersister は Column.getAlias(Dialect,Table) によって生成されたキー列エイリアスを使用するようになったため、 table-pre-class 継承ストラテジのマッピングが正しくなりました。

JBPAPP-3384: 明示的な @Type アノテーションがない状態で @MapKey が使用されると、Hibernate コレクションマッピングに例外が発生しました。 明示的な @Type アノテーションがないと、 Hibernate はプロパティキータイプが Serializable であると仮定し、 データベースの列値よりオブジェクトストリームをデシリアライズしようとします。 今回の更新により、 @MapKey に明示的な @Type が付与されなかった場合、 Hibernate はシリアライズ可能タイプではなく元のプロパティタイプを使用するようになりました。

JBPAPP-3371: round 関数は、 最初に提供された引数と同じタイプの値を返さなければなりません (integer、 double、 decimal)。 以前は、 タイプに関係なくすべての値を四捨五入していました。 すべての値が正しいタイプを返すようになりました。

JBPAPP-3173: ドメインモデルをインストルメントするため Javassist をバイトコードプロバイダとして使用する場合に、 エンティティが抽象メソッドで親クラスを拡張するとエラーの原因となりました。 Hibernate コードが while ステートメントで continue ではなく return を

org.apache.tomcat.util.http.ServerCookie.VERSION_SWITCH=false

5. このリリースで修正された問題このリリースで修正された問題

9

Page 14: 4.2 JBoss Enterprise Application Platform

使用したため、 ステートメントが使用すべき他の属性をすべてスキップしました。 この問題は修正されました。

JBPAPP-3098: コレクションタイプパラメータを持つフィルタを使用し、 SessionFactoryのライフタイムの間にそのコレクションのパラメータ数が変更になると、 パラメータ数の変更を反映して SQL が更新されませんでした。 これにより、 通常次のようなエラーが発生しました。

java.sql.SQLException: Parameter index out of bounds.2 is not between valid values of 1 and 1

これは HQL のみで発生し、 Criteria では発生しませんでした。 この問題は修正されました。

JBPAPP-3089: 長い IN リストによって、 解析中にスタックのオーバーフローが発生することがありました。 x によって参照される要素数が、 使用可能なスタック領域上の依存関係数を越えると、 where x in (:x) のようなクエリ要素や、 手作業で構成された where x in (1,2,3,...) などによってスタックオーバーフローが生成されることがありました。 Java仮想マシンでは、 クエリ実行時点でスタックが比較的空いていることを前提にすると、 制限は9000 から 10000 になります。

再帰アルゴリズムを使用して解析ツリーをウォーキングしたため、 スタックオーバーフローはorg.hibernate.hql.ast.util.NodeTraverser で発生しました。 長い IN リストは大変深いサブツリーを生成したため、 NodeTraverser の内部メソッドである visitDepthFirst が自身を何度も呼び出すと、 長さが適切なリストがスタックオーバーフローの原因となりました。 この問題を修正するため、 再帰アルゴリズムが反復のツリーウォーキング実装に置き換えられました。

JBPAPP-3068: MySQL 上で列挙を @Id としてマッピングすると、 次のようなエラーメッセージで SchemaExport 例外が発生します。

これは、 Hibernate が length プロパティなしで列挙型の id プロパティを tinyBlob(MySQL 上) としてバインドしたため発生しました。 この問題の修正により、 AnnotationBinder の bindId() がSimpleValueBinder.setType() を呼び出して列タイプを string resp. int. に設定するようになりました。

JBPAPP-3060: @JoinColumn マッピングは、 @ManyToOne によって列定義が定義されていても無効であると仮定しました。 Ejb3JoinColumn.java が更新され、 length、 precision、 scale のような定義された列プロパティが @JoinColumn マッピングで確認されるようになりました。

JBPAPP-3052: org.hibernate.id.enhanced.SequenceStyleGenerator が識別子を生成すると、 生成される選択スクリプトは次のようになります。

しかし、 PostgreSQL では、 next_val と id_val の間に as が必要になります。 詳細は、http://sql-info.de/en/postgresql/postgres-gotchas.html#1_1 を参照してください。

Unsuccessful: create table PlanetCheatSheet (planet tinyblobnot null,mass double precision not null, numberOfInhabitantsbigint not null, radius double precision not null, primarykey (planet)) ENGINE=InnoDBBLOB/TEXT column 'planet' used in key specification withouta key length

select next_val id_val from hibernate_sequence for update

リリースノートリリースノート CP09

10

Page 15: 4.2 JBoss Enterprise Application Platform

JBPAPP-3038: Hibernate コアはバージョン 3.2.4.SP1.CP09 にアップグレードされました。Hibernate アノテーションは バージョン 3.3.1.GA.CP02 にアップグレードされました。Hibernate エンティティマネージャはバージョン 3.3.2.GA.CP01 にアップグレードされました。

JBPAPP-2900: MySQL は TEMPORARY キーワードを使用して暗黙のトランザクションコミットを迂回します。 以前、Hibernate は <CREATE TEMPORARY TABLE> を <DROP TABLE> と共に使用していました。 TEMPORARY キーワードを省略すると、 暗黙コミットが発生し、 XA トランザクション内で即座に障害が発生しました。 <DROP TEMPORARY TABLE> がサポートされるようになったため、 この問題は解消されました。

JBPAPP-2082: mappedBy としてマーク付けされたアソシエーションは、 @JoinTable や@JoinColumn のようなデータベースマッピングを定義してはなりません。 この修正によって、 Hibernate がこの無効なマッピングを受信するとスローされる AnnotationsExceptionが追加されました。

JBPAPP-2049: HQL トランスレータは、 タプル構文を使用してコンポーネントに対する IS NULL チェックと IS NOT NULL チェックのレンダリングを試みました。 SQL を読みやすくするため、 タプル構文ではなく拡張構文が使用されるようになりました。

JBPAPP-1998: ある EntityManager が別の EntityManager によって更新されたエンティティを削除しようとし、 hibernate.jdbc.batch_versioned_data がデフォルト値である false に設定されていると、 楽観的ロッキングが失敗した場合に不適切な EntityNotFoundException がスローされました。 そのため、 この状況に適切な OptimisticLockException がスローされるようになりました。

JBPAPP-1547: デフォルトで Sybase ASE 15 の文字列比較は大小文字を区別します。 org.hibernate.dialect.SybaseASE15Dialect.areStringComparisonsCaseInsensitive() メソッドが true を返すようになりました。

Sybase データベースが大小文字を区別する操作を実行するよう設定されている場合、 この設定は不適切になります。 しかし、 Hibernate はこのメソッドを単体テストのみに使用するため、 この変更による Hibernate の内部処理への影響はありません。

JBPAPP-906: 不安定な同期化された Java 6 ClassLoader.loadClass メソッドが使用され、 デシリアライズされた文字列が作成されるバグが Hibernate コアに存在します。 これにより、 複数のスレッドが文字列のアレイが含まれるデータベースの行をロードすると、 1 つのスレッドがすべての手順を実行するよう強制され、 残りのスレッドは休止状態になります。 この問題を修正するため、 SerializationHelper$CustomObjectInputStreaml を変更して Class.forName(String,Boolean,ClassLoader) 形式を使用するようにします。 これにより、 デシリアライズが発生する方法を変更し、 特に様々な org.hibernate.type.Type実装のクラスローダーや returnedClass に対して、 可能な限りベストエフォートのクラスローダーが使用されるようにします。

Remoting

JBPAPP-3707: org.jboss.remoting.marshal.MarshallerLoaderHandler がクラスに対する要求を受信すると、 org.jboss.remoting.loading.ClassBytes のインスタンスを返します。 しかし、 MarshallerLoaderHandler が要求されたクラスを見つけられない場合、 返された ClassBytes オブジェクトのクラスバイトアレイは null 値になります。 org.jboss.remoting.loading.ClassByteClassLoader は null バイトアレイの可能性をチェックしなかったため、 NullPointerException が発生しました。 ClassByteClassLoader が null 値をチェックするようになったため、 この問題は発生しなくなりました。

5. このリリースで修正された問題このリリースで修正された問題

11

Page 16: 4.2 JBoss Enterprise Application Platform

6. 本リリースでの既知の問題

リリース時における既知の問題は次の通りです。

一般的な既知の問題一般的な既知の問題

JBPAPP-4172: 64 ビットの Red Hat Enterprise Linux 5 上で IBM JDK 1.5 をインストールしようとすると、 Java バイナリへのリンクが壊れます。 これにより、 アプリケーションサーバーが起動しません。 この問題を回避するには、 IBM JDK 1.5 の代わりに Sun JDK 1.6 を使用します。

JBPAPP-4140: Xalan イテレータが最後のノードに達するとキャッシュを適切に更新しません。 これにより、 不適切な変換が出力されます。 このバグに関する詳細は、 XALANJ-2204を参照してください。

JBPAPP-4101: Sun JDK 6 はデフォルトでは JBoss Enterprise Application Platform と動作しません。 JDK6 の使用に関する情報は、 JBoss Enterprise Application Platform 4.2.0 CP09 向けの 『JDK6 Compatibility Guide』 を参照してください。 このガイドはドキュメントバンドルには含まれていません。

JBPAPP-4085: probe.sh が終了すると、 指定の文字列に一致する条件と、 -match <string> パラメータに一致した応答数に反映するサマリー行を作成します。 例は次の通りです。

Total responses=1, 1 matches, 3 non-matches

タイムアウトによりマルチキャストソケットを閉じるスレッド設定により、 サマリー行が出力される前にマルチキャストソケットが例外を生成し返すため、 上記のサマリー行は表示されません。

JBPAPP-3365: UnifiedClassLoader3.cacheLoadedResource() は 2 つのパスより呼び出されますが、 1 つのパスは null 値をチェックしませんでした。 存在しないリソースがロードされると、 キャッシュエントリが null 値で作成されたため、 メモリーリークの原因となりました。 null 値のチェックが追加されたため、 メモリーリークが発生しなくなりました。

JBPAPP-3145: wsrunclient.sh スクリプトがライブラリに存在せず、 ClassNotFoundException によって失敗します。 Linux でこの問題を回避するには、 wsrunclient.sh を実行する前に次のステートメントを実行します。

Windows でこの問題を回避するには、 wsrunclient.bat を実行する前に次のステートメントを実行します。

JBPAPP-3143: サンプルより WSDL ファイルを生成する時に wsprovide.sh スクリプトと wsprovide.bat スクリプトが失敗します。 Linux でこの問題を回避するには、 wsprovide.sh を実行する前に次のステートメントを実行します。

export JBOSS_HOME=<path to your JBoss EAP installation>WSRUNCLIENT_CLASSPATH="$JBOSS_HOME/client/wsdl4j.jar"export WSRUNCLIENT_CLASSPATH

set JBOSS_HOME=<path to your JBoss EAP installation>set WSRUNCLIENT_CLASSPATH=%JBOSS_HOME%/client/wsdl4j.jar

export JBOSS_HOME=<path to your JBoss EAP installation>

リリースノートリリースノート CP09

12

Page 17: 4.2 JBoss Enterprise Application Platform

Windows でこの問題を回避するには、 wsprovide.batを実行する前に次のステートメントを実行します。

JBPAPP-3117: 正しくない mcast_addr 値が設定されると、 ユーザーはクロストークに関する古い URL へ示されます。 mcast_addr やクロストークの問題が発生した場合、 これらに関する新しい URLは https://www.jboss.org/community/docs/DOC-9469 になります。

JBPAPP-2306: HP-UX 初期スクリプト jboss_init_hpux.sh は -b オプションを用いたバインドアドレスの定義を許可しません。

JBPAPP-1774: JBoss Enterprise Application Platform RPM は OpenJDK ディストリビューションとだけではインストールできません。

JBPAPP-1286: ドキュメントテーブル内のフットノートとリストは PDF で表示されません。この問題は FOP 内に存在しており、現在その迂回策はありません。フットノートは前述の状況では可能な限り使用されていませんが、リリースノートなどのドキュメントでは、 文書化された問題のウェブアドレスは自動的にフットノートとして生成され、 文書化された問題の横に番号が記載され、 表示されないフットノートを参照します。

EJB における既知の問題における既知の問題

JBPAPP-3908: ValidateDTD が EJB デプロイヤで true に設定されると、 メッセージ駆動型Bean (JMSContainerInvoker 内 のBean など) が jboss_4_2.dtd に存在しないため、 standardjboss.xml の検証に失敗します。 この問題を回避するには、 standardjboss.xml の jboss_4_2.dtd への参照を削除します。

Hibernate の既知の問題の既知の問題

JBPAPP-4175: ResultTransformer を使用して Hibernate がキャッシュ可能クエリを実行すると、 ResultTransformer を適用した後に結果をキャッシュしようとします。 しかし、データが変更された可能性があるため、 Hibernate は読み取ることができません。 この場合、結果をキャッシュしようとすると ClassCastException が発生します。

JBPAPP-4123: 制約名が変更されると、 PostgreSQL は SchemaExport をドロップできません。

JBPAPP-4095: コレクション上で join fetch 用いて HQL クエリをスクロールする時、 カーソルが最後の結果以降にあると FetchingScrollableResultsImpl.last() が最後の結果に移動せず、 カーソルはそのまま最後の結果以降に留まります。 これにより、

WSPROVIDE_CLASSPATH="$JBOSS_HOME/client/jaxb-xjc.jar"WSPROVIDE_CLASSPATH="$WSPROVIDE_CLASSPATH:$JBOSS_HOME/client/jboss-ejb3x.jar"WSPROVIDE_CLASSPATH="$WSPROVIDE_CLASSPATH:$JBOSS_HOME/client/wsdl4j.jar"export WSPROVIDE_CLASSPATH

set JBOSS_HOME=<path to your JBoss EAP installation>set WSPROVIDE_CLASSPATH=%JBOSS_HOME%/client/jaxb-xjc.jarset WSPROVIDE_CLASSPATH=%WSPROVIDE_CLASSPATH%;%JBOSS_HOME%/client/jboss-ejb3x.jarset WSPROVIDE_CLASSPATH=%WSPROVIDE_CLASSPATH%;%JBOSS_HOME%/client/wsdl4j.jar

6. 本リリースでの既知の問題本リリースでの既知の問題

13

Page 18: 4.2 JBoss Enterprise Application Platform

org.hibernate.exception.GenericJDBCException: could not perform sequential read of results が発生することがあります。

JBPAPP-3946: ignoreCase が false に設定されていると、 LikeExpression が ignoreCase フラグを正しく処理しません。 正しい SQLの property like ? をビルドしますが、 getTypedValues 内のフラグを使用しません。 小文字の値が常に作成されます。

JBPAPP-3913: Oracle 11g R2 (RAC およびスタンドアロン両方) では、 シーケンスが 1 でなく 2で始まることがあります。 現在、 根本的な原因の分析中です。

JBPAPP-3911: Oracle 11g R2 (RAC およびスタンドアロン両方) では、 LockMode.UPGRADE("for update") を用いた複雑なクエリによって、 "No more data to read from socket" エラーが発生することがあります。 この問題を回避するには、 このようなクエリで LockMode.UPGRADE を使用しないようにします。 根本的原因を分析中です。

JBPAPP-3565: org.hibernate.cfg.OneToOneSecondPass メタデータがランタイム時に org.hibernate.PropertyValueException を発生します。 JOIN が存在しても otherSideProperty プロパティが含まれていない場合、 otherSideJoin が null とならず、 古い無効なデータを保持します。

JBPAPP-3223: タプル構文をサポートしないデータベース上の HQL やCriteia では、 現在Hibernate はタプル構文をサポートしていません。 例えば、 データベースがタプル構文をサポートしないとします。

where (a,b) in ( (1,2), (3,4) )

Hibernate は次のように変換しなければなりません。

where ( (a=1 AND b=2) OR ( (a=3 AND b=4) )

現在、 タプル構文をサポートしないデータベース上でこのような構文クエリを使用しないようにすること以外に回避策はありません。

JBPAPP-3105: 単一の IN 表現に含むことができる要素数は一定数に制限されています (Oracleの場合は 1000)。 IN メソッド内へアレイまたはコレクションが渡されると、 Oracle は IN 節の最大項目数は 1000 であることを提示し、 エラーをスローします。 これは HQL と CriteriaAPI の両方に影響します。 この問題を回避するには、 大きなアレイやコレクションをサブアレイやサブコレクションに分割するようにします。 JIRA に記述されている通り、 「in」の場合、 in(1,2,...,1000) or in(1001+)形式を使用し、 「not in」の場合は not(1,2,...,1000) or in(1001+) 形式を使用します。

JBPAPP-3075: データベースの予約キーワードが、 Hibernate バリデータアノテーションでプロパティ名として使用されると、 (@Min や @Max など)、 列名を指定しても SchemaExport で例外が発生します。 これは、 Hibernate が指定された名前を無視するからです。 この問題を回避するには、 @Column アノテーションでプロパティ名をデータベースの予約キーワード以外にマップします。 この問題は Hibernate 4 で修正される予定です。

JBPAPP-3069: デフォルトで ansinull が off に設定されているため、 SybaseでQueryByExampleTest.testJunctionNotExpressionQBE テストに失敗します。 このテストは、 ( OR^ (ex) (NOT ex) ) のような分離述語をビルドします。 これはデータベースのすべてに一致するはずですが、 ANSI SQL は NULL 値が関連するすべての比較を UNKNOWNとして評価するため、 一致したものがすべて返されるわけではありません。

この問題を回避するには、 JDBC URL に次の文字列を追加します。

リリースノートリリースノート CP09

14

Page 19: 4.2 JBoss Enterprise Application Platform

これが可能でない場合は、 Hibernate セッション s を取得した後に次の Java コード (または同様の Java コード) を実行します。

JBPAPP-3056: パラメータメーカーの無効な使用により、 Hibernate テスト org.hibernate.test.hql.ASTParserLoadingTest.java が SQL エラーによって DB2上で失敗します。 これは、 DB2 が型なしパラメータをサポートしていないからです。 この問題を回避するため、 パラメータが正しいデータタイプにキャストされるようクエリを編集してください。

JBPAPP-2945: PostgreSQL 8.3.7 上で Hibernate テスト org.hibernate.test.annotations.query.QueryAndSQLTest.java が失敗し、 次のログメッセージが記録されます。

Caused by: org.postgresql.util.PSQLException: Method org.postgresql.jdbc3.Jdbc3PreparedStatement.setQueryTimeout(int) is not yet implemented.

これは、 PostgreSQL の JDBC ドライバが Statement.setQueryTimeout メソッドをサポートしていないため発生します。

JBPAPP-2839: インストルメントされたエンティティのインターセプタの再挿入に失敗すると、 デシリアライズされた PersistenceContext よりエンティティが取り込まれた時に NullPointerException が発生する原因となります。

JBPAPP-2440: キャッシュプロバイダが見つからないと、 次のメッセージと共にNoClassDefFoundError がスローされます。

net/sf/ehcache/CacheException

接続プロバイダが見つからないと、 次のメッセージと共に HibernateException がスローされます。

Could not instantiate connection provider: " + providerClass

このようなエラーが発生したら、 キャッシュまたは接続プロバイダの設定を確認し 、プロバイダがクラスパスに含まれているようにしてください。

JBPAPP-2316: 現在、 Hibernate はアプリケーションが長い文字列やバイナリ列のデータをJava の文字列として処理できるようにするプロパティタイプを提供していません。 この機能は JBoss Enterprise Application Platform 5.1.0.GA で導入される予定です。

JBPAPP-2315: 現在、 Hibernate はアプリケーションが java.sql.Types.LONGVARCHAR や java.sql.Types.CLOB 列のデータを Java の文字列として処理できるようにするプロパティタイプを提供していません。 また、 java.sql.Types.LONGVARBINARY や java.sql.Types.BLOB を Java の byte[] として処理することもできません。 これらの機能は JBoss Enterprise Application Platform 5.1.0.GA で導入される予定です。

JBPAPP-1895: 形無しテンプレートをサポートしない DB2 で形無しテンプレートを用いてクエリをテストすると、 Hibernate は JoinTest.java をテストし、 QueryAndSQLTest.javaに失敗します。 この問題を回避するには、 JIRA に記載されている通り、 適切なデータタイプ

?SQLINITSTRING=set ansinull on

s.connection().createStatement().execute("set ansinull on");

6. 本リリースでの既知の問題本リリースでの既知の問題

15

Page 20: 4.2 JBoss Enterprise Application Platform

にパラメータがキャストされるようクエリを編集します。

JBPAPP-1722: エンティティが列からあふれると、 Sybase は新しいエンティティを挿入することができません。 しかし、 例外をスローしないため、 Hibernate は挿入に失敗したことを認識できません。 この問題を回避するため、 値が列からあふれないよう、 アプリケーションがエンティティプロパティを検証するようにしてください。

JBPAPP-1709: 現バージョンの JBoss Enterprise Application Platform 4.x に同梱される ejb3-persistence.jar のバージョンが間違っています。 現在、Hibernate エンティティマネージャ向けに ejb3-persistence.jar 1.0.0.GA が同梱されますが、 ejb3-persistence.jar 1.0.1.GA を使用すべきです。

JAR の 1.0.0.GA バージョンと比較し、 1.0.1.GA バージョンには 2 つの変更が加えられています。

JPA 仕様はクラス名に誤字がある値で定数を定義します。

JBoss Enterprise Application Platform に含まれる JAR にはこの誤字が存在しないため、JPA 仕様に準拠していません。 詳細は、http://opensource.atlassian.com/projects/hibernate/browse/EJB-321 を参照してください。

javax.persistence.Query.getSingleResult() の Javadoc には、 結果がない場合に EntityNotFoundException が生成されると記述されていますが、 実際生成されるのは NoResultException です。

JBPAPP-1613: Sybase でブール変数としてマップされた列の null 値は、 null ではなく 0 として永続されます。 この問題を回避するには、 type="boolean" の代わりに type="org.hibernate.test.where.NumericTrueFalseType" をこれらの値としてマップします。

JBPAPP-1555: Sybase は Blob と Clob でなく、image と text を使用するため、Sybase 上では Blob と Clob のサポートはありません。 このサポートは JBoss Enterprise ApplicationPlatform 5.1.0.GA で導入される予定です。 現在、 ユーザー定義タイプを作成して Sybase の text および image プロパティを処理することができます。

JBPAPP-1554: Sybase ではサブクエリ選択リストに 1 つのエントリ (列名や * など) のみが指定できます。 生成された SQL には複数のエントリを持つサブクエリ選択リストが含まれるため、 collection 要素に複合 ID (composite ID) がある場合は HQL 関数である elements() が失敗します。 この問題を回避するため、 要素に複合 ID がある場合は HQL elements() を使用しないようにします。 サブクエリの選択リストに複数のエントリが存在しないよう、HQL を再構成します。

JBPAPP-1551: バッチ挿入ステートメントが命令された時に組み込みクラスが考慮されません。 この問題には 2 つの回避策が存在します。

組み込みクラスが使用される時は ORDER_INSERTS をデフォルト値 (FALSE) のままにします。

SQL の挿入命令を強制するため、 子オブジェクト上で明示的に session.save() を呼び出します。

JBPAPP-1546: Sybase を使用する際、 連鎖トランザクションモードの間は SchemaExport を

javax.persistence.Persistence.PERSISTENCE_PROVIDER = "javax.persistence.spi.PeristenceProvider"

リリースノートリリースノート CP09

16

Page 21: 4.2 JBoss Enterprise Application Platform

使用して保存プロシージャを作成できません。 新しい保存プロシージャの定義の後に次のコードを追加してこの問題を回避することが推奨されます。

JBPAPP-1545: Sybase でクエリに 1 つの ANSI 結合と 3 つ以上の結合が存在し、 1 つの結合にunion サブクラスが関係する場合、 SybSQLException によりクエリに失敗することがあります。 これは、列が結合されたテーブル表現の範囲内にないからです。 union サブクラスが関係する結合フェッチを使用しないことが推奨されます。

JBPAPP-1328: サブ選択でステートメントの削除または更新を実行しようとすると、 生成された SQL が未知のテーブルエイリアスを参照し、 クエリに失敗します。

where 節の条件を反対にすることが現在の回避策になります。

誤:

正:

JBPAPP-1230: DetachedCriteria がサブクエリとして使用されると、 生成された SQL のサブクエリに列別名が含まれます。 Sybase ではサブクエリの列別名は許可されていないため、Sybase では SybSQLException がスローされます。 この問題を回避するには、 サブクエリにDetachedCriteria を使用する代わりに HQL クエリを使用します。

JBPAPP-1229: Sybase 上では、 テキスト current_timestamp がトランスレータによってメソッドモードとして認識されません。 括弧を用いた SQL 関数の呼び出しのみがメソッドモードとして認識されます。 current_timestamp の関数の置き換えに依存しないようにすること以外、 回避策はありません。

JBPAPP-1123: 結合されたクラスに @OrderBy が使用されると (結合テーブルを使用)、「orderby」節は実際のテーブル名を使用して列を限定するため、 生成された SQL が MySQL、PostgreSQL、 Oracle、 MSSQL で無効となります。 「order by」節はテーブルエイリアスを使用するようにしなければなりません。

JBPAPP-1082: 初期化されていない char プロパティが使用されると、 Hibernate が char プロパティを 0 に初期化し、 \u0000 を含む文字列を永続します。 PostgreSQL は \u0000 が組み込まれた文字列を許可しないため、 例外をスローします。 この問題を表している電子メールのスレッドは次を参照してください。

http://markmail.org/message/jvzlzxw6ui2rcsmv#query:\u0000%20postgresql+page:1+mid:gpu34f4iwanbyjqh+state:results

現在、 PostgreSQL を使用した char 列の \u0000 の永続に対する回避策は存在しません。

<database-object><create>sp_procxmode paramHandling, 'chained'</create><drop/></database-object>

update Person set name = ?1 where id in (select c.id from Customer c) and name <> ?2

update Person set name = ?1 where name <> ?2 and id in (select c.id from Customer c)

6. 本リリースでの既知の問題本リリースでの既知の問題

17

Page 22: 4.2 JBoss Enterprise Application Platform

初期化されていない char プロパティに対して \u0000 ではなく NULL を永続させたい場合は、 プリミティブ char タイプの代わりに java.lang.Character を使用します。 これにより、プロパティが初期化された際に例外が発生しないようにします。 \u0000 に設定された java.lang.Character を永続しようとしても例外が発生します。

JBPAPP-1075: 宣言モデルによって暗黙的に一意と定義された列に、 冗長な @Column( unique = true ) または @UniqueConstraint( columnNames = { ... } ) アノテーションが使用されると、 Oracle とSybase 上でSchemaExport が失敗します。 この問題を回避するには、 冗長な @Column アノテーションを削除します。

JBPAPP-1071: 場合によっては、 主キー列に外部キーの制約が定義されていると、 CREATE TABLE ステートメントを生成する際に SchemaExport によって列が null 可能であると誤って宣言されることがあります。 この場合、主キー列が null 不可能でなければならない MSSQL、DB2、 Sybase では障害が発生します。

この問題を回避するには、下記のように null 不可能な列を明示的に指定します。

nullable=false を @JoinColumn に追加します。

optional=false を @ManyToOne に追加します。

@CollectionOfElements がマップを使用する場合、@AttributeOverride と @Column(name="mapkey", nullable=false) を追加します。

@CollectionId 内または @MapKey 内の場合、 @Column に nullable=false を追加します。

JBPAPP-1063: TIME や TIMESTAMP などのデータベース値を返す時、 MySQL はミリ秒やマイクロ秒の単位をサポートしていません。

JBPAPP-909: JDK 1.6 に対するサポートのため、 Enterprise Application Platform のHibernate コンポーネント内で HashMap と HashSet の反復順が変更になりました。 その結果、 union 節の列順と union サブクラスが変更になったため、 コンポーネントのパフォーマンスが若干影響を受けました。

IPv6 における既知の問題における既知の問題

JBPAPP-3146: JBoss Web Services は IPv6 アドレスを正しく処理できず、 互換性の問題が複数存在します。

JBPAPP-3096: JBoss Transactions は IPv6 アドレスをサポートしていません。

JBPAPP-2005: IPv6 のリンクローカルアドレスはバインドアドレスやマルチキャストアドレスとして使用されると正しく処理されません。 この問題を回避するには、 IPv6 リンクローカルアドレスではなく IPv6 グローバルアドレスを使用します。

Seam における既知の問題における既知の問題

JBPAPP-4153: ajax4jsf を使用するアプリケーションは IBM JDK 1.6 で動作しません。 この問題を回避するには、 次の環境変数を設定して OSCache など別のキャッシュを使用します。

org.ajax4jsf.cache.CacheFactory=org.ajax4jsf.cache.OSCacheCacheFactory

リリースノートリリースノート CP09

18

Page 23: 4.2 JBoss Enterprise Application Platform

A. 改訂履歴

改訂改訂 1.0-6.400 2013-10-31 Rüdiger LandmannRebuild with publican 4.0.0

改訂改訂 1.0-6 2012-07-18 Anthony TownsRebuild for Publican 3.0

改訂改訂 1.0-0 Mon Apr 26 2010 Laura Bailey最終稿

A. 改訂履歴改訂履歴

19