この章では、Oracle Coherence製品でリリース3.6.1に導入された変更と機能強化について説明します。このドキュメントの内容は、その発行時点において正確です。オラクル社では、ソフトウェアのリリース後、リリース・ノートを定期的に更新しています。
My Oracle Supportにアクセスして、最新のソフトウェア・パッチをダウンロードします。
パッチで提供されるソフトウェア修正について最新情報を入手する方法は、パッチ配布のREADMEファイルを参照してください。
My Oracle Supportにログインします。
「パッチと更新版」タブをクリックします。
「パッチ検索」タブの下で、「製品またはファミリ(拡張検索)」を選択し、「ファミリのすべての製品を含む」チェック・ボックスを選択します。
製品名をOracle Coherenceと入力して、プラットフォームとリリースを選択し、「検索」をクリックします。
Oracle Coherenceで現在使用できるパッチのリストが表示されます。
Oracle Coherence for Javaコンポーネントに新機能、機能向上および不具合修正が追加されました。
フィルタが例外をスローしたときにフィルタベースのinvoke()メソッドのコールをハングさせる可能性がある問題を修正しました。
destroyCache()メソッドを同時にコールしたときにRepeating *Request due to the re-distribution of PartitionSet{...}メッセージがエンドレスに発生する問題を修正しました。
IndexAwareExtractorメソッドによって構築された索引がフェイルバック中に正しく送信されなくなる問題を修正しました。
大量のエビクションの発生時に索引(およびkeySetイテレータ)の破損またはエントリの欠落を引き起こす可能性のあるバグを修正しました。
フィルタベースの問合せ中に、ソート索引に関して、NullPointerExceptionを発生させる可能性のある問題を修正しました。
エントリを更新してから依存性のあるコンポーネントをリリースするまでの間にコミット/ロールバックが失敗すると、バージョンの依存性が孤立する可能性のある問題を修正しました。
ポータブル・オブジェクト形式(POF)のオブジェクトをサポートするように、Coherence Query Languageのbackupコマンドとrestoreコマンドの問題を修正しました。
システム・パラメータport-auto-adjust=falseとユニキャスト・リスナー・ポートが使用できない場合に、クラスタの起動中にNPEが発生する問題を修正しました。
Guardianのリカバリまたは終了後にNullPointerExceptionが発生する可能性のある問題を修正しました。
ソート索引のメンテナンスが非常に遅くなる問題を修正しました。
サービスレベルのGuardianの構成が無視される問題を修正しました。
集中的な後書き処理でバッチごとにエントリが1つずつ欠落する問題を修正しました。
Oracle Coherence for .NET 3.6.1で導入された新機能、機能向上および不具合修正を次に示します。
ポートPofExtractorが共通コレクションからC++および.NETへの値の抽出に失敗するという問題を修正しました。
クライアントがプロキシ・サーバーへの接続に失敗した場合に、より詳細な例外メッセージが表示されるようになりました。
ユーザー定義の索引。これを使用すると、索引に追加されるエントリを制御できます。ユーザー定義の索引は通常、索引を保持するのに必要なメモリーや処理のオーバーヘッドを削減するために使用されます。
クライアントがプロキシ・サーバーによって拒否された後、透過的に再接続できなくなる問題を修正しました。
GACにインストールされているアセンブリをEmbeddedResourceクラスがロードできなくなる問題を修正しました。
CacheFactoryの中で、EnsureLogger()の同時コール中に例外を発生させる可能性のある問題を修正しました。
CoherenceSessionStoreの中で、期限切れセッションへのアクセス時に例外を発生させる問題を修正しました。
PofStreamReaderの中で、汎用コレクション・オブジェクトへの共通POFコレクションの読取りを阻止する問題を修正しました。
Oracle Coherence for C++ 3.6.1で導入された新機能、機能向上および不具合修正を次に示します。
クライアントがプロキシ・サーバーへの接続に失敗した場合に、より詳細な例外メッセージが表示されるようになりました。
Evolvableクラスの作成を簡略化するために、新しいAbstractEvolvableベース・クラスを追加しました。
ユーザー定義の索引を導入しました。これを使用すると、索引に追加されるエントリを制御できます。ユーザー定義の索引は通常、索引の保持に必要なメモリーや処理のオーバーヘッドを削減するために使用されます。
クライアントがプロキシ・サーバーによって拒否された後、透過的に再接続できなくなる問題を修正しました。
std::stringへの変換時に非ASCII文字列が切り捨てられる問題を修正しました。
RequestTimeoutExceptionクラスとConnectionExceptionクラスに対する不正なPOFマッピングを修正しました。
年の範囲を1582から2199までに制限する、POFの日付のデシリアライズにおける検証ロジックを削除しました。
この項では、リリース時点で既知のバグについて説明します。
WebLogic ServerノードまたはApache Tomcatサーバーなどの他のタイプのアプリケーション・サーバーを実行しているノードを含むクラスタがある場合、WebLogic Serverによって作成されたセッションCookieは、他のサーバー上のCoherence*Webでは正しくデコードされません。これは、WebLogic Serverによって、Coherence*Webに格納されているセッションIDには含まれていないセッション・アフィニティ接尾辞が追加されるためです。他のアプリケーション・サーバー・タイプがそのCookieに対するリクエストを受信した場合、そのCookieは見つからず、新しいセッションCookieが作成されます。
この問題を回避するには、他のアプリケーション・サーバーによって処理される際に、セッションIDからセッション・アフィニティ接尾辞を削除する必要があります。
たとえば、Tomcatサーバーでセッション・アフィニティ接尾辞を削除するには:
com.tangosol.coherence.servlet.tomcat55.CookieHelperクラスのサブクラスを作成します。
たとえば、そのサブクラスにCustomCookieHelperという名前を付けます。decodeCookieメソッドとdecodeUrlメソッドを実装して、セッションCookieからセッション・アフィニティ情報を削除します。例:
package com.example;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import com.tangosol.coherence.servlet.SessionHelper;
public class CustomCookieHelper extends SessionHelper {
protected static final char WLS_JVM_ID_SUFFIX = '!';
public CustomCookieHelper(Factory factory, ServletContext ctx){
super(factory, ctx);
}
public String decodeCookie(HttpServletRequest req){
String sSessionId = super.decodeCookie(req);
if (sSessionId != null){
int ofSeparator = sSessionId.indexOf(WLS_JVM_ID_SUFFIX);
if (ofSeparator >= 0){
sSessionId = sSessionId.substring(0, ofSeparator);
}
}
return sSessionId;
}
}
com.tangosol.coherence.servlet.tomcat55.DefaultFactoryのサブクラスを作成します。例:そのサブクラスにCustomDefaultFactoryという名前を付けます。instantiateSessionHelperメソッドまたはsetSessionHelperメソッドをオーバーロードして、CustomDefaultFactoryクラスを使用します。例:
package com.example;
import javax.servlet.ServletContext;
import com.tangosol.coherence.servlet.SessionHelper;
public class CustomDefaultFactory extends com.tangosol.coherence.servlet.api25.DefaultFactory {
public SessionHelper instantiateSessionHelper(ServletContext ctx){
CustomCookieHelper helper = new CustomCookieHelper(this, ctx);
setServletContext(ctx);
setSessionHelper(helper);
return helper;
}
public String toString() {
return "CustomDefaultFactory (2.5)\n" + indentString(getDescription(), " ");
} }
CustomDefaultFactoryを使用するようにTomcatサーバー上のWebアプリケーションを構成します。Webアプリケーションの web.xmlファイルで、coherence-factory-classコンテキスト・パラメータをCustomDefaultFactoryに設定します。例:
<context-param>
<param-name>coherence-factory-class</param-name>
<param-value>com.tangosol.coherence.servlet.tomcat55.CustomDefaultFactory</param-value>
</context-param>
アプリケーション間でデータを共有するようにセッションを構成するには、グローバル・スコープを使用するようにcoherence-scopecontroller-classコンテキスト・パラメータを構成する必要があります。例:
<context-param>
<param-name>coherence-scopecontroller-class</param-name>
<param-value>com.tangosol.coherence.servlet.AbstractHttpSessionCollection$GlobalScopeController</param-value>
</context-param>