この章では、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>