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

JBoss Enterprise Application
Platform 4.2
リリースノート CP09
JBoss Enterprise Application Platform 4.2 Cumulative Patch 9 向け
エディッション 1.0
Laura Bailey
JBoss Enterprise Application Platform 4.2 リリースノート CP09
JBoss Enterprise Application Platform 4.2 Cumulative Patch 9 向け
エディッション 1.0
Laura Bailey
[email protected] m
法律上の通知
Copyright © 2010 Red Hat, Inc.
T his document is licensed by Red Hat under the Creative Commons Attribution-ShareAlike 3.0 Unported
License. If you distribute this document, or a modified version of it, you must provide attribution to Red
Hat, Inc. and provide a link to the original. If the document is modified, all Red Hat 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, MetaMatrix, Fedora, the Infinity Logo,
and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux ® is the registered trademark of Linus T orvalds 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 United States
and/or other countries.
MySQL ® is a registered trademark of MySQL AB in the United States, the European Union and other
countries.
Node.js ® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or
endorsed by the official Joyent Node.js open source or commercial project.
T he OpenStack ® Word Mark and OpenStack Logo are either registered trademarks/service marks or
trademarks/service marks of the OpenStack Foundation, in the United States and other countries 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 Application Platform
4.2.0.CP09 関連の重要な情報が含まれている可能性があります。本リリースノートをすべて読んでから
JBoss Enterprise Application Platform 4.2.0.CP09 をインストールするようにしてください。
目次
目次
. . .はじめに
1.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2. . . . . . . . . .
1.1. 概要
2
. . .JBoss
2.
. . . . . . .Enterprise
. . . . . . . . . . . Application
. . . . . . . . . . . . Platform
. . . . . . . . . .4..2
. . の新機能
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2. . . . . . . . . .
2.1. データベースの認定
2
2.2. IPv6 の認定
2
2.3. JDK 1.6 の認定
2
2.4. コンポーネントのバージョン
2
. . .インストールと移行についての注記
3.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3. . . . . . . . . .
3.1. インストールに関する注記
3
3.2. JBoss Enterprise Application Platform 4.2.0.CP08 からのアップグレード
3
. ...製品サポートとライセンスのウェブサイトリンク
4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3. . . . . . . . . .
4.1. ドキュメント
4
4.2. JSR-181 サポート
4
. . .このリリースで修正された問題
5.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4. . . . . . . . . .
. . .本リリースでの既知の問題
6.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9. . . . . . . . . .
. . .改訂履歴
A.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
............
1
JBoss Enterprise Application Platform 4.2 リリースノート CP09
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 アプリケーションは、 Java EE 5.0
の大変シンプルな POJO ベースのプログラミングモデルの利点をすぐに活用することができます。
さらに、JBoss Seam、 Hibernate、 T omcat、 JBoss Cache など最良のオープンソースフレームワーク
と統合することで、 オープンソースコミュニティの革新技術を利用することができます。 JBoss
Enterprise Application Platform は Red Hat によって完全にテストされサポートされています。また、 多
くの企業向けハードウェアやソフトウェア製品に対応しています。
よって、 今後のバージョンの JBoss Platform との上位互換性が維持されることを確信して、 Java EE 5.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. コンポーネントのバージョン
本項では、 本 Cumulative Patch (累計パッチ) リリースに含まれる、 Enterprise Application Platform 4.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
2
3. インストールと移行についての注記
JBoss JAXR 1.2.0.SP2
JBoss Remoting 2.2.3.SP2
JBoss Serialization 1.0.3.GA
JBoss T ransactions 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 Application
Platform バージョン 4.2 のインストールやアップグレードに関する情報を取り上げます。
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/
3
JBoss Enterprise Application Platform 4.2 リリースノート CP09
開発者サポートの対象範囲
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
4.1. ドキュメント
同梱されるドキュメントの一覧は、 documentation ディレクトリの index.htm l ファイルを参照してく
ださい。
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 Enterprise Application
Platform をインストールする方法やインストールを検証する方法が記載されています。
Getting Started は、プラットフォームのディレクトリ構造や Application Server のクイックガイ
ド、異なる設定セットやサービスについて説明します。 簡単なウェブアプリケーションを使用して、
JSF-EJB3 コンポーネントの使用や、Seam を使用した JSF と EJB3 コンポーネントの統合方法を説明
します。
Server Configuration Guide は管理機能や設定機能のすべてを詳細に説明します。
エラータ、追加情報、サンプルアプリケーションコード、リリースノートの最新版が含まれるドキュメン
トの更新バージョンは、ウェブ上の http://www.redhat.com/docs/enUS/JBoss_Enterprise_Application_Platform/ で確認できます。
4.2. JSR-181 サポート
本バージョンの JBoss Enterprise Application Platform では JSR-181 に関連する機能はサポート対象外と
なっています。 JSR-181 関連の機能はバージョン 4.3 でサポートされています。
5. こ の リ リ ー ス で 修 正 さ れ た 問 題
本リリースで修正された問題は次の通りです。
セキュリティ
JBPAPP-3952: JMX コンソール設定のセキュリティ問題によって、 攻撃者がセキュリティ認証を回避
できることが判明しました。
MX コンソール設定は HT T P 「動詞」である GET および POST を使用した要求の認証要件のみを指
定しました。 攻撃者は GET または POST を指定しない HT T P 要求を作成し、 認証なしでデフォル
トの GET ハンドラが HT T P 要求を実行することができました。 本リリースには、 HT T P 動詞を指定
しない、 設定が更新された JMX コンソールが含まれています。 そのため、 認証要件がすべての要求
に対して適用されます。 この脆弱性に関する詳細情報は、 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-0738 を
参照してください。
この問題を解決するため、 全ユーザーが本リリースへアップグレードするようにしてください。
即座にアップグレードできない場合や、 サーバーのデプロイメントがカスタマイズされている場合
は、 JMX コンソール WAR デプロイメント記述子 (WEB-INF/web.xm l) を編集して修正を適用するこ
とができます。 修正の適用方法に関する詳細は、 http://kbase.redhat.com/faq/docs/DOC-30741 を参
照してください。 変更を行う前に Red Hat JBoss サポートへ連絡するようにしてください。
4
5. このリリースで修正された問題
Red Hat は、 CVE-2010-0738 の問題を報告していただいた Minded Security の Stefano di Paola 氏お
よび Giorgio Fedon 氏に感謝します。
JBPAPP-3979: JBoss Application Server Web Console (/web-console) への非認証アクセスはデフォ
ルトで阻止されます。 しかし、 阻止が十分でなく、 GET および POST HT T P のみが阻止されまし
た。 リモートの攻撃者はこの弱点を悪用して機密情報にアクセスすることができました。 本リリース
には、 デフォルトですべての非認証アクセスを阻止する、 設定が更新された Web コンソールが同梱
されています (詳細は CVE-2010-1428 を参照してください)。
JBPAPP-3633: JBPAPP-544 では、 /status サーブレットのマッピングを削除して保護された
/web-console/status のみを残し、 セキュリティの問題を修正しました。 しかし、 JBPAPP1146 により保護されていない /status マッピングが再度追加されました。本リリースより JMX コン
ソールの JAAS セキュリティドメインで /status サーブレットが保護されるようになりました。
JBPAPP-2872: T widdle は JMX パスワードを含むすべてのコマンドライン引数をログとして
twiddle.log に記録しました。 このファイルは公的な読み取りパーミッションを持ち、 カレント
ワーキングディレクトリに作成されます。 そのため、 ログでパスワードがマスクされるようになり、
セキュリティリスクが回避されました (この問題は CVE-2009-3554 に関連しています)。
JBPAPP-2500: ステートレスセッション Bean に @ RunAs アノテーションが付けられ、
@ RunAsPrincipal が別のステートレスセッション Bean を呼び出すと、 2 番目の Bean の
EJBContext.getCallerPrincipal メソッドが @ RunAsPrincipal で最初の Bean に設定され
たアイデンティティでなく、 非認証のアイデンティティを返しました。 本リリースより、 正しいアイ
デンティティが返されるようになりました。
JBPAPP-2312: プリンシパルセッションが HT T P セッションの属性として含まれるようにするため、
PrincipalSessionAttributeFilter が作成されました。 この属性はセッション期限を確認
し、 発見した場合に認証済みキャッシュをフラッシュします。 このフィルタを使用するには、 JBoss
Web の web.xm l にあるフィルタのコメントを外します。
JBoss Application Server
JBPAPP-4018: HSQLDB がバージョン 1.8.0.8.patch03 にアップグレードされ、 IPv6 アドレスが正し
く処理されるようになりました。
JBPAPP-4017: Apache HT T P Client がパッチにより更新され、 IPv6 アドレスを正しく処理するよう
になりました。
JBPAPP-3925: EJBT im er が永続化され、 サーバーの再起動後に読み戻しされると、 tim erId 値が
リセットされます。 そのため、 永続化されたすべての T im erHandle は確実にタイマを返すことが
できません。 これにより、 javax.ejb.NoSuchObjectLocalException: T imer not available が
発生します。
この問題を修正するには、 $JBOSS_HOME/server/$PROFILE/deploy/ejb-deployer.xm l
ファイルにて、 次のように UUIDT im erIdGenerator を T im erIdGeneratorClassNam e とし
て設定する必要があります。
<mbean code="org.jboss.ejb.txtimer.EJBTimerServiceImpl"
name="jboss.ejb:service=EJBTimerService">
<attribute name="RetryPolicy">
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.ejb.txtim er.preserveT im erId をサーバー起動時に設定す
る必要があります。
$JBOSS_HOME/bin/run.sh -c default -Djboss.ejb.txtimer.preserveTimerId
5
JBoss Enterprise Application Platform 4.2 リリースノート CP09
timerId はデフォルトでは保持されません
tim erId はデフォルトでは保持されません。 これは、 JON でアップグレードする際に以前
$JBOSS_HOME/server/$PROFILE/deploy/ejb-deployer.xm l に設定された
BigIntegerT im erIdGenerator がアップデートされなかったため、 この動作が維持され
ました (JON はこの XML ファイルをアップデートしません)。
BigIntegerT im erIdGenerator を jboss.ejb.txtim er.preserveT im erId と使用
すると、 tim erId のコリジョンが予想されます。
JBPAPP-3336: JDK 6 でレプリケートされたセッションをアンマーシャルする際、
MarshalledValueInputStream #resolveClass() が
WebappClassLoader#loadClass(nam e) を持つアレイクラスの解決を試みると
ClassNotFoundException が発生します。 loadClass() はアレイ構文を処理できないため、 ク
ラスを見つけられない親クラスへ委譲され、 例外が発生しました。 loadClass() メソッドがアレイ
構文を理解できる Class.forNam e(nam e, false, WebappClassLoader) に置き換えられたた
め、 この問題は発生しないようになりました。
JBPAPP-2905: production 設定のScanPeriod は 60 秒に設定されています。 シャットダウンが
実行された時にデプロイメントスキャナスレッドがスリープ状態であった場合、 デプロイメントス
キャナがスリープ状態である期間、 シャットダウンが待機されました。 シャットダウンが実行される
とデプロイメントスキャナスレッドが停止するようになったため、 待機時間が発生しなくなりまし
た。
JBPAPP-2764: LoadMgr3 はクラスのロード失敗をエラーとしてログに記録しましたが、 場合によっ
てはエラーではないことがありました。 そのため、 ERROR メッセージが WARNING メッセージに格
下げされました。
JBPAPP-2578: sam ple-bindings.xm l の JBoss Messaging サービスに関する設定情報が更新さ
れ、 新しい設定を使用するようになりました。
クラスタリング
JBPAPP-2854: 複数のノードが同時に起動されると、 クラスタメンバとメッセージ送信側の間でアド
レスの不一致が発生することがありました。 これにより、 NAKACK で内部状態の不整合が発生し、 次
のようなエラーがログに記録されました。
WARN [org.jgroups.protocols.pbcast.NAKACK]
(IncomingPacketHandler (channel=Tomcat-DefaultPartition):)
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
この不一致は修正されたため、エラーが発生しないようになりました。
JBPAPP-2970: 楽観的ロックが有効になっていると、 ノードがローカルキャッシュに存在しない場合
に rem ove(String fqn) と rem ove(String fgn,Object key) が他のクラスタメンバ上で動
作しませんでした。 これは、 無効化を使用したりノードがエビクトされた時に発生しました。 ノード
がローカルキャッシュに存在しなくても楽観的ロックが有効になっている状態で rem ove メソッドが
クラスタ全体で動作するようになりました。
JBPAPP-2928: バディレプリケーションでは、 フェイルオーバー後に同じセッション ID で複数の同時
要求が発生すると、 キャッシュデータをローカルノードへ移行中に要求が
org.jboss.cache.lock.UpgradeException によって停止することがありました。 バディレプ
リケーションが有効になった状態でフェイルオーバー後に複数の同時リクエストが発生しても正常に
動作するようになったため、 この問題は発生しなくなりました。
JBPAPP-2013: IPv6 アドレスの誤った処理を回避するため、 バインドアドレスを角括弧で囲みまし
た。
./run.sh -b [$IPv6_ADDRESS] -c all
しかし、 ホスト名とポートの組み合わせに対して無効な JGroups 構文だったため、 JGroups は
T CPPING プロトコル設定で IPv6 リテラルを解析することができませんでした。 JBPAPP-3018 に対
する修正によりこの問題は解決しました。
EJB3
6
5. このリリースで修正された問題
JBPAPP-2782: EJB3 エンティティに楽観的キャッシュが使用されると、 newerT han メソッドが
A.newerT han ( 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 ファイルを追加し、 ファイル内に次のプロパティを設定します。
org.apache.tomcat.util.http.ServerCookie.VERSION_SWITCH=false
JBoss Seam
JBPAPP-4093: 無効な検証によりトランザクションが停止されたため、 Seam Booking サンプルでパ
スワードを変更することができませんでした。 これは、 デフォルトパスワードの長さが検証ルールが
指定する有効最小長に満たなかったため発生しました。 デモユーザーのデフォルトパスワードに対応
するため、 パスワードの有効最小長が短くなりました。
JBPAPP-3176: org.jboss.seam .test.Rem otingT est の testMapWrapper メソッドは、 マー
シャリングされた XML 出力とハードコードされた文字列値を比較しようとしたため、 メソッドの実行
に失敗しました。 この問題は修正され、 このメソッドは XML 要素の内容を比較するようになりまし
た。
JBPAPP-3138: 複数の BlogT est の単体テストメソッド (test.BlogT est.testEntry() および
test.BlogT est.testLatest()) が全プラットフォーム上で失敗しました。 また、
test.BlogT est.testSearch() が一部のプラットフォームで失敗しました (詳細は JIRA のコン
ソール出力を参照)。 この問題の原因となっていたクラスが変更され、 Blog の単体テストを適切に処
理するようになりました。
JBPAPP-2967: 負荷時に共有された値バインディングが null 値を返したため、
javax.el.PropertyNotFoundException が発生しました。 値バインディングが共有されなく
なったため、 この問題は発生しなくなりました。
JBPAPP-1832: 一時的な会話が終了した時にステートフルセッション Bean がセッションより削除され
ませんでした。 後続の会話で Bean を使用しようとすると、 Bean がタイムアウトした時に
NoSuchEJBException がスローされました。 一時的な会話が終了した時にステートフルセッション
Bean が削除されるよう、 ServerConversationContext.java に行が追加されたため、 例外が
スローされないようになりました。
JBoss Hibernate
JBPAPP-3487: AbstractCollectionPersister は、 Colum n.getAlias(Dialect,T able)
ではなく Colum n.getAlias(Dialect) によって生成されたキー列エイリアスを使用したため、
Hibernate は正しくない table-pre-class 継承ストラテジを生成しました。 この誤ったエイリアスによ
り、 Hibernate が ResultSet からデータを読み出した時に例外が発生しました。
AbstractCollectionPersister は Colum n.getAlias(Dialect,T able) によって生成され
たキー列エイリアスを使用するようになったため、 table-pre-class 継承ストラテジのマッピングが正
しくなりました。
JBPAPP-3384: 明示的な @ T ype アノテーションがない状態で @ MapKey が使用されると、 Hibernate
コレクションマッピングに例外が発生しました。 明示的な @ T ype アノテーションがないと、
Hibernate はプロパティキータイプが Serializable であると仮定し、 データベースの列値よりオ
ブジェクトストリームをデシリアライズしようとします。 今回の更新により、 @ MapKey に明示的な
@ T ype が付与されなかった場合、 Hibernate はシリアライズ可能タイプではなく元のプロパティタイ
プを使用するようになりました。
JBPAPP-3371: round 関数は、 最初に提供された引数と同じタイプの値を返さなければなりません
7
JBoss Enterprise Application Platform 4.2 リリースノート CP09
(integer、 double、 decimal)。 以前は、 タイプに関係なくすべての値を四捨五入していました。 すべ
ての値が正しいタイプを返すようになりました。
JBPAPP-3173: ドメインモデルをインストルメントするため Javassist をバイトコードプロバイダとし
て使用する場合に、 エンティティが抽象メソッドで親クラスを拡張するとエラーの原因となりまし
た。 Hibernate コードが while ステートメントで continue ではなく return を使用したため、 ス
テートメントが使用すべき他の属性をすべてスキップしました。 この問題は修正されました。
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.NodeT raverser で発生しました。 長い IN リストは大変深い
サブツリーを生成したため、 NodeT raverser の内部メソッドである visitDepthFirst が自身を
何度も呼び出すと、 長さが適切なリストがスタックオーバーフローの原因となりました。 この問題を
修正するため、 再帰アルゴリズムが反復のツリーウォーキング実装に置き換えられました。
JBPAPP-3068: MySQL 上で列挙を @ Id としてマッピングすると、 次のようなエラーメッセージで
Schem aExport 例外が発生します。
Unsuccessful: create table PlanetCheatSheet (planet tinyblob
not null,mass double precision not null, numberOfInhabitants
bigint not null, radius double precision not null, primary
key (planet)) ENGINE=InnoDB
BLOB/TEXT column 'planet' used in key specification without
a key length
これは、 Hibernate が length プロパティなしで列挙型の id プロパティを tinyBlob (MySQL 上)
としてバインドしたため発生しました。 この問題の修正により、 AnnotationBinder の
bindId() がSim pleValueBinder.setT ype() を呼び出して列タイプを string resp. int.
に設定するようになりました。
JBPAPP-3060: @ JoinColum n マッピングは、 @ ManyT oOne によって列定義が定義されていても無
効であると仮定しました。 Ejb3JoinColum n.java が更新され、 length、 precision、
scale のような定義された列プロパティが @ JoinColum n マッピングで確認されるようになりまし
た。
JBPAPP-3052: org.hibernate.id.enhanced.SequenceStyleGenerator が識別子を生成す
ると、 生成される選択スクリプトは次のようになります。
select next_val id_val from hibernate_sequence for update
しかし、 PostgreSQL では、 next_val と id_val の間に as が必要になります。 詳細は、
http://sql-info.de/en/postgresql/postgres-gotchas.html#1_1 を参照してください。
JBPAPP-3038: Hibernate コアはバージョン 3.2.4.SP1.CP09 にアップグレードされました。
Hibernate アノテーションは バージョン 3.3.1.GA.CP02 にアップグレードされました。 Hibernate エ
ンティティマネージャはバージョン 3.3.2.GA.CP01 にアップグレードされました。
JBPAPP-2900: MySQL は T EMPORARY キーワードを使用して暗黙のトランザクションコミットを迂回
します。 以前、Hibernate は <CREAT E T EMPORARY T ABLE> を <DROP T ABLE> と共に使用してい
ました。 T EMPORARY キーワードを省略すると、 暗黙コミットが発生し、 XA トランザクション内で
即座に障害が発生しました。 <DROP T EMPORARY T ABLE> がサポートされるようになったため、 こ
の問題は解消されました。
JBPAPP-2082: mappedBy としてマーク付けされたアソシエーションは、 @JoinT able や
@JoinColumn のようなデータベースマッピングを定義してはなりません。 この修正によって、
Hibernate がこの無効なマッピングを受信するとスローされる AnnotationsException が追加され
ました。
JBPAPP-2049: HQL トランスレータは、 タプル構文を使用してコンポーネントに対する IS NULL
8
6. 本リリースでの既知の問題
チェックと IS NOT NULL チェックのレンダリングを試みました。 SQL を読みやすくするため、 タ
プル構文ではなく拡張構文が使用されるようになりました。
JBPAPP-1998: ある EntityManager が別の EntityManager によって更新されたエンティティを
削除しようとし、 hibernate.jdbc.batch_versioned_data がデフォルト値である false に
設定されていると、 楽観的ロッキングが失敗した場合に不適切な EntityNotFoundException が
スローされました。 そのため、 この状況に適切な Optim isticLockException がスローされるよ
うになりました。
JBPAPP-1547: デフォルトで Sybase ASE 15 の文字列比較は大小文字を区別します。
org.hibernate.dialect.SybaseASE15Dialect.areStringCom parisonsCaseInsensit
ive() メソッドが true を返すようになりました。
Sybase データベースが大小文字を区別する操作を実行するよう設定されている場合、 この設定は不
適切になります。 しかし、 Hibernate はこのメソッドを単体テストのみに使用するため、 この変更に
よる Hibernate の内部処理への影響はありません。
JBPAPP-906: 不安定な同期化された Java 6 ClassLoader.loadClass メソッドが使用され、 デシ
リアライズされた文字列が作成されるバグが Hibernate コアに存在します。 これにより、 複数のス
レッドが文字列のアレイが含まれるデータベースの行をロードすると、 1 つのスレッドがすべての手
順を実行するよう強制され、 残りのスレッドは休止状態になります。 この問題を修正するため、
SerializationHelper$Custom ObjectInputStream l を変更して
Class.forNam e(String,Boolean,ClassLoader) 形式を使用するようにします。 これによ
り、 デシリアライズが発生する方法を変更し、 特に様々な org.hibernate.type.T ype 実装のク
ラスローダーや returnedClass に対して、 可能な限りベストエフォートのクラスローダーが使用され
るようにします。
Remoting
JBPAPP-3707: org.jboss.rem oting.m arshal.MarshallerLoaderHandler がクラスに対す
る要求を受信すると、 org.jboss.rem oting.loading.ClassBytes のインスタンスを返しま
す。 しかし、 MarshallerLoaderHandler が要求されたクラスを見つけられない場合、 返された
ClassBytes オブジェクトのクラスバイトアレイは null 値になります。
org.jboss.rem oting.loading.ClassByteClassLoader は null バイトアレイの可能性を
チェックしなかったため、 NullPointerException が発生しました。 ClassByteClassLoader
が null 値をチェックするようになったため、 この問題は発生しなくなりました。
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 が終了すると、 指定の文字列に一致する条件と、 -m atch <string> パ
ラメータに一致した応答数に反映するサマリー行を作成します。 例は次の通りです。
Total responses=1, 1 matches, 3 non-matches
タイムアウトによりマルチキャストソケットを閉じるスレッド設定により、 サマリー行が出力される
前にマルチキャストソケットが例外を生成し返すため、 上記のサマリー行は表示されません。
JBPAPP-3365: UnifiedClassLoader3.cacheLoadedResource() は 2 つのパスより呼び出さ
れますが、 1 つのパスは null 値をチェックしませんでした。 存在しないリソースがロードされると、
キャッシュエントリが null 値で作成されたため、 メモリーリークの原因となりました。 null 値の
チェックが追加されたため、 メモリーリークが発生しなくなりました。
JBPAPP-3145: wsrunclient.sh スクリプトがライブラリに存在せず、
ClassNotFoundException によって失敗します。 Linux でこの問題を回避するには、
9
JBoss Enterprise Application Platform 4.2 リリースノート CP09
wsrunclient.sh を実行する前に次のステートメントを実行します。
export JBOSS_HOME=<path to your JBoss EAP installation>
WSRUNCLIENT_CLASSPATH="$JBOSS_HOME/client/wsdl4j.jar"
export WSRUNCLIENT_CLASSPATH
Windows でこの問題を回避するには、 wsrunclient.bat を実行する前に次のステートメントを実
行します。
set JBOSS_HOME=<path to your JBoss EAP installation>
set WSRUNCLIENT_CLASSPATH=%JBOSS_HOME%/client/wsdl4j.jar
JBPAPP-3143: サンプルより WSDL ファイルを生成する時に wsprovide.sh スクリプトと
wsprovide.bat スクリプトが失敗します。 Linux でこの問題を回避するには、 wsprovide.sh を
実行する前に次のステートメントを実行します。
export JBOSS_HOME=<path to your JBoss EAP installation>
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
Windows でこの問題を回避するには、 wsprovide.batを実行する前に次のステートメントを実行し
ます。
set JBOSS_HOME=<path to your JBoss EAP installation>
set WSPROVIDE_CLASSPATH=%JBOSS_HOME%/client/jaxb-xjc.jar
set WSPROVIDE_CLASSPATH=%WSPROVIDE_CLASSPATH%;%JBOSS_HOME%/client/jbossejb3x.jar
set WSPROVIDE_CLASSPATH=%WSPROVIDE_CLASSPATH%;%JBOSS_HOME%/client/wsdl4j.jar
JBPAPP-3117: 正しくない m cast_addr 値が設定されると、 ユーザーはクロストークに関する古い
URL へ示されます。 m cast_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: ValidateDT D が EJB デプロイヤで true に設定されると、 メッセージ駆動型 Bean
(JMSContainerInvoker 内 のBean など) が jboss_4 _2.dtd に存在しないため、
standardjboss.xm l の検証に失敗します。 この問題を回避するには、 standardjboss.xm l の
jboss_4 _2.dtd への参照を削除します。
Hibernate の既知の問題
JBPAPP-4175: ResultT ransform er を使用して Hibernate がキャッシュ可能クエリを実行する
と、 ResultT ransform er を適用した後に結果をキャッシュしようとします。 しかし、 データが
変更された可能性があるため、 Hibernate は読み取ることができません。 この場合、 結果をキャッ
シュしようとすると ClassCastException が発生します。
JBPAPP-4123: 制約名が変更されると、 PostgreSQL は Schem aExport をドロップできません。
JBPAPP-4095: コレクション上で join fetch 用いて HQL クエリをスクロールする時、 カーソルが最後
の結果以降にあると FetchingScrollableResultsIm pl.last() が最後の結果に移動せず、
カーソルはそのまま最後の結果以降に留まります。 これにより、
org.hibernate.exception.GenericJDBCException: could not perform sequential
read of results が発生することがあります。
JBPAPP-3946: ignoreCase が false に設定されていると、 LikeExpression が ignoreCase フ
10
6. 本リリースでの既知の問題
ラグを正しく処理しません。 正しい SQLの property like ? をビルドしますが、
getT ypedValues 内のフラグを使用しません。 小文字の値が常に作成されます。
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.OneT oOneSecondPass メタデータがランタイム時に
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 と Criteria API の両方に影響しま
す。 この問題を回避するには、 大きなアレイやコレクションをサブアレイやサブコレクションに分割
するようにします。 JIRA に記述されている通り、 「in」の場合、 in(1,2,...,1000) or
in(1001+)形式を使用し、 「not in」の場合は not(1,2,...,1000) or in(1001+) 形式を使用
します。
JBPAPP-3075: データベースの予約キーワードが、 Hibernate バリデータアノテーションでプロパ
ティ名として使用されると、 (@ Min や @ Max など)、 列名を指定しても Schem aExport で例外が発
生します。 これは、 Hibernate が指定された名前を無視するからです。 この問題を回避するには、
@ Colum n アノテーションでプロパティ名をデータベースの予約キーワード以外にマップします。 こ
の問題は Hibernate 4 で修正される予定です。
JBPAPP-3069: デフォルトで ansinull が off に設定されているため、 Sybase
でQueryByExam pleT est.testJunctionNotExpressionQBE テストに失敗します。 このテスト
は、 ( OR^ (ex) (NOT ex) ) のような分離述語をビルドします。 これはデータベースのすべてに
一致するはずですが、 ANSI SQL は NULL 値が関連するすべての比較を UNKNOWN として評価するた
め、 一致したものがすべて返されるわけではありません。
この問題を回避するには、 JDBC URL に次の文字列を追加します。
?SQLINITSTRING=set ansinull on
これが可能でない場合は、 Hibernate セッション s を取得した後に次の Java コード (または同様の
Java コード) を実行します。
s.connection().createStatement().execute("set ansinull on");
JBPAPP-3056: パラメータメーカーの無効な使用により、 Hibernate テスト
org.hibernate.test.hql.AST ParserLoadingT est.java が SQL エラーによって DB2 上で
失敗します。 これは、 DB2 が型なしパラメータをサポートしていないからです。 この問題を回避す
るため、 パラメータが正しいデータタイプにキャストされるようクエリを編集してください。
JBPAPP-2945: PostgreSQL 8.3.7 上で Hibernate テスト
org.hibernate.test.annotations.query.QueryAndSQLT est.java が失敗し、 次のログ
メッセージが記録されます。
Caused by: org.postgresql.util.PSQLException: Method
org.postgresql.jdbc3.Jdbc3PreparedStatement.setQueryTimeout(int) is not yet
implemented.
11
JBoss Enterprise Application Platform 4.2 リリースノート CP09
これは、 PostgreSQL の JDBC ドライバが Statem ent.setQueryT im eout メソッドをサポートし
ていないため発生します。
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.T ypes.LONGVARCHAR や
java.sql.T ypes.CLOB 列のデータを Java の文字列として処理できるようにするプロパティタイプ
を提供していません。 また、 java.sql.T ypes.LONGVARBINARY や java.sql.T ypes.BLOB を
Java の byte[] として処理することもできません。 これらの機能は JBoss Enterprise Application
Platform 5.1.0.GA で導入される予定です。
JBPAPP-1895: 形無しテンプレートをサポートしない DB2 で形無しテンプレートを用いてクエリをテ
ストすると、 Hibernate は JoinT est.java をテストし、 QueryAndSQLT est.java に失敗しま
す。 この問題を回避するには、 JIRA に記載されている通り、 適切なデータタイプにパラメータが
キャストされるようクエリを編集します。
JBPAPP-1722: エンティティが列からあふれると、 Sybase は新しいエンティティを挿入することがで
きません。 しかし、 例外をスローしないため、 Hibernate は挿入に失敗したことを認識できません。
この問題を回避するため、 値が列からあふれないよう、 アプリケーションがエンティティプロパティ
を検証するようにしてください。
JBPAPP-1709: 現バージョンの JBoss Enterprise Application Platform 4.x に同梱される ejb3persistence.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 仕様はクラス名に誤字がある値で定数を定義します。
javax.persistence.Persistence.PERSISTENCE_PROVIDER =
"javax.persistence.spi.PeristenceProvider"
JBoss Enterprise Application Platform に含まれる JAR にはこの誤字が存在しないため、 JPA 仕様
に準拠していません。 詳細は、 http://opensource.atlassian.com/projects/hibernate/browse/EJB321 を参照してください。
javax.persistence.Query.getSingleResult() の Javadoc には、 結果がない場合に
EntityNotFoundException が生成されると記述されていますが、 実際生成されるのは
NoResultException です。
JBPAPP-1613: Sybase でブール変数としてマップされた列の null 値は、 null ではなく 0 として永
続されます。 この問題を回避するには、 type="boolean" の代わりに
type="org.hibernate.test.where.Num ericT rueFalseT ype" をこれらの値としてマップし
ます。
JBPAPP-1555: Sybase は Blob と Clob でなく、im age と text を使用するため、Sybase 上では
Blob と Clob のサポートはありません。 このサポートは JBoss Enterprise Application Platform
5.1.0.GA で導入される予定です。 現在、 ユーザー定義タイプを作成して Sybase の text および
im age プロパティを処理することができます。
JBPAPP-1554: Sybase ではサブクエリ選択リストに 1 つのエントリ (列名や * など) のみが指定でき
ます。 生成された SQL には複数のエントリを持つサブクエリ選択リストが含まれるため、 collection
要素に複合 ID (composite ID) がある場合は HQL 関数である elem ents() が失敗します。 この問題
を回避するため、 要素に複合 ID がある場合は HQL elem ents() を使用しないようにします。 サブ
12
6. 本リリースでの既知の問題
クエリの選択リストに複数のエントリが存在しないよう、HQL を再構成します。
JBPAPP-1551: バッチ挿入ステートメントが命令された時に組み込みクラスが考慮されません。 この
問題には 2 つの回避策が存在します。
組み込みクラスが使用される時は ORDER_INSERT S をデフォルト値 (FALSE) のままにします。
SQL の挿入命令を強制するため、 子オブジェクト上で明示的に session.save() を呼び出しま
す。
JBPAPP-1546: Sybase を使用する際、 連鎖トランザクションモードの間は Schem aExport を使用
して保存プロシージャを作成できません。 新しい保存プロシージャの定義の後に次のコードを追加し
てこの問題を回避することが推奨されます。
<database-object>
<create>
sp_procxmode paramHandling, 'chained'
</create>
<drop/>
</database-object>
JBPAPP-1545: Sybase でクエリに 1 つの ANSI 結合と 3 つ以上の結合が存在し、 1 つの結合に union
サブクラスが関係する場合、 SybSQLException によりクエリに失敗することがあります。 これ
は、列が結合されたテーブル表現の範囲内にないからです。 union サブクラスが関係する結合フェッ
チを使用しないことが推奨されます。
JBPAPP-1328: サブ選択でステートメントの削除または更新を実行しようとすると、 生成された SQL
が未知のテーブルエイリアスを参照し、 クエリに失敗します。
where 節の条件を反対にすることが現在の回避策になります。
誤:
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)
JBPAPP-1230: DetachedCriteria がサブクエリとして使用されると、 生成された SQL のサブク
エリに列別名が含まれます。 Sybase ではサブクエリの列別名は許可されていないため、 Sybase で
は SybSQLException がスローされます。 この問題を回避するには、 サブクエリに
DetachedCriteria を使用する代わりに HQL クエリを使用します。
JBPAPP-1229: Sybase 上では、 テキスト current_tim estam p がトランスレータによってメソッ
ドモードとして認識されません。 括弧を用いた SQL 関数の呼び出しのみがメソッドモードとして認識
されます。 current_tim estam p の関数の置き換えに依存しないようにすること以外、 回避策はあ
りません。
JBPAPP-1123: 結合されたクラスに @ OrderBy が使用されると (結合テーブルを使用)、「order by」
節は実際のテーブル名を使用して列を限定するため、 生成された 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 の永続に対する回避策は存在しません。
初期化されていない char プロパティに対して \u0000 ではなく NULL を永続させたい場合は、 プリ
ミティブ char タイプの代わりに java.lang.Character を使用します。 これにより、プロパ
ティが初期化された際に例外が発生しないようにします。 \u0000 に設定された
java.lang.Character を永続しようとしても例外が発生します。
JBPAPP-1075: 宣言モデルによって暗黙的に一意と定義された列に、 冗長な @ Colum n( unique =
true ) または @ UniqueConstraint( colum nNam es = { ... } ) アノテーションが使用され
ると、 Oracle とSybase 上でSchem aExport が失敗します。 この問題を回避するには、 冗長な
@ Colum n アノテーションを削除します。
JBPAPP-1071: 場合によっては、 主キー列に外部キーの制約が定義されていると、 CREAT E T ABLE
13
JBoss Enterprise Application Platform 4.2 リリースノート CP09
ステートメントを生成する際に Schem aExport によって列が null 可能であると誤って宣言されるこ
とがあります。 この場合、主キー列が null 不可能でなければならない MSSQL、 DB2、 Sybase では
障害が発生します。
この問題を回避するには、下記のように null 不可能な列を明示的に指定します。
nullable=false を @ JoinColum n に追加します。
optional=false を @ ManyT oOne に追加します。
@ CollectionOfElem ents がマップを使用する場合、@ AttributeOverride と
@ Colum n(nam e="m apkey", nullable=false) を追加します。
@ CollectionId 内または @ MapKey 内の場合、 @ Colum n に nullable=false を追加しま
す。
JBPAPP-1063: T IME や T IMEST AMP などのデータベース値を返す時、 MySQL はミリ秒やマイクロ
秒の単位をサポートしていません。
JBPAPP-909: JDK 1.6 に対するサポートのため、 Enterprise Application Platform の Hibernate コン
ポーネント内で HashMap と HashSet の反復順が変更になりました。 その結果、 union 節の列順と
union サブクラスが変更になったため、 コンポーネントのパフォーマンスが若干影響を受けました。
IPv6 における既知の問題
JBPAPP-3146: JBoss Web Services は IPv6 アドレスを正しく処理できず、 互換性の問題が複数存在
します。
JBPAPP-3096: JBoss T ransactions は IPv6 アドレスをサポートしていません。
JBPAPP-2005: IPv6 のリンクローカルアドレスはバインドアドレスやマルチキャストアドレスとして
使用されると正しく処理されません。 この問題を回避するには、 IPv6 リンクローカルアドレスではな
く IPv6 グローバルアドレスを使用します。
Seam における既知の問題
JBPAPP-4153: ajax4 jsf を使用するアプリケーションは IBM JDK 1.6 で動作しません。 この問題を回
避するには、 次の環境変数を設定して OSCache など別のキャッシュを使用します。
org.ajax4jsf.cache.CacheFactory=org.ajax4jsf.cache.OSCacheCacheFactory
14
A. 改訂履歴
A. 改訂履歴
改訂 1.0-6.4 00
2013-10-31
Landmann Rüdiger [FAMILY
Given]
2012-07-18
T owns Anthony [FAMILY
Given]
Mon Apr 26 2010
Bailey Laura [FAMILY Given]
Rebuild with publican 4.0.0
改訂 1.0-6
Rebuild for Publican 3.0
改訂 1.0-0
最終稿
15