ナビゲーションをスキップ

リリース ノート

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

サービス パック 2 で解決された問題

サービス パックは累積的であり、サービス パック 2 には WebLogic Server 8.1 の以前のサービス パックで行われたすべての修正が含まれています。

以下の節では、WebLogic Server 8.1 SP2 リリースで解決された問題について説明します。

Administration Console

変更
要求
番号

説明

修正されたリリース

CR076953

状況依存 (右クリック) メニューの項目 [個別の Bean のポリシーとロールを定義] を使用してセキュリティ ロールを作成し、同じ状況依存メニュー/フォーム シーケンスで定義されたセキュリティ ポリシーにそのセキュリティ ロールを追加した場合に、外部 JCom クライアントから目的の WebLogic リソースを使用することができませんでした。

状況依存メニューの項目でスコープ ロールが作成され、そのスコープ ロールの外側のクライアントは WebLogic リソースを使用することができませんでした。

「JCom ロールの定義」というメニュー項目を [JCom] ノードに追加し、現在のクライアントが含まれるようにスコープを修正できるようにしたことでこの問題は解決しました。

7.0 SP3

8.1 SP2

CR078764

Administration Console での Web サービスのセキュリティ設定が正しく機能していませんでした。

コードの修正により、Administration Console で Web サービスのポリシーとロールを設定する機能が削除されました。

7.0 SP3

8.1 SP2

CR081673

Administration Console で作成されたレルムで、その RealmMBean に UserLockoutManager がありませんでした。

現在は、新しいレルムを作成するときに ULMbean が作成されるようになっています。

7.0 SP3

8.1 SP2

CR082335

ユーザおよびグループをリストするために Administration Console で作成されたカーソルは、それが閉じないときにメモリ リークを生じさせる恐れがありました。

コードを修正することで、カーソルは閉じるようになりました。

7.0 SP3

8.1 SP2

CR091853

3 ノード クラスタが複数の Solaris 2.8 マシンにまたがっている場合に、管理サーバがデフォルトの実行キューにアクセスするときに InstanceNotFound 例外を送出していました。

この問題は解決されました。

7.0 SP4

8.1 SP2

CR099721

Administration Console を使用してクッキー最大有効期間を編集した後に、その値が編集前の値に戻ることがありました。

値の下限を取り払うコード修正で問題は解決しました。

7.0 SP3

8.1 SP2

CR100006

ドメインに 2 つの管理サーバがあり、WebLogic Server Administration Console を通じてそれらのサーバにアクセスしようとしたときに、次の NullPointerException が表示されることがありました。

java.lang.NullPointerException at
weblogic.management.console.helpers.UrlHelper.buildIconList(UrlHelper.java:149) at
weblogic.management.console.helpers.UrlHelper.getIcon(UrlHelper.java:174) at
weblogic.management.console.tags.SmartNavNodeTag.getIcon(SmartNavNodeTag.jacva:111) at
weblogic.management.console.tags.SmartNavNodeTag.inferStuffFromContext(SmartNavNodeTag.java:96) at
weblogic.management.console.tags.SmartNavNodeTag.doStartTag(SmartNavNodeTag.java:44) at
weblogic.management.console.webapp._domain.__nav._jspService(__nav.java:301) at
weblogic.servlet.jsp.JspBase.service(JspBase.java:27) at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:262) at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:198) at
weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:250)
[...]

この問題は、コードを修正することで解決しました。

6.1 SP6

8.1 SP2

CR103104

UserReader MBean が Administration Console でユーザを表示しませんでした。認証プロバイダは UserEditor が実装されていれば Administration Console でユーザを読み込むことができますが、UserReader の場合は、ユーザを表示しようとすると「There are no Authentication providers available that support the creation of Users」というメッセージが表示されます。グループでも、GroupEditor インタフェースと GroupReader インタフェースで同じことが起こっていました。

Administration Console は userEditor.CreateUser メソッドを呼び出し、UserReader.listUsers メソッドを利用することはありませんでした。

この MBean は、適切なプロバイダ タイプを探すようにすでに修正されています。

7.0 SP3

8.1 SP2

CR105598

Active Directory LDAP の新しいテストで、メンバー名にカンマ (,) が含まれている場合に group.isMember() の呼び出しが失敗するという問題が発見されました。

この問題は、コードを修正することで解決しました。

6.1 SP6

8.1 SP2

CR106027

http://dev2dev.bea.com/resourcelibrary/advisoriesnotifications/BEA03-28.01.jsp のセキュリティ勧告を参照してください。

7.0 SP3

8.1 SP2

CR111321

WebLogic Server ドメインにサーバが 1 つしかない場合、WebLogic Server Administration Console では、Web アプリケーションのデプロイメント時にデプロイ対象の候補として仮想ホストが表示されません。これは、対象が 1 つしかない場合にわざわざ対象を選択する手間を省くためです。ただし、これが原因で、ユーザは Web アプリケーションを仮想ホストに直接デプロイすることができませんでした。ユーザは、Web アプリケーションをサーバにデプロイし、それから仮想ホストに対象を変更することしかできませんでした。この方法は最初の Web アプリケーションではうまくいきましたが、2 つめの Web アプリケーションでは、コンテキストがすでに使用されていることを示す例外が送出されました。

Web アプリケーションについては、現在は、ドメインでコンフィグレーションされている仮想ホストがチェックされ、それらがデプロイ対象の候補として Administration Console に表示されるようになっています。この修正の結果、ユーザは Administration Console から直接 Web アプリケーションの対象として仮想ホストを設定することができるはずです。仮想ホストがない場合は、この修正の前と同じように、唯一のサーバが Web アプリケーションの対象として想定されます。

8.1 SP2

CR112726

FileChooserControlTag で、WebLogic Server はパス設定にデフォルトで UTF-8 エンコーディングを使用していました。

この修正で、WebLogic Server はデフォルトの UTF-8 ではなくカタログから適切な文字セットを抽出して使用するようになります。この変更の結果、パスが文字化けせずに正しく表示されるようになりました。

8.1 SP2

CR120537

WebLogic Server Administration Console では、外部 JMS 送り先を削除できませんでした。

ごみ箱アイコン (削除) が、外部 JMS 送り先テーブルに追加されました。現在は、外部 JMS 送り先を削除することができます。

8.1 SP2

CR120603

WebLogic Server Administration Console でロード順を編集すると、config.xml ファイルの <Application> タグの path 属性にスペースが埋め込まれていました。

この問題は、長いパス文字列を処理しやすく分割する pathToFormValue メソッドが、文字列に余分なスペースを再結合していたことが原因でした。

余分なスペースを削除するようにコードが変更されました。この修正の結果、config.xml が更新されるときに path 属性で余分なスペースが挿入されなくなりました。

8.1 SP2

CR124344

http://dev2dev.bea.com/resourcelibrary/advisoriesnotifications/BEA03_41.00.jsp のセキュリティ勧告を参照してください。

8.1 SP2

クラスローダ

変更
要求
番号

説明

修正されたリリース

CR124348

クライアント プログラムでは、プロキシのクラスがシステムのクラスパスに追加されていないと、java.lang.reflect.Proxy を使用して WebLogic Server にデプロイされているプロキシ オブジェクトにアクセスできませんでした。オブジェクトがシステムのクラスパスにない場合、クライアントは ClassNotFoundException を受信していました。

システムのクラスローダだけでなくアプリケーション固有のクラスローダからもインタフェースをロードするように、resolveProxyClass() メソッドが追加されました。

6.1 SP6

8.1 SP2

クラスタ

変更
要求
番号

説明

修正されたリリース

CR094837

サーバを定義してそのサーバをクラスタに割り当て、サーバと同じ名前で Unix マシンを作成してそれらをお互いに割り当てて、管理サーバを停止してから再起動し、クラスタまたはサーバ リストからサーバ名を選択する、という手順を行うと ClassCastException が生じていました。管理対象サーバを起動しようとしても ClassCastException が生じていました。

起動時に UnresolvedMBean を解決するプロセス中の問題を修正して、この問題は解決しました。

7.0 SP3

8.1 SP2

CR105698

2 つのクラスタの間に同じ JNDI 名の 2 つの分散キューがあり、メッセージ駆動型 Bean が両方のクラスタにデプロイされている場合に、メッセージが片方のクラスタだけで消費されていました。

メッセージ駆動型 Bean は、現在はドメイン内のすべての分散キューにアクセスしてそのメンバーを適切に追加します。

7.0 SP3

8.1 SP2

CR108127

セカンダリ セッションを更新しようとしたときにエラーが発生していました。サーバ A、サーバ B、およびサーバ C という 3 つのクラスタ化されたサーバ インスタンスがあるとします。

    1. サーバ A でセッションを開始します (プライマリ A、セカンダリ C)。

    2. ロード バランシング ハードウェアがサーバ C にセッションを移行します (プライマリ C、セカンダリ B)。

    3. ロード バランシング ハードウェアがセッションをサーバ A に再び移行します。

次のエラーがサーバ A で発生していました。

<Jun 4, 2003 4:24:56 PM PDT> <Debug> <Cluster> <Error updating secondary for 3535724191309537720 on 7312270160516507840S:<IPaddressdeleted>: [7005,7005,7002,7002,7005,7002,-1]:<IPaddressdeleted>:7005, <IPaddressdeleted>:7005,<IPaddressdeleted>:7005:mydomain:myserver3. Re-creating secondary.>

次のエラーがサーバ C で発生していました。

<Jun 4, 2003 4:24:56 PM PDT> <Info> <Cluster> <Lost 0 replication updates of object 3535724191309537720. Re-fetching secondary.>

この問題は、コードを修正することで解決しました。

6.1 SP6

8.1 SP2

CR108893

ClusterRuntime.getName() メソッドは、クラスタの名前ではなくクラスタ内のサーバの名前を返していました。

このメソッドは、クラスタの名前を返すように修正されました。

8.1 SP2

CR127643

Web アプリケーション内で宣言されたインタフェースを実装した動的プロキシが HttpSession に入り、そのセッションがレプリケート可能であった場合に、WebLogic Server ではセカンダリ サーバでそのインタフェースのクラスをロードできませんでした。

動的プロキシを正しく解決するために、セカンダリ サーバではインタフェースのあるアプリケーションの名前が必要です。ストリームで applicationName を書き込むために、MsgAbbrevOutputStreamannotateProxyClass が実装されました。受信側で、resolveProxyClass はこのアプリケーション名を使用してアプリケーションからインタフェースのクラスをロードします。

この変更の結果、(アプリケーション アーカイブに格納されたインタフェースを実装する) 動的プロキシは、HttpSession に入れて正しくレプリケートすることができます。副作用はないはずです。

8.1 SP2

コネクタ

変更
要求
番号

説明

修正されたリリース

CR091818

接続プロキシの作成を無効にするコンフィグレーション パラメータがありませんでした。

この問題は、weblogic-ra.xml デプロイメント記述子で use-connection-proxies というプロパティを追加することで解決しました。

このプロパティを「true」に設定すると、接続プロキシの有効性がテストされずにプロキシが使用されます (つまり、WebLogic Server で生成されるラップされた接続 (プロキシ) をリソース アダプタがキャストしようとして、そのキャストが失敗するケース)。このプロパティを「false」に設定した場合、プロキシは使用されません。このプロパティに値が設定されていない場合、以前の機能が使用されます。つまり、接続プロキシの有効性のテストが実行され、テストに合格した場合にのみそのプロキシが使用されます。

トランザクションのレイト登録の唯一の注意点は、クライアント コードが最初に接続ハンドルを取得し、その後トランザクションを開始してその接続を自動的に登録する、ということはできないということです。クライアントが最初にトランザクションを開始してそれから接続ハンドルを取得すれば、すべてが正常に機能します。トランザクションのレイト登録ができなくても、それは Bean 管理のトランザクションとコンテナ管理のトランザクションの使用について何かを意味するわけではありません。両方とも正常に機能します。

8.1 SP2

CR105247

ユーティリティ クラスが JAR ファイルとしてパッケージ化されている RAR コンポーネントをデプロイしようとしたときに、WebLogic Server では JAR ファイルに含まれているプロパティ ファイルをロードすることができませんでした。

URL に「/」がなく、それがプロパティ ファイルを見つけることができない原因となっていました。必要な場合に「/」を追加するようにコードが修正されました。

8.1 SP2

CR106388

ra-link-ref 要素を使用する RAR (「論理」RAR と呼ばれる) のデプロイメント時に、weblogic-ra.xml デプロイメント記述子で指定されている正しいプール名または max-capacity が取得されませんでした。この問題により、WebLogic Integration で予期しない動作が生じていました。

この要素は、現在は正しく機能します。

7.0 SP3

8.1 SP2

CR106663

新しい検証チェックで、以前のバージョンとの非互換性が生じていました。

検証チェックは、下位互換性を持つように変更されました。null が可能であるべきエントリが許可されるようになりました。以下のパラメータでは、引き続き null 値を指定できません。

  • connection-factory-name

  • jndi-name

  • shrinking-enabled (true|false のみ)

  • connection-profiling-enabled (true|false のみ)

  • match-connections-supported

  • logging-enabled (true|false のみ)

  • map-config-property-name

  • initiating-principal resource-principal

また、log-filename では logging-enabled が true の場合は null が許可されません。

検証チェックに互換性がないため、7.0 でエラーなくデプロイされていたアダプタが 8.1 または 8.1 SP1 ではデプロイされないことがあります。これは、weblogic-ra.xml 記述子で null または空の値が使用されることが原因です。8.1 SP2 から検証チェックが修正されているので、現在は以前のすべてのバージョンと下位互換性があるはずです。

8.1 SP2

CR106960

RAR が EAR の中に含まれている場合に、コネクタ モジュールのコードが再デプロイメントを適切に処理しなかったために EAR の再デプロイメントが失敗していました。

コネクタ モジュールの再デプロイ ロジックを修正することで問題は解決しました。

7.0 SP4

8.1 SP2

CR111229

WebLogic Server 8.1 SP1 では、複数のクライアントがアダプタの接続を使用する場合に、トランザクションで使用される接続の初期化中に XAER_PROTO エラーが発生することがありました。この問題は、接続とトランザクションの状態が、接続が利用可能な接続のプールに返される前に必ずしも完全に解決されていなかったということが原因でした。このために、以前に呼び出したスレッドが接続の状態を完全にリセットする前に、別のクライアントが接続を使い始めるということが可能になっていました。

WebLogic Server 8.1SP2 では、サーバにより、利用可能な接続のプールに返される前に接続とトランザクションの状態が確実に解決されるようになりました。その結果、トランザクションで使用される接続の初期化中に、接続要求によって XAER_PROTO 例外が送出されることはもうありません。

8.1 SP2

CR112162

リソース アダプタの ManagedConnectionFactory.matchConnections(connectionSet) 実装から connectionSet にある ManagedConnectionCONNECTION_ERROR_OCCURRED イベントが送信され、その後でコネクタ コンテナから ManagedConnection.destroy() が呼び出されることにより ManagedConnection インスタンスが破棄された場合に、利用可能な管理対象の接続のプールから適切に削除されていませんでした。

この問題は、エラー イベントの処理中に、予約済み接続のセットのみを参照してプールからの削除が実行されていたことが原因です。つまり、エラーが発生したときに、コネクタ コンテナは接続が使用中であると推測していたのです。

CONNECTION_ERROR_OCCURRED イベントの処理時に、破棄対象の接続が予約済み接続のセットにない場合に利用可能な接続のセットがチェックされるようになりました。この修正により、CONNECTION_ERROR_OCCURRED イベントが生じたときに、ManagedConnection が適切に破棄され、プールから削除されるようになりました。

8.1 SP2

コア

変更
要求
番号

説明

修正されたリリース

CR092375

メソッドが対話型の場合は、手動でルックアップを実行してからハンドルを保持およびキャッシュすることはできませんでした。

EJBHandle オブジェクトのシリアライゼーションとデシリアライゼーションを修正することでこの問題は解決しました。

7.0 SP2

8.1 SP2

CR096091

ファイルからクラスパスを使用して WebLogic Server を Windows サービスとして起動すると、

"Thread created successfully! Exception in thread "main" java.lang.NoClassDefFoundError: weblogic/Server"

というエラーが、クラスパス ファイルが 2KB を超えている場合に送出されていました。

この問題は、ファイルからクラスパスを読み込むことに関連するエラーを修正することで解決しました。

6.1 SP6

8.1 SP2

CR102848

重要な作業の実行中に CoreHealthMonitor が ExecuteThreadManager ロックを保持しているため、デッドロックが発生し、Administration Console がフリーズしました。コードの変更により、CoreHealthMontor は ExecuteThreadRuntimeMBean を使用してスタック スレッドのリストを取得し、ETM ロックが保持されている場合でも ExecuteThreadManager のすべての場所からログが出力されないようになりました。

7.0 SP3

8.1 SP2

CR105516

ステートフル セッション EJB のフェイルオーバは、複数のフェイルオーバが必要なときに機能していませんでした。

3 ノードのクラスタで、JSP はレプリカ対応のステートフル セッション EJB を作成するか、呼び出します。リモート EJB スタブは、http セッションに格納されます。ステートフル セッション EJB の各呼び出しの後に、更新された EJB スタブは、EJB レプリカ リスト (プライマリ/セカンダリ) の変更を反映して HTTP セッションでも更新されます。

同じブラウザ ウィンドウで次のように呼び出しを行うと、クラスタの 1 つのノードだけが生き残る場合に java.rmi.ConnectException が送出されます。

    1. 3 つすべてのクラスタ ノードが動作しています。

    2. ノード 1 に対して呼び出しを行い、EJB を作成して、リモートを HTTP セッションに格納します (HTTP セッションのレプリケーションが有効になっている)。

    3. ノード 1 を強制停止します。

    4. セカンダリ ノード 2 に対して呼び出しを行い、EJB のリモートがレプリケートされた HTTP セッションから取得され、EJB の呼び出しが適切に機能します。この EJB の呼び出しの後、再びリモートが HTTP セッションに格納されます。

    5. ノード 2 を強制停止します。

    6. ノード 3 に対して呼び出しを行い、HTTP セッションから EJB のリモートを取得します。

WebLogic Server はノード 2 で EJB をルックアップしようとし、ノード 3 (この時点で新しいセカンダリのはず) を使用しようとしません。ノード 3 で次の例外が送出されます。

java.rmi.ConnectException: Could not establish a connection with -3088833905169218734S:172.23.64.38:[7001,7001,7002,7002 ,7001,7002,-1]:mydomain:managed2, java.rmi.ConnectException: Destination unreachable; nested exception is: java.net.ConnectException: Connection refused: connect; No available router to destination
at
weblogic.rjvm.RJVMImpl.getOutputStream(RJVMImpl.java:275)
at
weblogic.rjvm.RJVMImpl.getRequestStream(RJVMImpl.java:408) at
weblogic.rmi.internal.BasicRemoteRef.getOutboundRequest(BasicRemoteRef.java:97)
at
weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:255)

この問題は、コードを修正することで解決しました。

6.1 SP6

8.1 SP2

CR105980

分散キューのメッセージごとに QueueReceiver を作成した場合にメモリ リークが発生し、QueueReceiver が終了した後にも持続していました。

コードの変更で、BasicServiceOffer および DistributedDestinationImpl オブジェクトのメモリ リークが修正されました。

7.0 SP3

8.1 SP2

CR110028

ユーザがコンフィグレーションしたスレッド キューでスタック スレッドを検出する機能が、WebLogic Server 7.0 とそのサービス パックでは完全ではありませんでした。

スレッド キューが修正され、内部サーバのスレッド キューからアプリケーション スレッドを識別できるようになりました。スタック スレッドをチェックしながらすべてのアプリケーション スレッド キューをループするロジックが追加されました。アプリケーション スレッド キューがすべてコア状態モニタ スレッドでモニタされ、適切な警告がログに記録されるようになりました。

8.1 SP2

CR110367

サーブレットの destroy()ejbRemove() などのユーザ コードが、シャットダウンの途中で実行されます。この修正により、JMS や JDBC のような低位のサービスが、このユーザ コードの実行時に利用可能になります。

8.1 SP2

CR110887

クラスタ内のノードがセッション情報を取得しようとしたときに、それらのノードはリモート サーバからルックアップを試みていて、したがってローカル サーバのスレッドをブロックするリモート呼び出しが行われていました。負荷のかかっている状態ですべてのノードがルックアップを実行すると、実行スレッド キューがブロックされた状態になり、どのサーバもリモート呼び出しに応答を返送することができませんでした (すべてのローカル スレッドがブロックされていたため)。

WebLogic Server は現在は、必要になるまでリモート呼び出しを回避するためのスタブをローカルで作成します。リモート呼び出しを行うときに、WebLogic Server はリモート サーバの独立したレプリケーション キューにアクセスするので、そこでプロセスはブロックされません。

レプリケーションの動作は変更されていません。この変更の結果としては、WebLogic Server で競合が削減され、デッドロックが回避され、リモート呼び出しの数が減らされるだけです。

8.1 SP2

CR110892

http://dev2dev.bea.com/resourcelibrary/advisoriesnotifications/BEA03-35.jsp のセキュリティ勧告を参照してください。

6.1 SP6

8.1 SP2

CR120841

WebLogic Server で、系統的なシャットダウンの間にタイマー スレッドが収集されませんでした。これによる問題は確認されませんでした。

ORB のシャットダウンで、現在はハートビート スレッドもシャットダウンされます。この変更で何らかの動作が変更されることはありません。

8.1 SP2

CR123846

ユーザ スレッドでトランザクションが開始されたときに、ClassCastExceptions が送出されていました。

この問題は、並行 XA 実装がカーネル メソッド (すべてのリクエストが実行スレッドで実行されるものと想定する) を使用し、このメソッドが現在のスレッドを実行スレッドとしてキャストしていたことが原因です。サーバ側のユーザ スレッドで処理が実行されると、例外が送出されていました。

この問題は、どのスレッドでも実行が可能なようにすることで解決しました。

8.1 SP2

デプロイメント

変更
要求
番号

説明

修正されたリリース

CR101760

停止している管理対象サーバから Web アプリケーションを削除すると、次のようなエラーが発生していました。

<Warning> <Management> <149311> <Rejecting deployment operations to non-running server, mgd1>

<Warning> <Deployer> <149004> <Failures detected initiating weblogic.management.ManagementException: Rejecting deployment operations to non-running server, mgd1 task for application Remove application MyWebApp on mgd1>

Web アプリケーションは削除されていませんでした。

コード変更により、WebServer および VirtualHost MBean からの未解決な WebAppComponentMBean の参照を削除することで問題は解決しました。

7.0 SP3

8.1 SP2

CR102928

仮想ホストにデプロイされた EAR の Web アプリケーションが、ドメインの再起動時に再デプロイされませんでした。

コードの修正により、仮想ホストを対象とするアプリケーションがドメインの再起動時に再起動するようになりました。

7.0 SP3

8.1 SP2

CR109668

次のコマンドを実行すると、アプリケーションの指定モジュールだけがアンデプロイされるようになっていても、アプリケーションのすべてのモジュールがアクティブな状態から非アクティブな状態に移行しました。

java weblogic.Deployer
 -url <admin_url>
 -username <user_name>
 -password <passwd>
 -name <app_name>
 -undeploy
 -targets <module_name>@<cluster_name>

この問題は、SlaveDeployer において、コンポーネントの対象としてクラスタを設定できることが可能性として WebLogic Server で考慮されず、サーバ対象タイプのみに基づいてチェックが実行されていたことが原因です。

コンポーネントの対象がクラスタである可能性をチェックするようにコードが修正されました。部分的なアンデプロイメントは現在は期待通りに機能するはずです。

8.1 SP2

CR111065

ある特定の状況では、DRS システムが SlaveDeployer の初期化用にデプロイメント タスクのデルタ リストを作成します。

コードの修正により、DRS は必ず MasterDeployer を使用してデプロイメント タスクのデルタを作成します。

8.1 SP2

CR113178

SlaveDeployer のコードで、アプリケーションはソートされ、HashSet (ApplicationsSet) に追加されます。この HashSet から得られた Iterator は、それに追加された要素の順序を維持しません。それらの要素をソートされた順序で格納するためには TreeSet が使用されましたが、重複するアプリケーションを同じデプロイメント順で格納することはできませんでした (片方が他方をオーバーライドする)。

アプリケーションは現在は、Set ではなく List に追加されます。この変更の結果として、Iterator は順序を維持し、アプリケーションは config.xml ファイルの loadOrder 属性に従ってデプロイされます。

8.1 SP2

CR120714

WLDeploy タスクがパスワードを stdout に出力していました。たとえば、build.xml に次のような行がある場合、

<project name="cr120714" basedir=".">
<taskdef name="wldeploy" classname="weblogic.ant.taskdefs.management.WLDeploy"/> <target name="deploy-app" > <wldeploy action="redeploy" nostage="true" name="CR120714App" user = "system" password = "gumby1234" adminurl = "t3://172.17.24.109:7001" verbose = "false" debug = "false" />
</target>
</project>

ant deploy-app の出力は次のようになっていました。

Buildfile: build.xml

deploy-app:
[wldeploy] weblogic.Deployer -nostage -noexit -name CR120714App -adminurl t3://172.17.24.109:7001 -user system -password gumby1234 -redeploy
[wldeploy] Initiated Task: [1] [Deployer:149026]Redeploy application CR120714App on myserver.
[wldeploy] Task 1 completed: [Deployer:149026]Redeploy application CR120714App on myserver.
[wldeploy] Deployment completed on Server myserver
[wldeploy]

オリジナルのパスワードは現在は、コマンドを stdout に出力する前に「********」で置換されます。

8.1 SP2

EJB

変更
要求
番号

説明

修正されたリリース

CR087151

ステートレス セッション Bean では、weblogic-ejb-jar.xml に次の行があり、

<stateless-bean-is-clusterable>False</stateless-bean-is-clusterable>

Bean がクラスタにデプロイされた場合に、次のエラーが生成されていました。

<Mar 14, 2003 3:35:00 PM PST> <Error> <Cluster> <Conflict start: You tried to bind an object under the name ejb20-statelessSession-TraderHome_EO in the JNDI tree.The object you have bound from 172.17.24.112 is non clusterable and you have tried to bind more than once from two or more servers.Such objects can only deployed from one server.>

この問題は、クラスタ化されていないスタブの JNDI バインディングがレプリケートされないようにコードを修正して解決されました。

6.1 SP5

8.1 SP2

CR094073

BMP Bean でファインダ メソッドを実行する前に、EJB コンテナは Bean の状態をデータベースと同期化していませんでした。

BMP エンティティ Bean の処理は、EJB 2.0 仕様に準拠するように変更されました。この EJB 仕様に従って、EJB コンテナはファインダ メソッドを実行する前に EJBStore を呼び出してエンティティ Bean の状態を同期化するようになりました。これは findByPrimaryKey には影響を与えません。

トランザクションにおいて、ファインダ メソッドが BMP Bean で呼び出された場合は、そのトランザクションに参加している修正された全 Bean (BMP および CMP Bean) の ejbStore が呼び出されます。したがって、BMP Bean ではトランザクション内でより多くの ejbStore コールバックを受信する可能性があります。

7.0 SP3

8.1 SP2

CR095173

idle-timeout-seconds 要素では、ステートフル セッション Bean のパッシベーションを実行する (キャッシュから削除してディスクに書き込む) までの EJB コンテナの待機時間を指定していました。またこの要素は、パッシベーションが実行された EJB をディスクから削除するまでの EJB コンテナの待機時間を指定するためにも使用されていました。しかし、ステートフル セッション Bean を idle-timeout-seconds より長い時間ディスクに保持することが必要な場合もありました。つまり、ステートフル セッション Bean のキャッシュ内でのアイドル時間とディスク上での存続時間を 2 つの異なる要素で指定したい場合があったのです。

この拡張は、session-timeout-seconds という新しい要素を導入することで可能となります。この要素を使用すると、アイドル状態のステートフル セッション Bean をディスクから削除するまでの EJB コンテナの待機時間を指定できます。

7.0 SP3

8.1 SP2

CR096182

動的 EJB-QL は長い引数を MAX_INT として不適切に基底の SQL に渡し、結果として検索が失敗していました。この問題はコードの修正によって解決されました。

7.0 SP3

8.1 SP2

CR096395

コンテナは、エンティティ Bean がアンデプロイされるときに unsetEntityContext の呼び出しに失敗していました。エンティティ Bean のアンデプロイ時にプールをクリーンアップするために、undeploy メソッドが BaseEntityManager に追加されました。この結果、この問題は解決されました。

7.0 SP3

8.1 SP2

CR097913

動的 EJB QL リクエストで COUNT と EXISTS を結合すると、SQL が無効になり、次の例外が送出されていました。

[java] javax.ejb.FinderException: Exception in dynamicQuery while preparing or executing statement: 'weblogic.jdbc.rmi.SerialStatement@62b30' [java] java.sql.SQLException: ORA-00937: not a single-group group function [java] [java] java.sql.SQLException: ORA-00937: not a single-group group function

サブクエリの解析時にメインの select リストに不要なカラムが追加されていました。パーサ コードの修正で問題は解決されました。

7.0 SP3

8.1 SP2

CR099626

ejbc が、ejbSelect クエリで無効な SQL を生成していました。このクエリは、テーブル エリアスが不正確に生成されて次のエラーが生じていたので失敗していました。

ORA-00904: invalid column name

この問題は、コードを修正することで修正されました。

6.1 SP6

8.1 SP2

CR099760

EJB 1.1 CMP Bean でフィールドの最適化が実装されたので、更新があっても値は変更されなかったフィールドがデータベースに書き込まれなくなりました。この最適化は、プリミティブおよび不変オブジェクトでのみ実行されます。

6.1 SP6

8.1 SP2

CR100832

ブラインド書き込みがチェックされないので、Optimistic 同時方式が有効な場合にカラムのバージョン番号が正しく更新されませんでした。Optimistic 同時方式でブラインド書き込みがチェックされるようにコードが変更されました。

7.0 SP3

8.1 SP2

CR102481

一部の Bean 管理のステートフル セッション Bean では、キャッシュが一杯の状態で Bean インスタンスの数が max-beans-in-cache を上回り、アクティベーションとパッシベーションが行われたときに、Bean で境界が設定されたトランザクションで IllegalStateException が発生していました。

コード変更の結果、パッシベーション要求ごとに 1 つのリプレーサが作成され、各スレッドがそれ専用のリプレーサを持つようになりました。

7.0 SP3

8.1 SP2

CR103047

MDB のトランザクション タイムアウトがログに記録されないという報告がありました。JMS 送り先からのメッセージを処理するために MDB が要する時間がトランザクションのタイムアウト制限を超えると、トランザクションがロールバックされ、メッセージは再配信用に送り先に戻されますが、transaction-timeout または transaction-rollback メッセージがログに記録されませんでした。

この問題は、トランザクション タイムアウトを報告するように MDListener のコードを修正することで解決されました。

6.1 SP6

8.1 SP2

CR103391

Microsoft の JDBC ドライバには、行とカラムから成る特定の結果セットについて、getXXX メソッドを行ごとに 1 度しか呼び出すことができないという制限があります。この制限は、クエリ カラムにテキストまたは画像カラムが含まれている場合のみ適用されていました。WebLogic Server で生成された JDBC は (たとえば getLong(1) を使用して) 行からキー値を取得し、その結果セットを、getLong(1) を再実行して (最初のを含む) すべてのカラム値を読み込む別のルーチンに渡していました。この再実行により、Microsoft のドライバは例外を送出していました。

この問題は、結果セットの主キー カラムを 2 度解析するのを防止するコード修正により解決しました。

7.0 SP4

8.1 SP2

CR105857

Bean 管理の永続性を使用し、同時方式が Exclusive に設定されている EJB は、キャッシュで Bean を探すのではなく ejbFindByPrimaryKey を呼び出していました。

コードの変更で問題は解決され、EJB はキャッシュで Bean を探すようになりました。

7.0 SP3

8.1 SP2

CR106041

ejbc は、BMP (Bean 管理の永続性) Bean で Optimistic 同時方式を許可しない適合性チェックを実行するようになりました。

Optimistic 同時方式は、EJB 2.0 の CMP (コンテナ管理の永続性) Bean の機能です。『WebLogic エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「同時方式の選択」を参照してください。

7.0 SP4

8.1 SP2

CR106136

CR111025

delay-updates-until-end-of-tx が false に設定されている場合に、EJB 1.1 CMP Bean のゲッター メソッドが isModified() を呼び出していませんでした。

セッション EJB が、エンティティ EJB のゲッター メソッドを呼び出していました。両方の EJB に、トランザクション属性が Required に設定されたコンテナ管理のトランザクションがありました。ゲッター メソッドの各呼び出しの後には ejbStore() の呼び出しが続き、delay-updates-until-end-of-txfalse でした。しかし、Bean で ejbStore を呼び出す前に、コンテナが isModified メソッドを呼び出していませんでした。isModified() メソッドは、トランザクションがコミットされたときにのみ呼び出されていました。

ejbStore は、Bean での isModified メソッドの結果に応じて postInvoke() から呼び出されるべきです。この問題は、コードを修正することで解決しました。

6.1 SP6

8.1 SP2

CR106711

バージョン カラムの Optimistic 同時方式は、一括更新と一緒に機能するようになりました (「ORA-01008: not all variables bound」SQLException が送出されていました)。

この問題は、適切な Bean 状態トラッキング変数を使用することで解決されたので、EJB コンテナはバージョン カラムを含む SQL 文のすべての変数を設定します。バージョン カラムの Optimistic 同時方式は、一括更新と一緒に機能するようになりました。

8.1 SP2

CR107447

EJB QL クエリ ジェネレータでは、次の行が処理できませんでした。

SELECT OBJECT(target)

target は、次にあるような集合メンバー変数です。

SELECT OBJECT(target) FROM EJBean AS bean, IN(bean.collection)target

この問題は修正されています。EJB QL コンパイラは、このケースを正しく処理するようになりました。

8.1 SP2

CR107455

ROManager は、重複エントリをその内部 LRU リストに追加するように強制されていました。その結果、リストが無制限に大きくなり、それが原因で OutOfMemoryErrors が送出されていました。

重複エントリは、DBManager メソッド getBeanFromRS()initLastLoad() メソッドが不必要に呼び出されることが原因で生じていました。不要な呼び出しを削除することで問題は解決しました。

8.1 SP2

CR108456

CMR の 1 対多の関係で、1 つのトランザクションにおいて、片側の Bean がアクセスされても変更はなかった場合に、データベース操作の間の依存関係がコンテナによって適切に解決されていませんでした。これが原因で java.sql.SQLException が送出されていました。

この問題は、現在の Bean の状態をチェックする前に関連 Bean をデータベースに格納することで解決しました。

8.1 SP2

CR109621

EJB コンテナは、最後にコンパイルされて以降に互換性がないかもしれない方法で EJB が変更されている状況を自動的に検出します。そのような変更が検出されると、EJB は自動的に再コンパイルされます。以前は、デプロイメント記述子に何らかの変更があるとそのような再コンパイルが行われていました。ただし、一部の変更では EJB は絶対に変更されません。たとえば、デプロイメント記述子へのスペースの追加などです。そのような変更では、EJB を再コンパイルすべきではありませんでした。

EJB で再コンパイルが必要かどうかを判断するために使用されるアルゴリズムは、記述子が変更されているかどうかを判断するときにデプロイメント記述子のスペースを無視するようになりました。したがって、デプロイメント記述子でスペースが変更されただけで EJB が不必要に再コンパイルされることはありません。

8.1 SP2

CR110917

home-is-clusterabletruereplication-typeInMemory に設定し、負荷のある状況でステートフル セッション Bean を使用した場合に、その Bean を呼び出すセカンダリ サーバのプロキシ オブジェクトはアンエクスポートされず、結果としてリークが生じていました。この問題により OutOfMemoryError が生じていました。

WebLogic Server は、セカンダリ サーバのプロキシ オブジェクトをアンエクスポートするようになりました。レプリケートされた Bean が ReplicationService から becomeUnregistered() コールバックを受信すると、セカンダリ サーバの対応するプロキシ オブジェクトが StatefulEJBHome.removeSecondary() メソッドでアンエクスポートされます。

既存のユーザ アプリケーションにネガティブな副作用はないはずです。

7.0 SP5

8.1 SP2

CR111233

CR122832

MDB と JMS サーバが別々の WebLogic Server インスタンスを対象としている場合に、MDB がメッセージを受信しませんでした。

この問題は、それらが共存していない場合に、EJB コンテナが必要な MDB プールを作成しなかったことが原因で発生していました。

この問題は修正されています。MDB の送り先が非分散かつ移行不可能である場合には、共存ルールは適用されません。

8.1 SP2

CR111476

EJB がコンテナ管理のトランザクションを使用する場合、EJB の仕様によれば、すべての EJB メソッドでトランザクション属性を設定する必要があります (セッション Bean の EJBObject\EJBLocalObject のメソッド、およびセッション Bean の home\local-home インタフェースのすべてのメソッドを除く)。以前は、トランザクション属性の割り当てられていないメソッドはデフォルト値として、インタフェース メソッドでは Supports、メッセージ駆動型 Bean の onMessage メソッドでは NotSupported を使用していました。それらのデフォルト値ではトランザクションは開始されず、そのことが一部のユーザを驚かせていました。

EJB メソッドでトランザクション属性が設定されていない場合は、今でもそのメソッドにはデフォルトのトランザクション属性が使用されます。ただし、その状況をユーザに知らせる警告が発行されるようになりました。この警告は、ejb-jar.xml デプロイメント記述子でメソッド (群) に明示的にトランザクション属性を設定すると発行されなくなります。このため、EJB コンパイラの実行時および EJB のデプロイメント時にトランザクション属性が未設定であることの警告が表示されるようになりました。

8.1 SP2

CR112225

BLOB については、その生成されたコードで、WebLogic Server は ObjectOutputStream.writeObjectObjectInputStream.readObject を呼び出して、データベースでの読み書きの前にオブジェクトをシリアライズおよびデシリアライズします。それらの呼び出しは、余分なヘッダ情報を追加します。writeObject メソッドはオブジェクトのクラス、クラスのシグネチャ、クラスの非 transient および非静的フィールドの値を書き込み、加えてそのすべてのスーパータイプも書き込みます (これが、データベースで余分なヘッダが見られる理由)。それらの呼び出しで、ユーザが WebLogic Server のみを使用して BLOB を設定し取得する場合に問題が起こることはありません。この場合、readObject を使用してバイトが適切なオブジェクトに変換されるからです (例の余分なヘッダ情報が必要)。ただし、BLOB が他のベンダまたはプログラマによって次のようにしてデータベースに直接挿入された場合は、

OutputStream os = ((weblogic.jdbc.common.OracleBlob) lob).getBinaryOutputStream(); os.write(this.tiffImage); // byte[] tiffImage

問題が起こることがあります。WebLogic Server が readObject を使用しても、ヘッダ情報がないためです。WebLogic Server を使用して挿入されたデータについては、バイトを読み込む他のプログラムは余分なヘッダ情報を直に取得し、そして失敗します。

<serialize-byte-array-to-oracle-blob> が、永続性の動作をコントロールするために追加されています。この要素を使用すると、OracleBlob にマップされた byte[] 型の cmp-field をシリアライズする必要があるかどうかを指定できます。このタグは、weblogic-cmp-rdbms 記述子の新しい互換性スタンザに追加されています。

SP2 より前のバージョンでは、OracleBlob にマップされた byte[] 型の cmp-field をシリアライズするのがデフォルトの動作でした。現在は、byte[] は BLOB から取得された OutputStream に直接書き込まれます。以前の動作に戻すには、このタグの値を true に設定します。

8.1 SP2

CR112615

XA ドライバを使用する場合には、WebLogic Server が同じトランザクション内でも DataSource から同じ接続を取得するとは限りませんでした。挿入は 1 つの接続を使用して行われ、その後に別の接続を使用して SELECT SCOPE_IDENTITY でクエリが実行されていました。このケースで、SCOPE_IDENTITY の結果は不正確なものでした。

SQLServer2000 の自動キー生成機能では、自動生成キーの値を取得するのに SELECT SCOPE_IDENTITY() を必要としていました。

SCOPE_IDENTITY 関数は現在は、同じスコープで使用することができます (つまり、同じストアド プロシージャ、関数、またはバッチでということ)。コードの生成は、データベースが SQLServer または SQLServer2000 で、AutoKeyGen が有効になっている場合にバッチ クエリを実行するように変更されました。GenKeyQuery は、次のように INSERT の直後に実行されます。

__WL_query_array[0] = "INSERT INTO Employees (LastName, FirstName, Title, TitleOfCourtesy, BirthDate, HireDate, Address, City, Region, PostalCode, Country, HomePhone, Extension, Photo, Notes, ReportsTo, PhotoPath) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)SELECT SCOPE_IDENTITY()";

そして、cmp-field に、自動生成されたキーの値が割り当てられます。

この変更では、SQLServer2000、AutoKeyGen、XA ドライバの使用時に不正確な主キーが返される問題が修正される以外に他の影響や副作用はありません。

8.1 SP2

CR112661

メッセージ駆動型 Bean のプールに使用されるスレッド プールのサイズを拡張するコードは、「カーネル」API の変更が原因で失敗していました。

MDB コンテナのコードは、カーネル API を正しく使用するように修正されました。現在は、XA を使用して外部 JMS プロバイダからのメッセージを受信する複数の MDB をデプロイし、それらの MDB それぞれに正常にメッセージを受信させることができます。

8.1 SP2

CR112703

JMSConnectionPoller は、リモートのユーザ名とパスワードを取得するために WebLogic Security フレームワークに渡す必要があったユーザの ID を認識していませんでした。このリモートのユーザ名とパスワードは、リモートの JMS サーバ (MQ、WebLogic など) との JMS 接続を確立するために必ず必要です。

この修正で問題は解決されますが、ユーザは MDB のセキュリティ ID をコンフィグレーションする必要があります。その手順については、『WebLogic エンタープライズ JavaBeans (EJB) プログラマーズ ガイド』の「メッセージ駆動型 Bean のセキュリティ ID のコンフィギュレーション」を参照してください。

8.1 SP2

CR113172

AutoKey が cmp-rdbms.xml ファイルで次のように指定されている場合に、

<automatic-key-generation>
   <generator-type>ORACLE</generator-type>
   <generator-name>scott.oracle_sequence</generator-name>
   <key-cache-size>10</key-cache-size>
</automatic-key-generation>

(つまり、ジェネレータ名が schemaName.sequenceName) WebLogic Server はインクリメント値を選択するためのクエリの実行中にスキーマ名を考慮に入れていませんでした。

<generator-name> で指定されたスキーマ名は現在は考慮に入れられるようになり、クエリは次のように生成されます。

ユーザが weblogic-cmp-rdbms-jar.xml<generator-name>schemaName.sequenceName として指定した場合、WebLogic Server は次のクエリを生成して INCREMENT_BY を読み込みます。

query = "SELECT INCREMENT_BY "+
"FROM ALL_SEQUENCES "+
"WHERE SEQUENCE_NAME = UPPER('"+sequenceName+"') " + "
AND SEQUENCE_OWNER = UPPER('"+schemaName+"')";

スキーマなしで <generator-name> が指定された場合、クエリは次のようになります。

query = "SELECT INCREMENT_BY "+
"FROM USER_SEQUENCES "+
"WHERE SEQUENCE_NAME = UPPER('"+sequenceName+"')";

2 番目のクエリでは、ALL_SEQUENCES の代わりに USER_SEQUENCES ビューを利用します。これで、複数のユーザが同じ名前でシーケンスを宣言している場合に対応できます。USER_SEQUENCES ビューに対するクエリでは、Oracle に接続しているユーザ ビューに対する ResultSet が制限されます。

8.1 SP2

CR116696

preparedStatement の setBytes() メソッドでは、byte[] データが 4KB より大きい場合に問題がありました。

この問題は、setBinaryStream() メソッドを setBytes() メソッドに置き換えることで解決しました。その結果、cmp11 で生成されるコードに変化がありました。この修正を利用する場合は、EJB で ejbc を再実行して新しいコードを生成する必要があります。そうしないと、この変更の効果がありません。

8.1 SP2

CR120257

EJB コンテナのコードは、Sybase データベースの正しいデータベース製品名として「Adaptive Server Enterprise」を想定していませんでした。製品名としては「Sybase」が想定されていました。

WebLogic Sybase JDBC ドライバが「Adaptive Server Enterprise」としてデータベースの製品名を送信するので、この文字列は cmp 記述子のデータベース タイプ検証コードで考慮されるようになりました。

8.1 SP2

CR120300

データベースが SqlServer2000、Pointbase、および DB2 の場合に、ANSI 準拠の LEFT OUTER JOIN で余分な AND が追加されていました。

上記のデータベースの ANSI 準拠の LEFT OUTER JOIN を生成するときに AND が追加されないようにコードが修正されました。この問題の修正で副作用が生じることはないはずです。

8.1 SP2

CR121143

EJB が、依存しているデータベース テーブルが存在しないために、正確に言えばデプロイに失敗していました。EJB は、テーブルが存在しない場合、デプロイメント時にテーブルが自動的に作成されるようにコンフィグレーションされていました。しかし、サーバがプロダクション モードの場合、自動テーブル作成機能は開発モードでのみサポートされているため、EJB コンテナでテーブルが作成されませんでした。EJB コンテナによりこの情報が正しくユーザに通知されていないということが問題でした。

サーバがプロダクション モードにある場合は自動テーブル作成の設定が無視されることを説明するメッセージが追加されました。また、各管理対象サーバではデータベース テーブルがないことが原因で EJB のデプロイメントが失敗したときに、そのことがログに記録されるようになりました。

8.1 SP2

CR122511

wls510-read.xpi は、5.1 の weblogic-ejb-jar.xml デプロイメント記述子で <finders-call-ejbload> 要素に遭遇したときに PersistenceMBean.setFindersLoadBean() を設定していませんでした。

<finders-call-ejbload> 要素が 5.1 の weblogic-ejb-jar.xml デプロイメント記述子にある場合に、WebLogic Server はそれを PersistenceMBean で設定するようになりました。

<processing-action element="finders-call-ejbload" element-context="persistence-descriptor">
   <validation nullable="false"
    values="true|True|false|False"/>
      <java>
      if(bd.isEntity()) {
         bd.getPersistence().setFindersLoadBean(
         "True".equalsIgnoreCase( @VALUE{} )); }
      </java>
</processing-action>

8.1 SP2

CR124954

「MDB のセキュリティ ID のコンフィギュレーション」のドキュメントで、手順が一部欠けていました。この問題は修正されており、更新されたドキュメントは http://edocs.beasys.co.jp/e-docs/wls/docs81/ejb/message_beans.html#ConfiguringaSecurityIdentityforaMessage-DrivenBean で参照できます。

8.1 SP2

インストール

変更
要求
番号

説明

修正されたリリース

CR105921

[BEA ホーム ディレクトリの選択] パネルで状態が保持されませんでした。

現在は、上記パネルのコントロールの状態が保持されます。[BEA ホーム ディレクトリの選択] パネルに戻ると、以前のユーザの操作に基づいて UI コントロールの状態が表示されます。

8.1 SP2

CR111201

データベースのロードで使用される内部 URL フォーマットは、使用する可能性のあるすべての実行時プラットフォームで標準化されていませんでした。この問題が原因で、たとえば Solaris プラットフォームでコンフィグレーション ウィザードを使用して e2e ドメイン テンプレートから e2e ドメインを作成しようとしたときに java.lang.IllegalArgumentException が発生していました。

データベースのロードで使用する URL フォーマットは、プラットフォーム間で互換性を持つように標準化されました。

8.1 SP2

J2EE

変更
要求
番号

説明

修正されたリリース

CR110964

J2EEApplicationContainer は、アプリケーションのデプロイメントのフェーズをリスナに通知します。このときに、スレッドはそのコンテキスト クラスローダとしてシステム クラスローダを使用していました。

リスナは現在、アプリケーション クラスローダをスレッドのコンテキスト クラスローダとして、アプリケーションのデプロイメント イベントが通知されます。

8.1 SP2

CR111138

J2EEApplicationContainer は、サーバのシャットダウン時にアプリケーションでの「PRESTOP」イベントをアプリケーション リスナに通知していませんでした。

その通知を発行するようにコードが追加されました。アプリケーション リスナは、PRESTOP 通知を受信するようになりました。

8.1 SP2

CR122772

EJB の HomeImpl クラスが見つからなかったために、JNDI ルックアップではオブジェクトを解決できませんでした。この状況ではアサーションに矛盾が生じ、これは EJB が元々デプロイされたものとは違うクラスローダで HomeImpl クラスが検索されたために発生していました。

J2EEContainer のコードは、CLNode のアノテーションが必ずユニークになるように修正されました。1 つのアノテーションは必ず 1 つの CLNode に解決されなければなりません。

このサービス パックを使用する場合は、クラスタ化されたすべてのサーバで使用する必要があります。そのようにしないと副作用があります。

8.1 SP2

JCOM

変更
要求
番号

説明

修正されたリリース

CR108495

com2wls を使用するときに、クライアントの呼び出しの間にセキュリティ コンテキストが伝播されていませんでした。

コードの修正により、NTLM 認証が使用されない場合にサーバ側でキャッシュが維持されるようになりました。ユーザが JCOM クライアントからの最初のリクエストの一環として認証される場合は、そのクライアントの ThreadContextAuthenticatedSubject、および LastAccesssedTime がキャッシュに格納されます。クライアントのアイドル状態が 5 分 (weblogic.jcom.clientTimeout プロパティで設定) を超えると、WebLogic Server はキャッシュからそのクライアントのエントリを削除します。 トリガの頻度はデフォルトで 1 分です (weblogic.jcom.invalidationInterval プロパティで設定)。このプロパティは、WebLogic Server がキャッシュをチェックしてアイドル状態のクライアントをクリーンアップするトリガを実行する頻度を管理します。これらのプロパティの値は、ミリ秒単位で指定します。

8.1 SP2

CR120495

DCOM ソケットは、DefaultNetworkChannel のアイドル接続タイムアウト値に基づいてタイムアウトになっていました。これが原因で、DCOM ソケットが閉じていました。

DCOM 接続がタイムアウトにならないようにするコードが追加されました。

8.1 SP2

JDBC

変更
要求
番号

説明

修正されたリリース

CR093038

WebLogic Server は、Oracle 仮想プライベート データベース (VPD) をサポートするようになりました。VPD は、サーバによって強制されるアプリケーション定義のファイン グレイン アクセス制御と、Oracle 9i データベース サーバのセキュアなアプリケーション コンテキストを組み合わせたものです。

詳細については、『WebLogic JDBC プログラマーズ ガイド』の「Oracle 仮想プライベート データベースによるプログラミング」を参照してください。

7.0 SP3

8.1 SP2

CR104968

WebLogic jDriver for Oracle/XA は、Oracle RDBMS のインスタンスで設定された NLS_NUMERIC_CHARACTERS パラメータを正しく処理していませんでした。これが原因で、データベースで小数点としてカンマ (\Q,') が使用されている場合、double または float 値を取得するときに java.sql.SQLException が送出されていました。

java.sql.SQLException: java.lang.NumberFormatException - '1,2'
at weblogic.jdbc.oci.ResultSet.getFloat(ResultSet.java:312)
at weblogic.jdbc.jta.ResultSet.getFloat(ResultSet.java:190)
at
weblogic.jdbc.rmi.internal.ResultSetImpl.getFloat(ResultSetImpl.java:224)
at
weblogic.jdbc.rmi.internal.ResultSetStraightReader.getFloat(ResultSetStraightReader.java:67)
at
weblogic.jdbc.rmi.SerialResultSet.getFloat(SerialResultSet.java:219)
at examples.servlets.DBAccess.service(DBAccess.java:54)
at
[...]

WebLogic jDriver for Oracle の非 XA バージョンでは、この問題は発生していませんでした。この問題は、コードを修正することで解決しました。

6.1 SP6

8.1 SP2

CR106522

WebLogic Server jDriver for MS SQLServer は、Microsoft JDBC ドライバの URL jdbc:microsoft:... を誤って受け入れることがあります。JVM が両方のドライバを使用しようとした場合、WebLogic Server ドライバを最初にロードすると、Microsoft ドライバが使用できなくなります。

この jDriver は非推奨になっています。

7.0 SP4

8.1 SP2

CR107474

OciObjectStream は、close() の実行後にバッファを破棄しませんでした。

この問題は、コードを修正することで解決しました。

6.1 SP6

8.1 SP2

CR108051

LDAP を SSL と使用すると、NullPointerException が生じていました。

この問題は、MuxableSocketLDAP が (SSLFilter ではなく) それ自体を直にソケット マルチプレクサに登録していたことが原因です。このため、SSL を使用するときに、適切な多重化可能ソケット インスタンスにアクセスしていませんでした。

この問題は MuxableSocketLDAP のコードを修正することで解決したので、ソケット マルチプレクサには SSLFilter が登録されます。

8.1 SP2

CR108436

トランザクション対応 (JTS) JDBC 接続が、リモート アプリケーションの isClosed() メソッドに対して誤って true を返すことがありました。

この問題は、RMI 接続の既知の状態をそのまま報告するのではなく、リモート接続に対する isClosed() の呼び出しをエラーが起こりやすく、不必要であるにもかかわらず委託していたことが原因でした。

RMI 接続オブジェクトは、既知の状態を返すように修正されました。isClosed() に関して、ユーザ コードは期待どおりに機能するようになりました。

8.1 SP2

CR109268

JDBC データソースでの JNDI ルックアップに続いて ds.getConnection がアプレットのコードで実行されたときに、アプレットでコードを生成する特権がないことを示すセキュリティ例外が送出されていました。

JDBCWrapperFactory は、アプレットの JVM でルックアップが実行されたかどうかを検出するようになりました。実行された場合、アプレットの JVM で JDBC RMI ラッパー クラスを生成するのではなく、リクエストは ClasspathServlet に送信されます。ClasspathServlet はサーバ側で JDBC RMI ラッパー クラスを生成し、それをアプレットに送り返します。この修正がなければ、アプレットは JDBC RMI とは機能しません。

8.1 SP2

CR111136

WebLogic Server の Oracle jDriver で、標準ではない Oracle CURSOR 出力パラメータ タイプ (数値は -10) を使えるようになりました。WebLogic Server の Oracle jDriver を使用して WebLogic 拡張機能に対応しても、今後は例外が送出されません。

8.1 SP2

CR111230

EJB のデプロイメント時には、テーブルを検証したり、接続プールが存在するかどうかを確認したりするために特定の検証が行われます。その検証のいずれかが失敗すると、DeploymentException が送出されます。この場合、TableVerifier.checkPool() メソッドで false が返されたので DeploymentException が送出されていました。

この問題は、weblogic.jdbc.common.internal.ConnectionPoolManager.poolExists() メソッドで、WebLogic Server が利用可能な接続プールのリストに (EJB で使用される) プールがあるかどうかを確認するだけで、マルチプールのリストで同じ確認をしなかったことが原因です。

CMP EJB のデータソースと関連付けられたプールについて、WebLogic Server はそれが接続プール リストとマルチプール リストの両方に存在することを確認するようになりました。その結果として、ユーザは CMP EJB 内のマルチプールにマップされたデータソースを使用することができます。

8.1 SP2

CR120224

Sybase JDBC ドライバのメタデータ メソッドの多く (getAutoCommit() など) は、トランザクションが開始されていると DBMS が判断するような方法で DBMS と対話していました。このことで、トランザクション プロパティにはいっさい変更を加えることができなくなっていました。たとえば次の有効な JDBC コードの場合、アプリケーションは「can't call set CHAINED within a transaction」と通知する例外を受信していました。

Connection c = ...// 新しい接続を取得する
c.setAutCommit(false); // 将来のマルチステートメント トランザクションを考慮して接続を設定する
// ここで接続をテストする (トランザクションの後のように) 必要に応じてデフォルト モードに戻る
if (c.getAutoCommit()) c.setAutoCommit(true); // ここで失敗する

setAutoCommit(true) の最初の呼び出しが失敗したときにのみ実行されるコードが追加されました。この場合、WebLogic Server はトランザクションをロールバックし、setAutoCommit() を再試行します。BEA は Sybase と共同で Sybase 製ドライバの改良に努めており、この執筆の時点で、Sybase ドライバの最新の EBF にはこの問題を修正する変更も含まれているはずです。

8.1 SP2

CR121635

WebLogic Sybase XA JDBC ドライバを使用して WebLogic Server を実行しているときに、現在のトランザクションを中断して新しいトランザクションを開始した後にテーブルを作成しようとすると、その試みは失敗していましたが例外は送出されませんでした。

この問題は、WebLogic Server が JDBC レイヤで実行するクリーンアップ処理が原因です。アプリケーション コードが commit() を呼び出すと、WebLogic Server は内部で接続の自動コミット設定を確認します。Sybase XA を使用して実行している場合に、WebLogic Server は rollback() を呼び出す必要があります。これは、getAutoCommit() の呼び出しでローカル トランザクションが開始されるためです。この rollback() では、SQL DDL 呼び出しによって、ロールバックされるテーブルも作成されます。したがってこのテーブルは、作成されていないように見えます。

この問題は、Sybase XA ドライバについて、get/setAutoCommit および get/setTransactionIsolation を呼び出した後の rollback() の呼び出しを削除することで解決しました。アプリケーション コードは現在は正しい結果を取得します。

8.1 SP2

CR125320


サーバのスレッド ダンプが、1 つのスレッドが JTSConnection.doClose() (このメソッドでブロック) を呼び出しているデッドロックを示していました。

この問題は、1 度に 1 つのスレッドだけが入れるようにするために JTSConnection で同期がとられるブロックが doClose() にあったことが原因です。スレッドによるこの doClose() ブロックの取得が、同期がとられる他の JTSConnection メソッドを実行する他のスレッドによって阻止されてしまいます。

doClose() ブロックのプライベート ロック オブジェクトが提供されました。この修正の結果として、動作に認識可能な変化はありませんが、運がよければ、デッドロックが回避されて通常の機能が進行します。

8.1 SP2

CR125496

ResourcePool 保守スレッドがリソース プールをロックし、他のスレッドによって保持されている接続を取得しようとすると、Oracle 関連の JDBC 処理がハングしました。

この問題は、1 度に 1 つのスレッドだけが入れるようにするために JTSConnection で同期がとられるブロックが doClose() にあったことが原因です。スレッドによるこの doClose() ブロックの取得が、同期がとられる他の JTSConnection メソッドを実行する他のスレッドによって阻止されてしまいます。

doClose() ブロックのプライベート ロック オブジェクトが提供されました。この修正の結果として、動作に認識可能な変化はありませんが、運がよければ、デッドロックが回避されて通常の機能が進行します。

8.1 SP2

CR126038

Oracle OCI NativeXA は、それが実際に作成された以外のスレッドで接続が使用されることを許可しません。WebLogic Server の接続プーリング アルゴリズムでは、どのスレッドでも接続を使用できると想定していました。それが、Oracle Thin Driver を含む他のすべての JDBC ドライバの動作だからです。この接続プーリング アルゴリズムで Oracle OCI NativeXA を使用する場合は、XAException が送出されます。

この問題は、接続をスレッドに固定することで解決しました。この修正の結果、すべてのスレッドがすべての接続プールでそれ専用の接続を持つようになりました。

8.1 SP2

CR127969

アプリケーションの RASP と HA の要件が厳しい場合は、データベース サーバ、データベース サーバのホスト マシン、データベース サーバのホスト マシンとのネットワーク接続の障害などからプールが適切に回復できなければなりません。そのためには、アプリケーションで以下の事項に上限を設定する必要があります。

    1. JDBC 接続の作成要求がブロックされている時間

    2. 文が実行される時間

また、JDBC ドライバからのサポートも必要です。BEA WebLogic Type 4 JDBC ドライバは、このサポートを提供するようになりました。項目 1 は、接続プールの定義で対応するドライバ プロパティを設定することでコンフィグレーション可能です。項目 2 は WebLogic Server からのサポートが必要であり、以下のプール属性でエクスポーズされます。

  • testStatementTimeout - 現在実行されているテスト用文クエリ (プール属性 TestTableName を使用してアプリケーションで指定) がタイムアウトになるまでの時間。デフォルト値では、この機能は無効になります。

  • statementTimeout - 現在実行されている文がタイムアウトになるまでの時間。デフォルト値では、この機能は無効になります。

BEA WebLogic Type 4 JDBC ドライバの詳細については、『WebLogic Type 4 JDBC ドライバ ガイド』を参照してください。testStatementTimeout 属性と statementTimeout 属性の詳細については、「JDBC 接続の作成および JDBC 文の実行のタイムアウト」を参照してください。

8.1 SP2

JMS

変更
要求
番号

説明

修正されたリリース

CR103213

サーバが JMS メッセージの送信に失敗したときに、クライアントでエラー メッセージが表示されませんでした。トランザクション マネージャはそのメッセージが異常であると宣言しており、JMS はリソースの取得に失敗したときにメッセージをロールバックしていました。

トランザクションの登録の失敗は、クライアントに通知されるようになりました。したがってクライアントでは、コミットが失敗したと報告することができます。

7.0 SP3

8.1 SP2

CR103596

マルチプロセッサ コンピュータではまれに、メッセージが 2 回確認応答されたときに NullPointerException が発生することがありました。

NullPointerException を防止するようにコードが修正されました。そのため、この状況で NullPointerException が発生することはなくなりました。

7.0 SP4

8.1 SP2

CR104538

JMS のデッドロックは、BESession.java close(long lastSequenceNumber) メソッドを変更することで修正されました。デッドロックは、次のようなスレッド ダンプの一部で見ることができました。

ExecuteThread: '9' for queue: 'queue_1'" daemon prio=5
tid=0x2757938 nid=0x5e waiting for monitor entry [0xce97f000..0xce97fc68] at
weblogic.jms.backend.BETopic._addMessageToConsumers(BETopic java:590) at
weblogic.jms.backend.BETopic.addMessageToConsumers(BETopic.java:296) at
weblogic.jms.backend.BEMessageWriteListener.storeIOComplete(BEMessageWriteListener.java:85) at
weblogic.jms.store.StoreRequest.execute(StoreRequest.java:342) at
weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139) at
weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
"ExecuteThread: '14' for queue: 'queue_2'" daemon prio=5 tid=0x57b200 nid=0x54 waiting for monitor entry [0xd1b7f000..0xd1b7fc68] at
weblogic.jms.backend.BESession.stop(BESession.java:386) at
weblogic.jms.backend.BESession.close(BESession.java:434) at
weblogic.jms.backend.BESession.close(BESession.java:1083) at
weblogic.jms.backend.BESession.invoke(BESession.java:1024) at
weblogic.jms.dispatcher.Request.wrappedFiniteStateMachine(Request.java:585)....

6.1 SP6

8.1 SP2

CR105337

負荷のかかっている状態で、テスト JMS アプリケーションが次の例外に遭遇していました。

java.lang.OutOfMemoryError weblogic.jms.common.TransactionRolledBackException: at weblogic.jms.backend.BEConsumer.expireTimeout(BEConsumer.java:1620) at weblogic.jms.backend.BEXATranEntryBlockingConsumer.startRollback(BEXATranEntryBlockingConsumer.java:72) at weblogic.jms.backend.BEXAResource.rollback(BEXAResource.java:1205) at weblogic.transaction.internal.ServerResourceInfo.rollback(ServerResourceInfo.java:1400) at weblogic.transaction.internal.ServerResourceInfo.rollback(ServerResourceInfo.java:664) at weblogic.transaction.internal.ServerSCInfo.startRollback(ServerSCInfo.java:365) at weblogic.transaction.internal.ServerTransactionImpl.localRollback(ServerTransactionImpl.java:1521) at weblogic.transaction.internal.ServerTransactionImpl.globalRollback(ServerTransactionImpl.java:2142) at weblogic.transaction.internal.TransactionImpl$1.execute(TransactionImpl.java:1656) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:211) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:198) weblogic.jms.common.JMSException: Only one thread may use a JMS Session at a time. at weblogic.jms.frontend.FESession.rollbackAfterRecover(FESession.java:1773) at weblogic.jms.frontend.FESession.recover(FESession.java:1373) at weblogic.jms.frontend.FESession.invoke(FESession.java:2253) at weblogic.jms.dispatcher.Request.wrappedFiniteStateMachine(Request.java:609) at weblogic.jms.dispatcher.DispatcherImpl.dispatchSyncNoTran(DispatcherImpl.java:339) at weblogic.jms.client.JMSSession.recoverGuts(JMSSession.java:868) at weblogic.jms.client.JMSSession.rollback(JMSSession.java:632) at com.ncr.crm.framework.jms.DefaultJmsQueueReceiver.rollback(DefaultJmsQueueReceiver.java:184) at com.ncr.crm.framework.jms.DemoMessageConsumer.run(JmsMemoryLeakDemo.java:163) at java.lang.Thread.run(Thread.java:479) ----------- Linked Exception ----------- weblogic.jms.common.JMSException: Only one thread may use a JMS Session at a time. at weblogic.jms.frontend.FESession.recover(FESession.java:1219) at weblogic.jms.frontend.FESession.invoke(FESession.java:2253) at weblogic.jms.dispatcher.Request.wrappedFiniteStateMachine(Request.java:609) at weblogic.jms.dispatcher.DispatcherImpl.dispatchSyncNoTran(DispatcherImpl.java:339) at weblogic.jms.client.JMSSession.recoverGuts(JMSSession.java:868) at weblogic.jms.client.JMSSession.rollback(JMSSession.java:632) at com.ncr.crm.framework.jms.DefaultJmsQueueReceiver.rollback(DefaultJmsQueueReceiver.java:184) at...

調査の結果、リンクされた長いリストを扱うときに WebLogic JMS ガベージ コレクション機能でメモリの再生が遅いことが判明しました。リストを分割するようにコードが修正されました。この結果、この問題は解決されました。

7.0 SP4

8.1 SP2

CR106538

新しいトピック メンバー X が分散トピックに追加されたときに、前のメンバー Y と Z のコンシューマは X にパブリッシュされたメッセージを取得していませんでした。これは、メンバー X が移行可能な対象にあり、Y と Z がすでに起動されているのに分散トピックに追加された場合に起きていました。Y と Z の再起動は回避すべきです。

この問題は、動的に追加されたメンバーを登録するようにコードを修正して解決されました。X にパブリッシュされたメッセージは Y と Z でもアクセス可能になりました。

8.1 SP2

CR106789

不使用の JMS オブジェクトが開いたままでいることが原因でメモリ リークが発生していました。

この問題は、以下の修正で解決されました。

  • 同じ送り先で作成されたすべてのプロデューサで送り先が標準化される

  • FEProducer の代わりに DispatcherWrapperState を代用する際に適切な DispatcherWrapperState からリスナーが削除される

  • FEProducer を無条件で閉じる際に適切な DispatcherWrapperState からリスナーが削除される

  • BackEnd がダウンしたときに FrontEnd の一時的な送り先でリークが削除される

7.0 SP3

8.1 SP2

CR108665

JMS サーバはキュー ブラウザの参照リストにまだそのメッセージがあるのに永続ストアから期限切れメッセージを削除し、結果としてページング IO 例外が生じていました。

コードの修正でページングの処理が改善され、問題は解決しました。

7.0 SP4

8.1 SP2

CR109599

Microsoft 提供の SQL Server ドライバの制限が原因で、JMS JDBC ストアがこのドライバで機能しませんでした。

JMS JDBC ストアのソフトウェアは、ドライバの制限を回避するようにコードが修正されました。このため、JMS JDBC ストアは Microsoft 提供の SQL Server ドライバを使用できるようになりました。

7.0 SP4

8.1 SP2

CR111172

外部 JMS サービス プロバイダの名前は、ユニークである必要がありました。ユニークでない場合、WebLogic Server は PROTO エラーを送出していました。

WebLogic Server では、ドメイン名とサーバ名が含まれるように、JMS ラッパー コードで登録される XAResource の名前を変更しました。foreignServiceProvider の JMS TxResource 名は、domain+servernameresourcename に追加することによりユニークになっています。

このため、外部 JMS プロバイダを EJB またはサーブレットに登録する際の命名規約が変更になりました。「resource-reference」機能を使用して EJB またはサーブレットで外部プロバイダ (MQSeries など) を使用する場合は、WebLogic Server インスタンスを正常に終了して、この SP をインストールする前に保留中の 2 フェーズ コミット トランザクションが存在しないようにする必要があります。そうしないと、外部 JMS サーバの「不明な」トランザクションが、SP をインストールしてサーバを最初に再起動した後に正しく解決されない場合があります。この制限は、メッセージ駆動型 Bean には提供されません。また、このような事前対策は、この SP をインストールした後の最初のサーバ再起動のときにのみ必要となります。

8.1 SP2

CR111538

res-authApplication に設定されている場合に、JMSConnectionHelper がユーザ名とパスワードで null 値を許可していませんでした。

weblogic.deployment.jms.JMSConnectionHelper コンストラクタは、res-authApplication の場合にユーザ名とパスワードで null 値を許可するように修正されました。このため、res-authApplication に設定されている場合にユーザ名とパスワードが null でも SecurityException は送出されなくなりました。

8.1 SP2

CR112431

JMS 送り先の [しきい値と割当] タブの [最大バイト数] フィールドと [最大メッセージ数] フィールドは、ヘルプ テキストで 64 ビット整数が受け入れられると示されていても 32 ビット整数のみを受け入れていました。

64 ビット整数が許可されるように検証が修正されました。

8.1 SP2

CR121011

CR126883

JMS ストアのメッセージに、そのストアが属する同じクラスタではなく、かつ分散送り先である ReplyTo がある場合、JMS サーバの再起動時に NullPointerException が送出されていました。

この問題は、ストアに書き込まれた DD メンバー インスタンスの configMBeanName を WebLogic Server が特定しようとしたができなかった場合に発生していました。

configMBeanName を特定できない場合は、インスタンス名を使用して、replyTo フィールドに対応する DestinationImpl (非 DD キュー) を作成するようにコードが修正されました。つまりこの状況では、replyTo キューが DistributedDestination から通常の送り先に格下げされることになります。この replyTo を使用するクライアントはロード バランシングされません。

7.0 SP5

8.1 SP2

CR122749

キューのメッセージに JMSCorrelationID が設定されていないものがあると、DestinationKey JMSCorrelationID に基づいてソートを行うときに NullPointerException が生じていました。DestinationKey JMSType でも同じエラーが生じる可能性がありました。

compareTo を呼び出す前に null の JMSCorrelationID と null の JMSTypes を確認するようにコードが修正されました。結果として、NullPointerException が送出されずにソートが正しく機能するようになりました。

8.1 SP2

6.1 SP6

CR129067

JMS サーバは、ソート順で大文字と小文字が区別されるようにコンフィグレーションされている場合に SQL Server 2K でテーブルを作成することができませんでした。

この問題は、JMS がテーブルの作成時にその名前をすべて大文字に変更していたことが原因です。

JMS テーブルの作成時に、テーブル名は大文字に変更されることなくそのまま維持されるようになりました。このため、JMS はあらゆるタイプの SQL Server 2K で機能するようになっています。

8.1 SP2

JNDI

変更
要求
番号

説明

修正されたリリース

CR103148

起動クラスは、LoadBeforeAppDeployments が true に設定されている場合に、LOCAL_JNDI_NAME(weblogic.management.home.localhome) のローカル インスタンス MBeanHome にアクセスできていませんでした。次のエラー メッセージで失敗していました。

Unable to resolve 'weblogic.management.home.localhome' Resolved: 'weblogic.management' Unresolved:'home'

起動クラスからアクセスできるように他の JNDI 名のバインディングを AdminService に移動することで問題は解決しました。

7.0 SP3

8.1 SP2

CR120522

コンテキストが作成されると、TransactionHelperImpl オブジェクトがスタックに積み上げられます。そのコンテキストが閉じると、積まれたオブジェクトは取り出されます。サブコンテキストの作成時に TransactionHelperImpl オブジェクトはスタックに積まれませんでしたが、サブコンテキストが閉じるときに、オブジェクトの取り出しが試行されて EmptyStackException が送出されていました。

サブコンテキストの作成時に TransactionHelperImpl オブジェクトをスタックに積み上げるようにコードが修正されました。サブコンテキストを作成するとき、および閉じるときに EmptyStackException が送出されなくなりました。

8.1 SP2

CR122820

起動クラスを使用して管理対象サーバから管理サーバにリモート オブジェクトをバインドし、その後にそれをルックアップすると、管理対象サーバで java.io.StreamCorruptedException が生じていました。

この問題は、StubInfo オブジェクトから動的に生成されたスタブではなく、リモート オブジェクトのスタブがネットワーク経由で渡されたことが原因で発生していました。

この問題は、weblogic.rmi.utils.io.RemoteObjectReplacer replaceObject メソッドを修正することで解決しました。現在は、ネットワーク上でスタブを記述する前に、StubInfo オブジェクトで置き換えられます。この修正の結果、リモート オブジェクトをサーバの JNDI ツリーにバインドするクライアントはそのオブジェクトをルックアップし、そのメソッドを呼び出すことができます。

8.1 SP2

JTA

変更
要求
番号

説明

修正されたリリース

CR091974

XA の回復で XID が返されない場合に、WebLogic Server は NullPointerException を送出する場合がありました。

java.lang.NullPointerException at
weblogic.transaction.internal.ServerResourceInfo.rollback(ServerResourceInfo.java:721) at
weblogic.transaction.internal.ServerSCInfo.rollback(ServerSCInfo.java:318) at
weblogic.transaction.internal.ResourceDescriptor.rollbackXids(ResourceDescriptor.java:1160) at
weblogic.transaction.internal.ResourceDescriptor.recover(ResourceDescriptor.java:1060) at
weblogic.transaction.internal.ResourceDescriptor.access$9(ResourceDescriptor.java:1029) at
weblogic.transaction.internal.ResourceDescriptor$1.execute(ResourceDescriptor.java:770) at
weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139) at
weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)

XID の存在を確認し、例外の発生を回避するようにコードが修正されました。

6.1 SP6

8.1 SP2

CR092301

CR107866

コンフィグレーションによっては、トランザクションの調整時に NullPointerException 例外が発生する場合がありました。この問題は、コードを修正することで解決しました。

7.0 SP3

8.1 SP2

CR108952

Sybase JConnect XA ドライバは、set/getAutoCommit または set/getTransactionIsolation メソッドが呼び出されたときにローカル トランザクションを開始していました。このことが原因で、次のようなエラーが生じていました。

XAER_RMERR : A resource manager error has occurred in the transaction branch javax.transaction.xa.XAException at
com.sybase.jdbc2.jdbc.SybXAResource.sendRPC(SybXAResource.java:711) at
com.sybase.jdbc2.jdbc.SybXAResource.sendRPC(SybXAResource.java:602) at
com.sybase.jdbc2.jdbc.SybXAResource.start(SybXAResource.java:312) at
weblogic.jdbc.jta.VendorXAResource.start(VendorXAResource.java:41) at
weblogic.jdbc.jta.DataSource.start(DataSource.java:569) at
weblogic.transaction.internal.ServerResourceInfo.start(ServerResourceInfo.java:1165) at
weblogic.transaction.internal.ServerResourceInfo.xaStart(ServerResourceInfo.java:1108) at
weblogic.transaction.internal.ServerResourceInfo.enlist(ServerResourceInfo.java:287) at
weblogic.transaction.internal.ServerTransactionImpl.enlistResource(ServerTransactionImpl.java:391) at
weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1143) at
weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1098) at
weblogic.jdbc.jta.Connection.getXAConn(Connection.java:145) at
weblogic.jdbc.jta.Connection.prepareStatement(Connection.java:211)

WebLogic Server は、上記メソッドの呼び出しの後に connection.rollback() を呼び出すようになりました。このため、エラーは発生しなくなりました。

8.1 SP2

CR111719

XA 接続プールで必須の属性 KeepXAConnTillTxComplete は、XA のアイソレーション レベルが変更されたかどうかの確認のみを実行します。

7.0 SP4

8.1 SP2

CR116697

WebLogic Server 6.1 からシステムを移行しようとすると、次の SQLException が発生しました。

java.sql.SQLException: start() failed on resource 'weblogic.jdbc.wrapper.JTSXAResourceImpl': XAER_RMFAIL : Resource manager is unavailable

この問題は、トランザクションがこの XAResource を 2 分より長くブロックしたことが原因で発生しました。XAResource が使用できないと想定されるため、JTA の状態モニタ システムによって、その接続プールの完全な無効化が決定されました。

この問題は、状態モニタの無効化を許可する適切なクラスをインポートすることで解決しました。

8.1 SP2

ノード マネージャ

変更
要求
番号

説明

修正されたリリース

CR092678

WebLogic Server の多くのパートでは、Salt を使用して資格が暗号化されます。別の Salt で同じファイルを再利用しようとすると、Salt が一致していないので「bad padding exception」が発生していました。この例外は、WebLogic Server が前のバージョンで記述されたパスワードを複合化できない場合に送出されていました。

WebLogic Server はこの例外を捕捉し、問題と必要なアクションを示すメッセージを出力するようになりました。

8.1 SP2

CR104285

ノード マネージャの共有オブジェクト コードは、サーバ インスタンスの起動時に特定のコード パスがとられたときにセグメント違反を引き起こすことがありました。IBM の zLinux JDK を使用したときにも同じコード パスで問題が発生していました。これらの問題は、ノード マネージャのコード修正で解決しました。

6.1 SP6

8.1 SP2

CR111339

低速のハードウェアでノード マネージャを使用して複数の WebLogic Server インスタンスを起動しようとすると、次のエラーが生じていました。

<Jun 25, 2003 5:16:15 PM CDT> <Error> <NodeManager@192.168.190.4:5555> <__COMMAND_EXCEPTION__Request: failed to execute command 'online' on server 'ifgw1catapp4 - reason: '[JavaProcessControlOnline: Could not get valid pid for WebLogic process.]'>

この問題は、ファイルに書き込む機会がないうちにノード マネージャが PID ファイルを検索していたことが原因でした。

新しいプロパティを使用すると、ユーザはノード マネージャがファイルから PID を読み込む再試行回数を指定できます。各再試行は、2 秒間待機します。導入されたプロパティは PIDFileReadRetryCount で、システム プロパティとして、または nodemanager.properties ファイルで指定できます。PIDFileReadRetryCount の値がゼロより大きい場合、ノード マネージャはファイルからの PID の読み込みを PIDFileReadRetryCount の回数だけ試行します。PIDFileReadRetryCount のデフォルト値はゼロなので、デフォルト動作に変更はありません。

8.1 SP2

CR111639

デバッグが有効になっている場合に、管理対象サーバを起動するためのパスワードがノード マネージャのログにプレーン テキストで出力されていました。

デバッグが有効になっている場合でもパスワードがログに出力されることはなくなりました。

8.1 SP2

CR125829

http://dev2dev.bea.com/resourcelibrary/advisoriesnotifications/BEA03_42.00.jsp のセキュリティ勧告を参照してください。

8.1 SP2

プラグイン

変更
要求
番号

説明

修正されたリリース

CR087204

[Apache] WebLogic Server 6.1 SP03 において、PathTrim と PathPrepend によって URL の末尾に予期されない「/」が追加されていました。元の URL に PathTrim が適用されて、その結果が「/」になった場合に、その後で余分な「/」が PathPrepend 変数に付加されていました。

この問題は、コードを修正することで解決しました。

6.1 SP6

8.1 SP2

CR086224

(NSAPI) プラグインが、POST データから SESSIONID を読み込んでいませんでした。

分析の結果、getPreferredServersFromCookie() に問題があることが判明しました。session.getId() が POST データとして維持されたときに、getId() に余分な文字列 |time が含まれていました。

この問題は、コードを修正することで解決しました。

6.1 SP5

8.1 SP2

CR091910

(Apache) Apache プラグインは、<IfModule mod_weblogic.c> の使用時に PathPrepend を読み込んでいませんでした。この問題は、Apache 1.3.x および Apache 2.0.43 用のプラグインで発生していました。

この問題は、コードを修正することで解決しました。

6.1 SP6

8.1 SP2

CR106764

(NSAPI) プラグインのスレッドが長い期間クリティカル ロックを取得できたために (デフォルトで 5 分、あるいは WLIOTimeoutSecs でコンフィグレーション)、他のすべてのスレッドがブロックされ、WebLogic Server がハングしているように見えていました。この問題は、プラグインをコード修正して解決しました。

6.1 SP6

8.1 SP2

CR107254

(Apache) Hewlett-Packard では HP Apache-based Web Server バージョン 1.3.x のサポートを停止したので、WebLogic Server は HP 用の Apache 1.3 プラグインを削除しました。

7.0 SP3

8.1 SP2

CR108092

(ISAPI) ISAPI プラグインは、修正されたクッキーに遭遇したときに未処理の例外エラーを Windows のイベント ログに記録していました。そのイベント テキストは次の行で始まっていました。

The HTTP Server encountered an unhandled exception while processing the ISAPI Application.

この問題は、ISAPI プラグインのコード修正で解決しました。

6.1 SP6

8.1 SP2

CR108747

(NSAPI) WebLogic Server に付属のプラグインは、WL-Proxy-Client-IP ヘッダを使用してクライアントの IP アドレスを送信していました。このことにより、さまざまな環境で問題が引き起こされていました。以前のバージョンのサーバでは、プラグインが X-Forwarded-For および Proxy-Client-IP ヘッダを使用してクライアントの IP アドレスを送信するものと想定していたためです。

WL-Proxy-Client-IP だけでなく X-Forwarded-For および Proxy-Client-IP の両ヘッダが含まれるようにコードが修正されたので、さまざまな環境で修正せずにクライアントのアドレスを取得できるようになりました。

6.1 SP6
8.1 SP2

CR109755

(Apache) ワイルドカード文字 (*/?) 以外の正規表現が含まれるコンフィグレーション パラメータをプラグインが無視していました。このことが原因で、次のようなパラメータを使用した場合に 404 エラーが生じることがありました。

LocationMatch "/weblogic/(abc|def)/ghi"

この問題は、コードを修正することで解決しました。

6.1 SP6

8.1 SP2

CR120806

(Apache) Java コマンドからステータスが返されないことで、そのコマンドが正常に実行されたのかどうかを判断することができなくなっていました。

ant.bat ファイルの 2 つの Java コマンドの後に行 if errorlevel 1 exit /b 1 が追加されました。このため、Java コマンドのステータスはそれが失敗した場合にシェルに返されるようになりました。

8.1 SP2

CR121341

http://dev2dev.bea.com/resourcelibrary/advisoriesnotifications/BEA03_39.00.jsp のセキュリティ勧告を参照してください。

6.1 SP6

7.0 SP5

8.1 SP2

CR123149

(すべて) WebLogic Server 6.1 SP6、7.0 SP5、および 8.1 SP2 以後、WebLogic プラグインは 5.1 を含むすべてのバージョンの WebLogic にプロキシすることが確認されています。

8.1 SP2

RMI/RMI-IIOP

変更
要求
番号

説明

修正されたリリース

CR124806

iiop トンネリングに複数の問題が見つかりました。

- HttpURLConnection がトンネリング時に一部の HTTP リクエストを再試行するため、

保留中の応答の登録時にアサーション違反が発生する。

- シン クライアントがプラグインまたはロード バランサを介さずに

クラスタ ノードに直接接続しようとする。

- スレッドセーフの問題のため、メソッド記述子が破損する。

上記の問題は、以下のことを行うコードを追加することで解決しました。

- HttpURLConnection によって作成された重複した HTTP リクエストを検出し、

重複した保留中の応答を破棄する。

- トンネリング時に iiop シン クライアントによって作成されたすべてのリクエストが

必ずプロキシを通過するようにする。

- iiop 初期化が必ず同期されるようにする。


CR081853

特にさまざまな JDK が混在している環境において、RMI-IIOP および複合オブジェクトのマーシャリングに関する複雑な問題が修正されました。

6.1 SP5

8.1 SP2

CR106281

大きな負荷がかかっているときにセッション Bean をレプリケートすると、ヒープ使用率が上がり、OutOfmemoryErrors が生じていました。

分析の結果、ガベージ コレクションが強制されても examples.ejb20.basic.statefulSession.TraderBean_5ysgq2_EOImpl オブジェクトがガベージ コレクションされないという事実が判明しました。クラスタ化されたステートフル セッション Bean では、プライマリ オブジェクト EOImpl の強い参照が weblogic.rmi.cluster.PrimarySecondaryRemoteObject に維持されていました。Bean で remove は絶対に呼び出されないので、EOImpl の参照が eoMap から削除されることはありませんでした。

session-timeout-seconds の後、パッシベーションされた Bean が削除されたときに EO をアンエクスポートするようにコードが修正されました。

6.1 SP6

8.1 SP2

CR107547

JMS とシンクライアントを使用する場合に、サーバ側で接続のタイムアウトが無効になっていました。このため、ネットワークが分割されている場合にクライアントが応答なしと検出されない可能性がありました。

タイムアウトは現在は有効に戻されるようになり、サーバは接続を閉じる直前にクライアントに対して ping を実行します。ping が成功した場合、接続は閉じられません。この修正の結果、シンクライアントを使用している場合に区分けが正しく検出されるようになりました。

8.1 SP2

CR108317

一部のアクセサは、ejbc で生成された IDL (Interface-Definition-Language) でマッピングが正しく行われていませんでした。この問題は修正されました。

7.0 SP3

8.1 SP2

CR112648

Tuxedo クライアントは、any に格納された valuetype をデコードしようとしたときにクラッシュしていました。

この問題は、anyTypeCode が誤って設定されていたために発生していました。

anyTypeCode は、その中の valuetype の TypeCode に設定されるようになりました。この変更の結果、Tuxedo はクラッシュしなくなりました。

8.1 SP2

CR112791

サーバは、コンポーネント キーをホスト ポート情報と一緒に送信します。クライアントはそのホスト ポート情報を使用して、それ以降のリモート リクエストを行います。WebLogic Server 8.1 のクライアントは接続がどのスキーマで作成されたのかについて十分な情報を持たず、したがって HTTP のデフォルト スキーマを使用していました。

HTTPS スキーマで TunneledSSLORBSocketFactory が最初に作成されるようにコードが修正されました。この修正により、クライアントは以降のすべてのリクエストについて TunneledSSLORBSocketFactory のコンテキストにあるときに必ず HTTPS スキーマを使用するようになります。

8.1 SP2

CR116690

IIOP のエンコーディング ルーチンには、リニア検索を伴う要素がありました。これが原因で、大きなデータ オブジェクトでは負荷が非常に大きくなります。

リニア検索の問題は修正されました。大きなオブジェクトのマーシャリングは現在は、RMI-IIOP で高速に行われます。

8.1 SP2

CR116692

リニア検索が、間接のデコードに使用されていました。これが原因で、大きなオブジェクトでは負荷が非常に大きくなります。

リニア検索の問題は修正されました。大きなオブジェクトのマーシャリングは現在は、RMI-IIOP で高速に行われます。

8.1 SP2

CR120180

HTTPS プロトコルをシンクライアントおよびネットワーク チャネルと使用する場合に (IIOPS トンネリング)、サーバがデフォルト ネットワーク チャネルの情報をクライアントに送信し返すときにセキュア プロトコルを無視していました。その結果、クライアントは応答を受け取ってからその応答の情報を使用して直にサーバと通信を開始したので、ハンドシェークがもう 1 つ作成されていました。

使用されているプロトコルがセキュアかどうかを識別できるように接続コードが修正されました。この変更の結果、サーバは確立された接続がセキュアであることを正確に識別し、適切なネットワーク チャネルを使用するようになります。クライアントは、それ以降のリクエストを正しく行います。

8.1 SP2

CR120593

WebLogic Server インスタンスがダウンしたときに、クライアントはそれに気づかず、Tunnel Recv リクエストを送信してサーバに接続しようとしていました。これが原因で、サーバがアクティブになったときにトラフィックが増えていました。同時に、既存の JMS セッションの実行によって、サーバは前と同じ ID で新しい接続を作成していました。結果として、サーバは同じ接続でリクエストを受信し (recv、send が後続)、すでにある場合は保留中の応答を登録しようとして、AssertionError が生じていました。

コードの修正によって、クライアントは現在はサーバがダウンしていることを認識し、既存の接続を閉じます。このため、サーバが再びアクティブになっても、クライアントは既存の JMS セッションを使用してサーバに接続することはできません。サーバの再起動後に同じ JMS セッションを再利用すると、クライアントは IllegalStateExceptions を受信します。

8.1 SP2

CR120898

シンクライアントとトンネリングを使用すると、オブジェクトが大きい場合にパフォーマンスが低下していました。この原因は、JDK ORB がメッセージを 1KB のパケットに分割していたことにあります。

ORB は、トンネリングの使用時にフラグメンテーションを使用しないようコンフィグレーションされました。この変更の結果、シンクライアントでトンネリングを使用するときにはパフォーマンスが最高で 30% 向上するはずです。

8.1 SP2

CR121005

基本型の valuetype ファクトリを登録することが必要な場合があります。WebLogic Server は valuetype のリポジトリ ID リストを発行することで登録を可能にしていましたが、その処理にはいくつかのバグがありました。また、IBM ORB もリポジトリ ID リストを送信します。

IIOP デコーダのバグは修正され、新しい IIOPBean プロパティである UseFullRepositoryIdList が導入されました。config.xmlUseFullRepositoryIdList プロパティを true に設定すると、WebLogic Server-IIOP ランタイムから valuetypeRepositoryId の完全なリストが送信されます。これで、C++ ORB ユーザはデコード用に基本型を登録できます。ただし、RepositoryId リストは JDK 1.4.x および旧バージョンの Tuxedo 8.1 では正しく処理されないので、このプロパティは例外的な状況でのみ設定してください。

8.1 SP2

CR121079

最初のリクエストを行うときに、8.1 バージョンの WebLogic Server-IIOP ランタイムはワイド文字列の転送に適切なコードセットを選択していませんでした。

現在は、すべてのリクエストでワイド文字列の転送に適切なコードセットが選択されます。WebLogic Server 8.1 との相互運用性は正しく機能するようになりました。

8.1 SP2

CR121309

WebLogic Server でワイド文字列の転送に適切なコードセットを選択するのを妨げる機能低下が WebLogic Server 8.1 に生じていました。常にデフォルトで UCS-2 が使用されていました。

現在は、コードセットの選択が適切に行われます。WebSphere などの外部 ORB との相互運用性が正しく機能するようになっています。

8.1 SP2

CR121501

Java to IDL 仕様では、

public interface FooInterface
{
   public void mymethod() throws IOException;
}

という形式のインタフェースを、抽象インタフェースとして扱うように求めています。ちょうど、

public interface FooInterface
{
   public void mymethod() throws RemoteException;
}

という形式のインタフェースがすでに抽象インタフェースとして扱われているようにです。

抽象インタフェースの検出ルーチンは、このタイプのインタフェースを正しく検出するように修正されました。このタイプのインタフェースは、シンクライアントや他の RMI-IIOP ORB と一緒に使用できるようになりました。

8.1 SP2

CR121897

WebLogic Server の IIOP 実装は、誤って String.class (クラスのインスタンスではなく、クラス自体) をシリアライズしていました。

String.class のシリアライゼーションは修正され、RMI-IIOP リクエストで使用できるようになりました。

8.1 SP2

CR122478

ORB.string_to_object() メソッドは、外部初期参照で誤って処理されていました。

この問題は、初期参照が生成された IOR で確実にコード化されるようにすることで解決しました。この変更の結果、ORB.string_to_object() メソッドは正しく機能するようになりました。

8.1 SP2

セキュリティ

変更
要求
番号

説明

修正されたリリース

CR085094

1 つの管理サーバと 1 つの管理対象サーバからなるドメインを作成した後で 2 つのサーバに対して -Djava.security.manager を有効にすると、java.io.Filepermissions エラーが返されました。このエラーは、AdminServer ログでは <Error> <EmbeddedLDAP> <000000> <Error parsing Entry #19: access denied (java.io.FilePermission.\myserver\ldap\ldapfiles\EmbeddedLDAP.data read)> と報告されていました。

この問題は、weblogic.policy ファイルの更新によって解決しました。このファイルには、ユーザ アプリケーションへのパーミッションの付与に関する情報と、grant 文の例が追加されました。weblogic.policy は、Weblogic Server のサンプル、Pet Store および Workshop で機能します。ユーザ コンフィグレーションで使用する場合は変更する必要があります。手順については、ファイルの最上部にあるコメントを参照してください。

7.0 SP3

8.1 SP2

CR095836

バックアップ時間のデフォルト値が正しく計算され、Administration Console で [ドメイン|ドメインのセキュリティ設定|組み込み LDAP] を選択すると表示されるようになりました。

7.0 SP3

8.1 SP2

CR096934

AuthenticationProvider の構築においてエラーが認識されませんでした。これは、AuthenticationMBI クラス コンストラクタによって送出された例外を WebLogic MBeanMaker が検出していなかったためです。

この問題は、コードを修正してエラーが確実に伝播されるようにすることで解決しました。

7.0 SP3

8.1 SP2

CR099759

WebLogic Server 7.0 SP2 では SSLUserInfo クラスに追加されていた weblogic.security.acl.SSLUserInfo.getCertificates() メソッドが、8.1 および 8.1 SP1 では追加されていませんでした。

8.1 SP2 の SSLUserInfogetCertificates() メソッドが追加されました。

8.1 SP2

CR101652

以前のリリースの WebLogic Server では、XML サーバが SSL プロトコルをサポートしていないためにサードパーティ XML サーバとのセキュアな接続を確立できませんでした。

次の回避策を利用できます。

    1. WebLogic クライアント (WebLogic Server にデプロイされた JavaServer Page (JSP)) を作成します。

    2. Java 仕様に従って Java 認証プロバイダ クラスを作成します。 この認証プロバイダは、XML サーバに接続するために使用するユーザ名とパスワードを取得する必要があります。

    3. weblogic.policy ファイルで Java 認証プロバイダ クラスにネット パーミッションを指定します。 そのネット パーミッションは、Java VM のすべてのユーザに与えられます。これはセキュリティ上の弱点を生じさせる恐れがあるので、慎重に行ってください。

    4. java.net.HttpConnection を使用して、XML サーバとの接続を確立します。

    5. WebLogic Server 起動時のコマンドライン引数として -DUseSunHttpHandler を指定します。

7.0 SP3

8.1 SP2

CR103405

SSL の初期化が、Not listening for SSL, java.io.IOException: Inconsistent security configuration, null エラーで失敗していました。この問題は、サーバ証明書の解析の結果、モジュールおよび指数が null だった場合に発生していました。

RSAKey.toString() は、null 値をチェックしていなかったため、null のメンバー変数の toString() メソッドを呼び出そうとしていました。これが原因で、メソッドが NullPointerException で失敗しました。

この問題は、toString() メソッドを変更して null 値がチェックされるようにすることで修正されました。

8.1 SP2

CR105234

Active Directory でユーザおよびグループを一覧表示しようとすると WebLogic Server Administration Console がハングしました。

この問題は、LDAP の結果で接続がハングするために発生し、そうした結果が繰り返し発生する問題の原因となっていました。

検索結果で接続が解放されるようにコードを修正し、新しい Netscape オープン ソース API にアップグレードしました。この修正の結果、ユーザおよびグループを一覧表示しても Administration Console がハングしなくなりました。

8.1 SP2

CR106027

http://dev2dev.bea.com/resourcelibrary/advisoriesnotifications/BEA03-28.01.jsp のセキュリティ勧告を参照してください。

7.0 SP3

8.1 SP2

CR106357

複数の認可プロバイダがインストールされていると、Web アプリケーションでセキュリティ ポリシーを定義できませんでした。

この問題は修正されています。

7.0 SP3

8.1 SP2

CR106404

特殊文字 (「&」、「(」、「)」、または「*」) を含むユーザを作成した場合、ユーザは組み込み LDAP サーバに作成されますがエラー メッセージが表示されました。たとえば、myuser&( という名前のユーザを作成すると、次のようなエラー メッセージが表示されました。

weblogic.management.utils.NotFoundException: User or Group myuser&(

ユーザ myuser&( は組み込み LDAP サーバに追加されますが、その後はコンソールにユーザが表示されなくなりました。

この問題は、組み込み LDAP サーバからユーザを取得する際に特殊な文字がエスケープされるようにすることで解決しました。これにより、名前に特殊な文字を含むユーザを作成した場合でも正しく表示されます。これで、特殊な文字を含むユーザ名を正常に作成し、コンソールに表示できるようになりました。

8.1 SP2

CR108886

リクエストを WebLogic Server インスタンスに送信するクライアントは、返される SOAP 応答を解析できていませんでした。

この問題は、WebLogic Server が静的変数を使用して、ランタイムが SOAP エンベロープに使用するプレフィックスを保持していたことが原因です。

出力ストリームは、ストリームから SOAP ネームスペースのプレフィックスを取得するようになりました。WebLogic Server は、SOAP スタックで現在使用されているネームスペースを探します。優先される SOAP エンベロープ ネームスペースを顧客が指定できるようにする SecureSoapOutputStream コンストラクタもあります。

8.1 SP2

CR112886

ヘッダの ID アサーション命名規約 (WL-PROXY-CLIENT-*) が、WL-PROXY-CLIENT-KEYSIZEWL-PROXY-SECRET-KEYSIZE、および WL-PROXY-CLIENT-IP と衝突していました。

これらのヘッダを ID アサーション ヘッダとしてフィルタ処理することで、Client-Cert ID アサーション エラーを回避できました。

7.0 SP4

8.1 SP2

CR113459

ノード マネージャ プロパティ ファイルが、常に <saved logs dir>/NodeManagerInternal ディレクトリに作成されていました。定期的に NodeManagerInternal 内のファイルをアーカイブおよび削除する場合、ノード マネージャ プロパティ ファイルは削除されますが、その中の証明書パスワードの暗号化を解除できなくなり、ノード マネージャが適切に動作しなくなっていました。

この問題は、ノード マネージャ プロパティ ファイルが NodeManagerInternal または user.dir に見つからない場合には、user.dir で指定したディレクトリに作成されるようにコードを修正することで解決しました。

6.1 SP6

8.1 SP2

CR120265

スタンドアロンのクライアント アプリケーションで webserviceclient.jarssl.jar を使用すると、呼び出しのたびに SOAP エンベロープ全体が stdout に書き込まれました。この問題は、コマンドラインまたはプログラムで verbose モードを無効にしようとしても解決できませんでした。

この問題は、HttpUrlConnection が不要なログを出力していたために発生していました。このロギングを削除したことで、HttpURLConnection からの Post データが system.out に出力されなくなりました。

8.1 SP2

CR120460

モニタ製品 ServerIron は、サーバの状態チェックの間に SSL ポートにリクエストを送信します。この状態チェックの間、SSLIOConect オブジェクトと、関連する SSL オブジェクトは解放されず、メモリ不足エラーが生じていました。

この既知の問題はこのリリースで修正されます。

7.0 SP2

8.1 SP2

CR123801

MedRec サンプル アプリケーションが拡張され、LoginModule での ID アサーションがサポートされました。

8.1 SP2

CR125446

SSL Web サービスを使用すると、ソケットのプーリングが無効になるために WebLogic Server 7.0 のパフォーマンスが低下しました。

WebLogic Server 7.0 では、SSL ソケットが Web サービス ランタイムのスレッドセーフ ソケット プール (VM 内のすべての呼び出しで共有するシングルトン) にプールされていました。これが、SSL クライアント認証を使用している場合に問題の原因になるおそれがありました。アプリケーション内で ID の異なる複数のクライアントがこのサービスを使用すると、2 番目のクライアントが 1 番目のクライアントから SSL ソケットを取得する可能性があり、その場合でもこのソケット上の接続で使用する ID は 1 番目のクライアントの ID のままとなります。このクライアントをサーバ設定で使用すると、誤った ID で認証されている間にトランザクションが発生し、特権のないユーザが特権を必要とするアクションを実行できてしまうという深刻な問題が発生するおそれがあります。

共有ソケット プールを、HTTPS バインド内の単一のクライアントでのみ共有する単一のソケットに置き換えました。ソケットの共有はデフォルトで無効になっていますが、システム プロパティまたは新たに提供される API を使用して有効にできます。

ソケットの共有が無効になっていること除けば、デフォルトの動作特性は WebLogic Server 8.1 でも同じです。ソケットの共有を有効にすると、連続する複数の呼び出しで同じソケットを共有できますが、以下の特性があることを理解しておく必要があります。

  • クライアント スタブを生成した Web サービスはスレッドセーフになります。このソケット共有機能が有効になっていると、クライアントはスレッドセーフできません。したがって、ユーザがクライアントのアクセスを複数のスレッドで管理しなければなりません。

  • クライアントのセキュリティ プロパティ (クライアント証明書、ソケットの共有など) を慎重に検討する必要があります。また、JVM リソースも拘束されるため、ユーザがソケットを閉じなければなりません。

  • ソケットの共有はデフォルトで「false」です。システム プロパティ https.sharedsocket (boolean 型) を使用するとソケットの共有を有効にできます。また、API である setSocketSharing(ブール値) (weblogic.webservice.binding.https.HttpsBindingInfo で参照) を使用して有効にすることもできます。ソケット共有のタイムアウト値は秒単位です。タイムアウト値を設定するには、システム プロパティ https.sharedsocket.timeout を使用します。デフォルトのタイムアウト値は 15 秒です。ソケット共有のタイムアウト値は、API である setSharedSocketTimeout(long 値) を使用して設定することもできます。値は秒単位で指定します。共有ソケットを閉じるには、void closeSharedSocket() を使用します。

8.1 SP2

CR125457

8.1 SP2

CR125829

http://dev2dev.bea.com/resourcelibrary/advisoriesnotifications/BEA03_42.00.jsp のセキュリティ勧告を参照してください。

8.1 SP2

CR190838

WebLogic Server バージョン 8.1 で使用される SUN JDK 1.4 では、2048 ビットより大きな RSA キーがサポートされません。そのため、4096 ビットのキーを持つ証明書を使用できません。


サーブレットと JSP

変更
要求
番号

説明

修正されたリリース

CR084785

ラップされた応答を GenericProxyServlet で処理できるようになりました。

6.1 SP4

8.1 SP2

CR088525

これまでの WebLogic Server 8.1 サービス パックでは、値が「/////」の JSP パラメータは、getParameter() によって値「/」と解釈されました。

この問題は、コードを修正することで解決しました。

7.0 SP3

8.1 SP2

CR090465

Web アプリケーションをユーザ定義のエラー ページでホストすると、WebLogic Server からの応答として次のような 400 エラーが返され、接続が Connection: close ヘッダなしで即座に閉じられました。

HTTP/1.1 400 Bad Request Date: Thu, 01 Jan 1970 00:00:00 GMT Content-Length: 463 Content-Type: text/html Last-Modified: Thu, 07 Nov 2002 21:56:52 GMT <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html>

この問題は、コードを修正することで解決しました。

6.1 SP5

8.1 SP2

CR091472

サーバによって weblogic.Deployer に伝播された JSP コンパイル例外には、スタック トレースだけで、正確なエラー メッセージがありませんでした。

JSP エラーの含まれる正確なコンパイル エラーが、weblogic.Deployer に伝播されるようになりました。 したがって、例外にはより詳しい情報とコンテキスト情報が含まれています。

8.1 SP2

CR091831

POST メソッドを使用したときにキープアライブ接続がサーバサイドでタイムアウトしたかどうかが、HttpURLConnection の WebLogic Server 実装でチェックされませんでした。そのため、フラッシュ時に Connection aborted by peer: socket write error が発生しました。

この問題は、サーバでキープアライブを無効にすることで解消できました。ただし、キープアライブ期間を長くすると、長さが異なるスリープで問題が発生しました。

タイムスタンプを更新する前に HttpClient が null でないことを確認するためのチェックを追加しました。

7.0 SP3

8.1 SP2

CR092039

JSP タグの charset に余分な引用符の付いた値を指定すると、JspParser によって UnsupportedEncodingException が送出されました。

<%@ page contentType="text/html; charset=\"Shift_JIS\"" %>

その結果、次のエラーが発生しました。

java.lang.RuntimeException: Unknown/unsupported charset: "Shift_JIS" - java.io.UnsupportedEncodingException: Charset: '"Shift_JIS"' not recognized, and there is no alias for it in the WebServerMBean

WebLogic Server で、HTTP 仕様が正しくサポートされていませんでした。

この問題は、Content-Type ヘッダの charset 属性値に、引用符で囲まれた文字列およびコメントのサポートを追加することで解決しました。

6.1 SP5

8.1 SP2

CR092625

HTTP ロギングが無効な状態で起動されたためにログ ファイルが存在しない管理対象サーバで HTTP ロギングを有効にすると、WebLogic Server によって NullPointerException が送出されました。管理対象サーバへの HTTP アクセスのたびに、次の例外が送出されました。

java.lang.NullPointerException at
weblogic.servlet.logging.LogManagerHttp.log(LogManagerHttp.java:292) at
weblogic.servlet.internal.HttpServer.log(HttpServer.java:865) at
weblogic.servlet.internal.ServletResponseImpl.send(ServletResponseImpl.java:1044) at
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2265) at
weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139) at
weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)

この問題は、コードを修正することで解決しました。

6.1 SP6

8.1 SP2

CR093014

1 つのスクリプトレットで始まり、その次の 1 つの句で終わる Java コメントはエラーになりました。

<22.07.2002 14:12:24 CEST> <Error> <HTTP>

<[WebAppServletContext(7422744,DefaultWebApp,/DefaultWebApp)] Servlet failed with Exception weblogic.servlet.jsp.JspException: (line 12): scriptlet close brace '}' unbalanced at line 12 which breaks scope '_base_service_scope_' at ....

この問題は、WebLogic Server 7.0 の文法をバックポートし、ScriptletScopeLexer が Java コメント全体をスキップするようにすることで解決しました。

6.1 SP5

8.1 SP2

CR093520

特定のタイムゾーン内のマシンで JSP をあらかじめコンパイルし、それらの JSP を別のタイムゾーンのサーバにデプロイすると、JSP が再コンパイルされることがありました。この問題が発生したのは、WebLogic Server が JSP のローカル タイムスタンプ (JAR ユーティリティによって組み込まれたもの) と生成されたクラス ファイル内のタイムスタンプを比較して JSP をチェックしていたことが原因です。

この問題は、コンパイル時のタイムゾーンを記録し、デプロイ時にこのタイムゾーンを使用して再コンパイルが必要かどうかを識別することで解決しました。

6.1 SP6

8.1 SP2

CR093625

WebLogic Server が、JSP ページの JSP include の出力を間違った方向へ導いていました。この問題は、include、forward、wrapped-response、および JSP BodyTag の処理を統一するようにサーブレット エンジンを修正して解決しました。

6.1 SP5

8.1 SP2

CR093649

ejb2jsp ユーティリティが、String 以外のパラメータ型を含むメソッドで、誤ったタグ クラスを生成していました。

この問題は、タグ ライブラリ ジェネレータが getAttributeString ではなく getAttribute を使用するように修正することで解決しました。

7.0 SP3

8.1 SP2

CR094190

JVM の仕様によれば、メソッドのサイズ制限は 64KB です。WebLogic Server では、JSP で本体付きタグを多数使用すると、生成された Java コードが __jspService メソッドの 64KB 制限を超えてしまうことがありました。

この問題は、コードを修正することで解決しました。現在は、<my:tag ... /> 形式の空の BodyTag に遭遇した場合、通常その本体のスコープを設定する生成コードが、StandardTagLib.java の静的メソッドに対する 1 回の呼び出しに置き換えられます。その結果、BodyTag ではそれが JSP ソースから通常どおりに呼び出されているものと判断されるようになります。

6.1 SP5

8.1 SP2

CR094252

エラー メッセージや警告メッセージをステージングされた WAR ファイルを使用して表示すると、デプロイされている実際の WAR/Web アプリケーションの解読が難しくなりました。

すべての記述子検証メッセージで、常にアプリケーション名がモジュール名に付加されるようになりました。この修正の結果、エラー メッセージのレイアウトが変更されています。これ以外の影響は想定されていません。

8.1 SP2

CR094997

相互に対話する 2 つの Web アプリケーションで異なるセッション クッキー名を使用すると、セッション ID が消失しました。

分析の結果、Web アプリケーションが cookieName を指定する際に、セッション属性が正しく更新されていなかったことが判明しました。別の Web アプリケーションのリソースが含まれ、外部リソースを追加する前のリクエストに RemoteUser が存在していました。

この問題は、コードを修正することで解決しました。

6.1 SP5

8.1 SP2

CR096041

WebLogic Server では、ウェルカム ファイルを返す際にリダイレクト (HTTP ステータス コード 302) が使用されなくなりました。

WebLogic Server の 8.1 SP2 および 7.0 SP4 より前のバージョンではステータス コード 302 (一時的移動) とウェルカム ファイルの場所が返されていました。

WebLogic Server の 8.1 SP2、7.0 SP4 およびそれ以降のバージョンでは、ウェルカム ファイルの内容の表示と共にステータス コード 200 (OK) が返されます。

この変更によって WebLogic Server のパフォーマンスは向上しましたが、ウェルカム ファイルの相対 URL が別の場所を指している場合に 404-Not Found エラーになることがあります。

7.0 SP4

8.1 SP2

CR096399

JSP コンパイル エラーが正しく処理されませんでした。フィルタが HttpServletResponseWrapper getWriter ではなく OutputStream と通信していました。その結果、次のエラーが発生していました。

java.lang.IllegalStateException: strict servlet API: cannot call getWriter() after getOutputStream() at weblogic.servlet.internal.ServletResponseImpl.getWriter(ServletResponseImpl.java:171) at weblogic.servlet.internal.ServletRequestImpl.reportJSPFailure(ServletRequestImpl.java:227) at weblogic.servlet.internal.ServletRequestImpl.reportJSPCompilationFailure(ServletRequestImpl.java:239) at weblogic.servlet.jsp.JspStub.reportCompilationFailure(JspStub.java:523) at weblogic.servlet.jsp.JspStub.compilePage(JspStub.java:430) at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:210) at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:164) at weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.java:517) at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:351) at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:445) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:20) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) at WebLogic ServerBugFilter.doFilter(WebLogic ServerBugFilter.java:27) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:5418) at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:744) at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3086) at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2544) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:153) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:134)...

WebLogic ServerBugFilter.doFilter after

この問題は、ラッパー対応の RequestCallback を実装することで解決しました。

7.0 SP3

8.1 SP2

CR096459

HTTP 1.0 でサーブレットまたは JSP 内のフラッシュを呼び出すとソケットがうまく閉じない場合があり、ソケットがタイムアウトになるまでクライアントが待機する原因となっていました。

この問題は、コードを修正することで解決しました。

6.1 SP6

8.1 SP2

CR098388

リスン スレッドが要求の受信を開始する前に MBean によるサーバ状態の更新が行われていなかったために、サーバの起動直後に一部のサーバ要求が拒否されていました。

この問題は、Web コンテナ内でブール値のフラグを使用し、リスン スレッドのサーバ状態を更新することで解決しました。

7.0 SP3

8.1 SP2

CR098518

EJB/Web アプリケーションを次のように設定すると、クラス キャスト例外が発生していました。

Servlet Filter1 --> WebApp1 -- forward to WebApp2 ctx --> Servlet

Filter2(WebApp2) --> Ejb Lookup (fails)

この問題は、2 つの Web アプリケーション間で転送を実行するときに、サーブレット フィルタの代わりにサーブレット内の EJB ルックアップを使用することで解決しました。

7.0 SP3

8.1 SP2

CR101838

CGIServlet の動作が変更されていたため、ファイル名に拡張子がない CGI スクリプトの実行に影響するおそれがありました。たとえば、ファイル web.xml で CGI ディレクトリを定義し、サーブレット マッピングを次のようにしたとします。

<param-name>cgiDir</param-name>
<param-value>/home/user/cgi-bin</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>CGIServlet</servlet-name>
<url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>

この場合、myscript というスクリプトを /home/user/cgi-bin ディレクトリに格納すると、http://localhost/mywebapp/cgi-bin/myscript のような URL は、スクリプト名を指定しないと /home/user/cgi-bin にマップされました (この問題は、myscript.ksh のように拡張子を付けたスクリプトでは発生しませんでした)。

CGIServlet の動作が以前のリリースと一致するようにコードを修正しました。上記の例であれば、URL http://localhost/mywebapp/cgi-bin/myscript/home/user/cgi-bin/myscript にマップされるようになりました。

6.1 SP6

8.1 SP2

CR102036

削除後の JSP ページに初めてアクセスすると、404 File Not Found エラーではなく、JspFileNotFoundException 例外が発生していました。2 回目以降のアクセスでは、問題なく 404 が返されました。

この問題が解決され、削除された JSP にアクセスすると常に 404 が返されるようになりました。

7.0 SP3

8.1 SP2

CR102628

次のような JSP コードを実行すると、

<jsp:plugin type="applet"
 code="examples.applets.PhoneBook1.class"
 codebase="/bea_WebLogic  
 Server_internal/classes/DefaultWebApp@DefaultWebApp/"
 height="800" width="500" type="applet" jreversion="1.3.1_06"
 nspluginurl="http://java.sun.com/products/plugin/1.1.3/plugin-install.html";
 iepluginurl="http://java.sun.com/products/plugin/1.1.3/jinstall-113-win32.cab#Version=1,1,3,0" >

次の HTML が生成されていました。

<embed type="application/x-java-applet;version=1.3.1_06"
 pluginspage="http://java.sun.com/products/plugin/1.1.3/plugin-install.html"; height="800" width="500"
 code="examples.applets.PhoneBook1.class"
 codebase="/bea_WebLogicServer_internal/classes/DefaultWebApp@DefaultWebApp/">

生成された HTML コードは、Netscape では SUN のサイトではなく WebLogic Server からプラグインをダウンロードしようとするためうまく表示されませんでした。

プラグイン ページの行を codebase 行の前に移動すると、Netscape でも正常にコードを実行できました。

この問題は、アプレット属性の順序が正しくなるようにコードを修正したことで解決しました。

6.1 SP6

8.1 SP2

CR102675

2 番目のページを含むページで taglib ディレクティブを使用して taglib をインポートし、2 番目のページでも同じ taglib をインポートすると、XML が無効なために browser output: が次のようになっていました。

Error 500--Internal Server Error From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1:

10.5.1 500 Internal Server Error The server encountered an unexpected condition which prevented it from fulfilling the request.

また、ログ ファイルには次のように出力されていました。

<[ServletContext(id=287644,name=jspVal.war,context-path=/jspVal)] Servlet

failed withIOException java.io.IOException: javax.servlet.jsp.JspException: The taglib validator

rejected the page: "Exception TestValidator XML parsing: org.xml.sax.SAXParseException:

Attribute "xmlns:valtest" was already specified for element "jsp:root". -- stack trace written to stderr., "...

コードを weblogic.servlet.jsp.jsp2xml.Jsp2XmlOutputter のように修正したことで、JSP の XML ビューの生成において重複するタグ プレフィックスが無視されるようになりました。

7.0 SP3

8.1 SP2

CR102769

サーブレットまたは JSP からのリクエストを別の JSP ページに転送しても、access.logqueryString のログが記録されませんでした。また、転送されたリクエストのログは access.log に記録されましたが、元のリクエストのログは記録されませんでした。

この問題は、コードを RequestDispatcherImpl のように修正することで解決しました。

7.0 SP3

8.1 SP2

CR103256

コードを変更したことで、JDBC の JDBCSessionContext および JDBCSessionData 内のバブル キャッシュに関係したパフォーマンスが向上しました。

6.1 SP6

8.1 SP2

CR103304

jsp_precompile が、拡張されたカスタム クラスを含むすべての JSP で機能するようになりました。

7.0 SP4

8.1 SP2

CR103214

JSP パラメータ compilerclass を設定すると、起動ログに次のような compilerclass=null メッセージが記録されていました。

JSPServlet with initArgs '[JspConfig:
verbose=true,packagePrefix=jsp_servlet,-compiler= C:\61sp4\jdk131/bin/javac,compileFlags=,workingDir=C:\61sp4 wlserver6.1\config\examples\applications\examplesWebApp\WEB-INF\_tmp_war_examples_examplesWebApp, pageCheckSeconds=1,superclass=weblogic.servlet.jsp.JspBase, keepgenerated=false,precompileContinue=false, compilerSupportsEncoding=true,encoding=null,defaultfilename index.jsp,compilerclass= null,noTryBlocks=false]'>

この問題は、起動時に compilerclass の設定が使用されていたために発生していました。JSP のコンパイルでは正しい設定が使用されていました。サーバの起動時に正しいパラメータ値が取得されるようにコードを修正しました。

6.1 SP6

8.1 SP2

CR103339

サーブレットの出力において、Transfer-Encode の値が「Chunked」と大文字になっていました。HTTP/1.1 仕様では小文字で「chunked」とする必要があります。コードを修正したことで、Transfer-Encode タイプが小文字で「chunked」と出力されるようになりました。

6.1 SP6

8.1 SP2

CR103719

ユーザが HTTPS を使用して保護されたページにログインすると、クライアントは JSESSION および _wl_authcookie_ という 2 つのクッキーを受信します。サーバが _wl_authcookie_ なしで 2 つめのリクエスト (HTTPS) を保護されていないページに送信すると、401 エラーが返されていました。

ブラウザ クライアントが _wl_authcookie_ を返信しないと保護されていない (つまり、セキュリティ制限のない) HTTPS ページへのアクセスが拒否される問題は修正されました。保護されていないページでクッキーが要求されることはなくなりました。

8.1 SP2

CR103861

WebLogic Server では親ディレクトリが解決されなかったため、相対パスでデプロイされたアプリケーションで UnsafeFilenameExceptions が発生していました。

コードを修正したことで、WebLogic Server が安全なファイル名を取得しようとすると、最初に親ディレクトリがチェックされて必要に応じて解決されるようになりました。

8.1 SP2

CR106072

JSP ファイルが変更されたために再コンパイルする必要があるかどうかをチェックする間隔を秒単位で設定する pageCheckSeconds 属性が、JSP を初めて変更したときには機能していませんでした。

この問題は、JSP が初めて呼び出されたときに WebLogic Server が lastStaleCheck の時刻を設定していなかったために発生していました。

コードを修正したことで、lastStaleCheck が設定されていなくても、現在の時刻が設定されるようになりました。これにより、JSP が無駄に再コンパイルされることがなくなりました。

8.1 SP2

CR106226

応答ラッパーを使用し、JSP に渡された元の応答で getOutputStream を呼び出すコードを実行すると、NestedBodyResponse で常に IllegalStateException が送出されていました。

NestedBodyResponse から getWriter()getOutputStream() を一緒に使用できないようしました。これにより、例外が誤って送出されることがなくなりました。

8.1 SP2

CR106577

WebLogic Server の以前のリリースでは、URI に余分なスペースを含む要求も、末尾のスペースを削除して処理していました。WebLogic Server 8.1 SP2 では、URI に余分なスペースが含まれていると 404 エラー (Resouce Not Found) が発生するようになりました。

次に例を示します。

http://server:port/mywebapp/foo%20%20

これを使用して、Web アプリケーション mywebapp 内のリソース foo を解決します。この URI は 404 エラーになります。

下位互換性の問題は予期されていません。

8.1 SP2

CR106856

アプリケーションでサーブレットのフィルタ処理を使用している場合、リクエスト ディスパッチャを使用して転送またはインクルードを実行すると、要求がフィルタを通じて再実行され、無限ループが発生していました。この動作は 2.3 サーブレット仕様では未定義です。2.4 サーブレット仕様では、要求ディスパッチャを使用する場合は転送またはインクルードに対する要求をフィルタ処理し直さないのがデフォルトの動作とされています。

filter-dispatched-requests-enabled コンフィグレーション パラメータを weblogic.xml に追加して、サーブレットのフィルタ処理を制御できるようにしました。

8.1 SP2

CR107419

JSP コードでパラメータの値として 2 バイト文字を設定すると問題が発生していました。たとえば、次のようなコードでは、

<jsp:include page="included.jsp">
 <jsp:param name="title"
  value="<%= java.net.URLEncoder.encode(\"[double byte   characters]\")
 %>"/>
</jsp:include>

2 バイト文字が URL エンコーディングされたコードに変換されていました。

この問題は解決されています。

6.1 SP6

8.1 SP2

CR108046

JDK 1.4 に存在する getHeaderFields() メソッドが、weblogic.net.http.HttpURLConnection に実装されていませんでした。このため、weblogic.net.http.HttpURLConnection.getHeaderFields() が空のマップを返していました。

getHeaderFields() の実装が weblogic.net.http.HttpURLConnection に追加されました。この修正の結果、weblogic.net.http.HttpURLConnection.getHeaderFields() がヘッダ フィールドのマップを正しく返すようになりました。

8.1 SP2

CR108607

アプリケーションが XSL で FOP 出力メソッドを使用してアーカイブ ファイルから画像を取得すると、WebLogic Server がエラーを生成していました。この問題は、展開形式でデプロイされたアプリケーションでは発生していませんでした。

この問題は、コードを修正することで解決しました。

6.1 SP6

8.1 SP2

CR109479

JnlpDownloadServlet は、WAR ファイルのタイムスタンプを利用して、クライアントのリソースが Web サーバ上のものより古いかどうかを判断します。タイムスタンプを取得するため、JnlpDownloadServletURLConnection.getLastModified() メソッドを呼び出します。しかし、getLastModified() メソッドからは 0 が返されていました。

ZipURLConnection.getLastModified() メソッドが zip ファイルの (したがって WAR ファイルの) 更新時刻を返すようにコードが修正されました。

7.0 SP5

8.1 SP2

CR109586

起動時にロードされるサーブレットが、カーネル ユーザとして構築 (静的なイニシャライザーおよびコンストラクタ) されていました。

静的なイニシャライザー、コンストラクタ、および init メソッドは、以下として呼び出されるようになりました。

  • init-as ユーザ (指定されている場合)

  • run-as ユーザ (指定されている場合)

  • 匿名ユーザ

8.1 SP2

CR109821

負荷の大きな IO 処理を必要とする IndexFile の解決が、ディスパッチ前のフェーズ (マルチプレクサ キュー) で発生していました。

コードを修正したことで、この解決がディスパッチ フェーズの後に延期されるようになりました。

8.1 SP2

CR109958

プロキシ サーブレットを使用してリクエストを処理する場合に、WebLogic Server は HTTPS を使用する受信リクエストでのみ SecureProxy 設定を尊重していました。受信リクエストが HTTP を使用する場合、プロキシ サーブレットで SecureProxy が有効になっていても WebLogic Server は HTTPS 接続を使用しませんでした。この問題は、コードを修正することで解決しました。

6.1 SP6

8.1 SP2

CR110293

セッション数のカウントは概算ですが、サーバの再起動時に 0 に初期化されていませんでした。また、インクリメントとデクリメントが同期していませんでした。このため、競合状態が発生して正確にカウントされませんでした。さらに、レプリケートされたセッションは、becomePrimarybecomeSecondary、および becomeUnregistered コールバックではインクリメントおよびデクリメントされていませんでした。

コードを修正したことで、メモリおよびレプリケートされたセッションのカウントがマップから直接取得されるようになりました。ファイルベースのセッションの場合はファイル システムから、JDBC の場合はデータベース クエリ経由でカウントが取得されます。この修正の結果、セッション数が正確にカウントされるようになりました。ただし、実行時 MBean が返すカウントが 2 つ増えたことに注意してください。

    1. これまでにサーバが開いたセッションの総数

    2. メモリ内のオープン セッションの最大数

この変更は、これら 2 つのカウントには影響しません。インクリメントとデクリメントの方法はこれまでどおりです。これらのカウントは概算で、サーバの再起動以降の数を表します。これらは、サーバの再起動後に 0 にリセットされます。

8.1 SP2

CR110914

TrackingEnabledfalse に設定されていると要求ごとに新しいセッションが作成されますが、それらのセッションが無効にされていませんでした。

コードを修正したことで、TrackingEnabledfalse に設定されているとセッションが即座に無効になるようになりました。これが正しい動作です。

8.1 SP2

CR111406

セッション データが再デプロイメントの後にアクセスされる場合は、save-sessions-enabled プロパティが true に設定されていても、java.lang.NoClassDefFoundError が発生していました。

この問題は、コードを修正することで解決しました。

8.1 SP2

CR111600

ユーザが誰もログインしていないと、request.isUserInRole メソッドが WebLogic Security フレームワークのロール マネージャのセキュリティ ロールをクエリしていませんでした。

ユーザが誰もログインしていなくても、request.isUserInRole メソッドがロール マネージャのセキュリティ ロールをクエリするようになりました。

8.1 SP2

CR112413

Web アプリケーション コンテナは、修正されたサーブレット クラスを動的に再ロードするときに、古いインスタンスで destroy() メソッドを呼び出します。しかし、Web アプリケーション クラスローダでは、destroy がスレッドの ContextClassLoader として呼び出されていませんでした。

コードを修正したことで、Web アプリケーション クラスローダでは destroy() メソッドが常にスレッドの ContextClassLoader として呼び出されるようになりました。

8.1 SP2

CR112547

クラスタ内のサーバの数が多いと、すべてのサーバに同じプロパティをコンフィグレーションするのが困難でした。

これを容易にするため、ClusterMBean のプロパティ FrontendHostFrontendHTTPPort、および FrontendHTTPSPort がエクスポーズされました。ClusterMBean の値は、クラスタ内のサーバのデフォルト Web サーバに対してのみ有効です。仮想ホスト プロパティは別途設定する必要があります。この修正でこれまでの動作が変更されることはありません。

8.1 SP2

CR112799

IOException が発生した後にも、WebLogic Server が出力ストリームに書き込みをしようとしていました。このため、IOException を処理しない Web アプリケーションで予期せぬソケットの切断が発生すると、CPU 使用率が 100% になるおそれがありました。

org.apache.xml.serialize.XMLSerializer は、そのプロセスが終了するまで IOException を無視します。このため、HTTP 応答の一部として XML ドキュメントを返している最中に IOException が送出されると、この問題が発生していました。

コードを修正したことで、IOException が発生した後は出力ストリームへの書き込みが停止するようになりました。

6.1 SP6

8.1 SP2

CR112803

appc の実行時、参照先となる EJB の JNDI 名へのマッピングが ejb-ref にないことを示す例外が誤って送出されていました。

この問題は、Web アプリケーション準拠チェッカーのロジック エラーが原因で発生していました。

ロジックを訂正したことで、weblogic.xml 内の対応する JNDI 名のマッピングが web.xml で宣言された ejb-ref にある場合は正しく認識されるようになりました。この結果、appc を実行しても、誤ってこの例外が送出されることはなくなりました。

8.1 SP2

CR112992

XML スキーマ キャッシングが有効になっている状態で JSP が更新されると、次のような例外が送出されていました。

weblogic.servlet.jsp.JspException: (line -1): cannot load TLD: weblogic.xml.dom.ChildCountException: missing child tagclass in tag ...

この問題は、キャッシングでエンティティが解決されないため、TLD が 1.2 であっても TLDDescriptor では 1.1 と認識されることが原因で発生していました。

TLDDescriptor コンストラクタがブール値 flag _12org.w3c.dom.Element をとるようにすることで、Document.getDoctype() を呼び出してドキュメントのタイプを調べるようにしました。

8.1 SP2

CR114936

クライアントが処理中の要求をキャンセルしても、WebLogic Server が入力ストリームを排出していました。このために CPU リソースが消費されていました。

コードを修正したことで、接続が破棄されて入力ストリームが排出されないようになりました。この修正の結果、クライアントへの書き込み中に IOException が発生しても、GenericProxyServer はこの接続を再利用せず、後続のリクエスト用に新しい接続を作成するようになりました。

7.0 SP5

8.1 SP2

CR116209

シリアライズ可能な ServletContext 属性を追加し、これをシリアライズできない値で上書きすると、元の値が新しい値をマスクしていました。この問題は、属性ハッシュテーブルから古い値が削除されないことが原因で発生していました。

コードを修正したことで、シリアライズ可能な値をシリアライズできない値で上書きすると、必要に応じて属性ハッシュテーブルから古い値が削除されるようになりました。

8.1 SP2

CR111752

特定の状況では、useByteStream パラメータが true に設定されている状態で CGIServlet を使用するときに WebLogic Server は NullPointerException を送出していました。この問題は、1 つのフレームに静的 URL リンクが含まれ、別のフレームで CGIServlet が使用されているフレームセットの使用時に発生していました。もう一方のフレームがページのダウンロードを完了する前に静的リンクの含まれているフレームをユーザが選択すると、IO 例外が捕捉され、次のように表示されていました。

java.lang.NullPointerException at
weblogic.utils.Executable$Drainer.run(Executable.java:366)

この問題は、コードを修正することで解決しました。

6.1 SP6

8.1 SP2

CR120630

Weblogic Portal 8.1 では、ServletRequestWrapper を拡張する ServletRequest を使用して RequestDispatcher.include() メソッドを何度も呼び出します。WebLogic Server で ServletRequestWrapper オブジェクトを処理するにはキャストを実行する必要があります。RequestDispatcherImpl.include() メソッドでは、参照された ServletRequest オブジェクトが ServletRequestImpl クラスのインスタンスでない場合は、このキャスト処理が試行されて ClassCastException が捕捉されていました。このため、許可されていないキャストによって生成される例外の負荷が大きく、WebLogic Portal 8.1 のパフォーマンスが低下していました。

コードを修正したことで、ClassCastException の代わりに instanceof 演算子を使用して、特定のキャスト処理が許可されているかどうかが識別されるようになりました。

この修正の結果、weblogic.servlet.internal.RequestDispatcherImpl.forward() メソッドおよび include() メソッドでのフロー制御に instanceof 演算子が使用されるようになりました。

8.1 SP2

CR121748

補足ポリシーのサポートに問題があったため、アプリケーションをアンデプロイすると一時ディレクトリ (通常は JSP クラス ファイルを格納) が必ず削除されていました。一時ディレクトリは、アプリケーションが明示的に削除されない限り削除されるべきではありません。

この問題はコードの修正によって解決されました。

8.1 SP2

CR125108

WebLogic Server 6.x では、URL パタ-ン /foo*/foo と一致していました。これは、サーブレット 2.3 仕様では無効でした。

WebLogic Server 7.x では URLResource が追加されましたが、誤ってそのサポートが停止されていました。また、サーブレット コンテナの動作不良により、URL パターン /foo*fullyDelegateAuthorization フラグが無効になっていると機能し、有効になっていると機能しませんでした。これにより、WebLogic Server 6.x から 7.x または 8.x へのアップグレードでセキュリティが低下するおそれがありました。

この問題を修正したことで、パス マッピングには / で始まり /* で終わる文字列のみが使用されるようになりました。古いマッピングを使用している場合に備えて、<security-constraints><url-pattern>/foo* に設定されている Web アプリケーションはデプロイされないようにすることでセキュリティの脆弱性を回避しています。

この修正の結果、/foo* のような URL パターンは完全な一致として処理され、<security-constraints><url-pattern>/foo* に設定されている Web アプリケーションはデプロイされなくなりました。

8.1 SP2

CR126319

クラスタ内のサーバが (強制的に) 終了させられると、そのサーバはプライマリ セッションとセカンダリ セッションを無効化し、セッションのフェイルオーバが失敗に終わっていました。

サーバの停止でセッションが破棄されるときにクラスタのサイズをチェックするコードが用意されていました。つまり、サーバがクラスタ内の最後のサーバでない場合には、セッションは無効化されていませんでした。しかし、WebLogic Server は serverShutdown フラグを適切に渡さなかったので、チェック ロジックは無視されていました。

サーバの状態がチェックされ、セッションの破棄時にチェック ロジックが起動されるようにコードが修正されました。

8.1 SP2

システム管理

変更
要求
番号

説明

修正されたリリース

CR063279

WebLogic Server の config.xml 内の複数の要素が同じオブジェクト名になっている場合、2 番目以降の要素がそれ以前の要素のコンフィグレーションを上書きしていました。これに関するエラー メッセージが送出されていませんでした。エラー メッセージ (ID=150012) が標準出力に送出されるように修正しました。

7.0 SP3

8.1 SP2

CR099474

RequiredModelMBeangetAttributes() メソッドは javax.management.Attribute オブジェクトを含む javax.management.AttributeList を返す必要がありますが、WebLogic Server JMX 実装では RequiredModelMBean から返される AttributeListjavax.management.Attribute オブジェクトではなく直接 MBean 属性の値が含まれ、次の例外が発生していました。

java.lang.ClassCastException: java.lang.String at weblogic.management.internal.RemoteMBeanServerImpl.getAttributes(RemoteMBeanServerImpl.java:210) at weblogic.management.internal.RemoteMBeanServerImpl_WebLogic Serverkel.invoke(Unknown Source) at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:362) at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:313) at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:821) at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:308) at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:213) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:189)End server side stack trace at com.adventnet.beasupport.client.JMXConverter.convertInvocationTargetException(JMXConverter.java:744) at com.adventnet.beasupport.client.ProxyMBeanServer.getAttributes(ProxyMBeanServer.java:511) at com.adventnet.beasupport.client.WebLogicClient.getAttributes(WebLogicClient.java:593) at com.adventnet.beasupport.client.WebLogicClient.cmdline(WebLogicClient.java:1279) at com.adventnet.beasupport.client.WebLogicClient.access$000(WebLogicClient.java:15) at com.adventnet.beasupport.client.WebLogicClient$2.run(WebLogicClient.java:1293)

GetAttributes メソッドが Attribute オブジェクトを返すように修正されました。

7.0 SP3

8.1 SP2

CR100756

JMSServer の Store プロパティを、次のように weblogic.Admin ユーティリティで設定すると、

java weblogic.Admin -url t3://localhost:7001 -username system -password weblogic SET -mbean examples:Name=examplesJMSServer,Type=JMSServer -property Store examples:Name=examplesJMSFileStore,Type=JMSStore

次のような例外が発生していました。

<Mar 10, 2003 3:32:15 PM EST> <Error> <Management> <141033> <Error importing MBean examples:Name=examplesJMSFileStore,Type=JMSStore to server examplesServer.javax.management.InstanceNotFoundException: examples:Name=examplesJMSFileStore,Type=JMSStore

この問題は、コンフィグレーション MBean の WebLogicObjectName 属性の設定時にチェックを行うことで部分的に解決されました。コードでは、この Bean が有効なものかどうかをチェックし、InvalidAttributeValueException を送出します。これは管理サーバでのログオンであり、JMSServer は使用できる状態のままですがファイル ストア セットは存在しません。

7.0 SP3

8.1 SP2

CR105736

CR121053

SessionID の形式が変更されたため、Cisco Loadbalancer など一部のロード バランシング アプリケーションでセッションの固定が使用できなくなりました。

新しいサーバ起動フラグ (-Dweblogic.servlet.useExtendedSessionFormat=true) に、ロード バランシング アプリケーションがセッションを固定するために必要な情報が保持されるようになりました。

7.0 SP3

8.1 SP2

CR105777

RemoteException が高速キャッシングで値タイプとして扱われていなかったので、例外の伝播が正しく機能していませんでした。

本当の値タイプのみをキャッシュすることで問題は修正されました。

7.0 SP3

8.1 SP2

CR105831

展開された Web アプリケーションが docroot からクラスをロードできました。

この不適切なクラス ロードは実行できなくなりました。

7.0 SP3

8.1 SP2

CR106198

GroupReaderMBean で、メンバー名にカンマが含まれていると isMember が失敗しました。

この問題はコードを変更したことで解決し、カンマを含むメンバー名も使用できるようになりました。

7.0 SP3

8.1 SP2

CR106728

ログ ハンドラが、WLLogRecord インスタンスしかパブリッシュされていないと想定していました。ユーザが Java 1.4 ロギング API を使用してログを直接呼び出すと、ハンドラは weblogic.logging.WLLogRecord インスタンスではなく java.util.logging.LogRecord インスタンスを取得するため ClassCastException を送出していました。

java.util.logging.LogRecord が、ハンドラによる処理の前に WLRecord オブジェクトに変換されるようになりました。これにより ClassCastException は発生しなくなりました。これで、ユーザは Java 1.4 ロギング API を使用して JDK Logger を呼び出すことができ、メッセージがサーバ ログ ファイルに記録されるようになりました。

8.1 SP2

CR107805

CR109620

WebLogic Platform のクラスタでサーバが起動するときに、次のエラーが発生していました。

<Jun 18, 2003 4:46:53 PM EDT> <Error> <Management> <BEA-141009> <Error occurred in the file distribution servlet while processing request type "wl_ear_resource_request", java.net.SocketException: Software caused connection abort: socket write error. java.net.SocketException: Software caused connection abort: socket write error at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) at java.net.SocketOutputStream.write(SocketOutputStream.java:136) at weblogic.servlet.internal.ChunkUtils.writeChunkNoTransfer(ChunkUtils.java:263) at weblogic.servlet.internal.ChunkUtils.writeChunks(ChunkUtils.java:228) at weblogic.servlet.internal.ChunkOutput.flush(ChunkOutput.java:296) at weblogic.servlet.internal.ChunkOutput.checkForFlush(ChunkOutput.java:371) at weblogic.servlet.internal.ChunkOutput.write(ChunkOutput.java:241) at weblogic.servlet.internal.ChunkOutputWrapper.write(ChunkOutputWrapper.java:114) at weblogic.servlet.internal.ServletOutputStreamImpl.write(ServletOutputStreamImpl.java:171) at weblogic.management.servlet.FileDistributionServlet.returnInputStream (FileDistributionServlet.java:568) at weblogic.management.servlet.FileDistributionServlet.doGetEarResourceR equest(FileDistributionServlet.java:787) at weblogic.management.servlet.FileDistributionServlet.doGet(FileDistributionServlet.java:500) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run (ServletStubImpl.java:1053) at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387) at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio n.run(WebAppServletContext.java:6310) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118) at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3622) at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2564) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)

このソケット書き込みエラーは発生しなくなりました。

8.1 SP2

CR110161

WebLogic Server インスタンスに接続する weblogic.Admin コマンドでは、ユーザ資格を指定する必要があります。現在は、新しい STOREUSERCONFIG コマンドを使用して、コマンドラインで直接資格を渡したり、暗号化されていない資格をスクリプトに格納したりする代わりにユーザ資格を暗号化できるようになりました。詳細については、「STOREUSERCONFIG」を参照してください。

8.1 SP2

CR112123

WebLogic Server 8.1 以前のリリースでは、Weblogic MBean (SecurityConfigurationMBean) に Security MBean (RealmMBean) への参照を持たせることはできませんでした。その結果、レルムを SecurityConfigurationMBean の属性とすることができず、代わりにオペレーション (ゲッターではなくファインダ) にする必要がありました。この場合、Administrators グループのユーザしかオペレーションにアクセスできないという問題がありました (特殊なケースを除く)。

SecurityConfigurationMBean での findRealm() メソッドおよび findRealms() メソッドが特殊なケースとされるようになりました。この結果、これら 2 つのメソッドがパブリックにアクセスできるようになりました。

8.1 SP2

CR112324

wlconfigwldeploy、および wlserver の 3 つのコマンドが修正され、保護された場所からユーザ名とパスワードを取得できるようになりました。

wlconfig および wldeploy では、weblogic.Admin ツール用に記述されたユーザ コンフィグレーション機能を使用できるようになりました。STOREUSERCONFIG option wlserver コマンドでは、boot.properties ファイルを使用してユーザ名とパスワードを取得します。

この結果、管理者がユーザのコンフィグレーション ファイルやキー ファイル (wlconfig/wldeploy) を作成した場合や、サーバがドメイン (wlserver) 内で少なくとも 1 度起動されている場合であれば、ant スクリプトではユーザ名とパスワードを省略できるようになりました。これらのアクションにより、暗号化されたユーザ名およびパスワードを格納するファイルが作成されます。ユーザ名とパスワードは、引き続き Ant タスクのコマンドラインでも入力できるようになっています。この場合は、コマンドラインで指定したユーザ名とパスワードが使用され、ユーザ コンフィグレーション ファイルまたは boot.properties ファイルは無視されます。つまり、既存の ant タスク スクリプトはこれまで通り機能しますが、スクリプトからユーザ名やパスワードを削除したい場合は、これらのコマンドの新しい機能を使用できます。

8.1 SP2

CR113475

セキュリティ MBean が暗号化されたセキュリティ MBean 属性を初期化中に解読しようとすると、NullPointerException が発生しました。

この問題は、暗号化サービスが WebLogic Server MBean から取得した Salt を使用するにもかかわらず、これらの MBean がまだ初期化されていないことが原因で発生していました。

NullPointerException が捕捉されるようになり、Salt はドメイン ログ ファイルから取得されるようになりました。

8.1 SP2

CR124392

この CR には複数の問題が関係していました。

    1. SecurityConfiguration.findDefaultRealm()findRealms()、および findRealm() は、この情報を常に管理サーバから取得しようとしていました。

    2. CommoProxy オブジェクトを初期化するたびに、AdminMBeanHome への参照をそのコンストラクタから取得しようとしていましたが、この参照は後でセッターまたは特定のオペレーションが発生するまでは必要ないものでした。

    3. 組み込み LDAP へのアクセスが必要な読み込み専用のオペレーションが発生するたびに、WebLogic Server がこの情報を管理サーバの LDAP から取得しようとしていました。管理サーバがダウンしていると、別のレイヤで例外が送出されていました。

    4. これらの問題が修正された後も、管理サーバのダウン時には応答に時間がかかっていました (管理サーバの実行時には 3 ~ 5 秒であるのに対し、ダウン時は 30 秒)。これは、WebLogic Server がコンストラクタの CommoProxy にある adminMBeanHome を初期化しようとしていたためです。

これらの問題は以下のように解決されました。

  • SecurityConfiguration が必要な情報をローカル MBean サーバから取得するようになりました。

  • AdminServerMBeanHome の初期化は、実際に必要になるまで延期されます。

  • 特定のオペレーションでは、管理サーバではなく、常にローカル MBean サーバから情報が取得されるようになりました。

8.1 SP2

CR122568

起動クラスが、ローカル インスタンスの MBeanHome へのアクセスに失敗していました。起動クラスが LoadBeforeAppDeployments="true" が指定された状態でデプロイされていると、次のようなエラー メッセージで失敗しました。

Unable to resolve 'weblogic.management.home.localhome' Resolved: 'weblogic.management' Unresolved:'home'

この問題は、WebLogic Server 8.1 SP1 が LOCAL_JNDI_NAME (weblogic.management.home.localhome) ではローカル インスタンスの MBeanHome を取得できないために発生していました。

LOCAL_JNDI_NAME が起動クラスで使用できるようになりました。

8.1 SP2

ツール

変更
要求
番号

説明

修正されたリリース

CR074637

WebLogic Builder において、デフォルト トランザクションを削除することができませんでした。

コンボ ボックスの空白行を選択することで、デフォルト トランザクションを削除できるようになりました。

8.1 SP2

CR074714

WebLogic Builder の [WebLogic 設定] パネルにおいて RAR の [増加容量] が [最大容量] と [初期容量] の差より大きいと、RAR をロードできず、weblogic.xml.process.: capacity-increment should be less than or equal to (max_capacity-initial_capacity) で始まる SAXProcessorException が出力されていました。

コードを修正して問題は解決されました。

7.0 SP3

8.1 SP2

CR083151

コマンドラインでの DDInit が EAR ファイルに対して機能するようになりました。

7.0 SP3

8.1 SP2

CR093658

VirtualHostMBeangetLogFileName を呼び出すと、誤ったパスが返されていました。

7.0 SP3

8.1 SP2

CR093833

サーバを指定せずに weblogic.Deployer を使用して管理対象サーバに再デプロイすると、アプリケーションが管理サーバにデプロイされていました。

この問題は、weblogic.Deployer ユーティリティに変更を加えることで解決しました。

7.0 SP3

8.1 SP2

CR098134

weblogic.Admin がパスワードの入力を求めると同時に例外を送出するため、パスワードを入力できませんでした。

コードを修正して問題は解決されました。

7.0 SP3

8.1 SP2

CR099461

WebLogic Builder で、CMP フィールドに有効な値が表示されないため、ユーザが入力する必要がありました。

CMP フィールドのエントリを選択するためのメニューが表示されるようになりました。

8.1 SP2

CR100538

ユーザが ejb-jar.xml ファイルに assembly-descriptor スタンザがない ejb.jar ファイルを開こうとすると、WebLogic Builder から NullPointerException が送出されていました。

NullPointerException が防御されたことで、WebLogic Builder のユーザは ejb-jar.xmlassembly-descriptor スタンザのない ejb.jar ファイルを開けるようになりました。

8.1 SP2

CR103188

WebLogic Builder が Web アプリケーション デプロイメント記述子をロードすると、resource-ref スタンザが削除されていました。この問題は、サーブレット記述子の処理コードにバグがあったために発生していました。

サーブレット記述子の処理コードを修正したことで、resource-ref スタンザが正しく読み込まれるようになりました。デプロイメント記述子で resource-ref スタンザを使用する Web アプリケーションは正しくロードされます。

8.1 SP2

CR107916

CMP フィールドを削除して追加し直すと、DD CMP とカラム マッピングが混乱しました。この問題は、既存の CMP フィールドを編集すると、field-name が readOnly であるにもかかわらず、WebLogic Builder がコンボ ボックスのすべての値を格納し直していたために発生しました。

また、EJBUtils.getCMPFields() メソッドが CMP フィールドだけでなく CMR フィールドも返していました。このため、偶発的に CMR フィールドが設定された値をノードが取得することになり、ノードの値がランダムに設定されているように見えることがありました。これらの問題が発生すると、ejb-jar.xml ファイルが破損するおそれもありました。

ユーザが新しい CMP フィールドを追加しているか、既存の CMP フィールドを編集しているかをコードで識別できるようにし、ユーザが新しい CMP フィールドを追加したときにのみコンボ ボックスに値を格納するようにしました。また、フィルタ メソッドによって CMR フィールドが除外されるようにしました。これらの修正の結果、ejb-jar.xml ファイルが破損することはなくなりました。

8.1 SP2

CR108648

WebLogic EJB-to-JSP 統合ツールをコマンドラインで実行すると、NoClassDefFound エラーが発生しました。また、このツールは 1.0 EJB にしか使用できませんでした。

weblogic.servlet.ejb2jsp.gui.Main クラスを追加したことで、NoClassDefFound エラーが発生しなくなり、2.0 EJB を処理するためのコードも追加されました。これにより、EJB に Local/LocalHome インタフェースしかなくても、両方のインタフェースからメソッドが読み込まれるようになりました。EJB に Remote/RemoteHome インタフェースしかない場合も、両方のインタフェースからメソッドが読み込まれます。EJB に両方のインタフェースがある場合は、Local/LocalHome インタフェースからメソッドが読み込まれます。

8.1 SP2

Web サービス

変更
要求
番号

説明

修正されたリリース

CR086326

JSSEAdapter の JDK 1.4 への対応が保留になっていたため完全には機能しませんでした。

JSSEAdapter による厳密なチェック、verbose、および localIdentity が WLSSLAdapter と同等に機能するようになりました。この修正の結果、JSSEAdapter の提供する機能が WLSSLAdapter と同等になりました。

8.1 SP2

CR092268

クライアントがファイアウォールで保護されている場合、Web サービス スタブでプロパティを設定する必要がありました。

この問題は、新しいプロパティとして weblogic.webservice.client.proxyusername および weblogic.webservice.client.proxypassword を追加したことで解決しました。

7.0 SP4

8.1 SP2

CR103346

Web サービスのテスト ページで、documentwrapped 起動スタイルがサポートされていませんでした。

Web サービスのテスト ページで、documentwrapped 起動スタイルのテストがサポートされるようになりました。

8.1 SP2

CR103512

CR107171

スタブで設定されたプロパティの一部が MessageContext にコピーされませんでした。

コードの変更後、WebLogic Server は以下のユースケースをサポートするようになりました。

エンドポイントは次のフローで修正できます。

  • Stub-> handleRequestMessageContext-> handleResponseMessageContext-> StubCall-> handleRequestMessageContext-> Call

タイムアウトは次の順序で設定できます。

  • Stub->handleRequest の MessageContext

  • Call->handleRequest の MessageContext

7.0 SP4

8.1 SP2

CR104199

NET C# クライアントを使用して WebLogic Server の Web サービスにアクセスして 2 つの文字列 (1 番目が結果、2 番目が入出力パラメータ) を返すよう要求すると、文字列の順序が誤って返されていました。2 番目の文字列が結果として返され、入出力パラメータは null として返されました。コードを修正したことで、1 番目に返されるアクセサが戻り値になりました。

7.0 SP4

8.1 SP2

CR104276

コマンドライン フラグ -Dweblogic.webservice.verbose=true を指定すると、起動時にこれが WebLogic Server で認識されないことを示すエラー メッセージが送出されていました。

このエラー メッセージは誤りです。フラグは WebLogic Server によって認識されていました。このメッセージは削除されました。

8.1 SP2

CR104481

Web サービスのメソッドにマルチバイト文字が含まれていると、Administration Console のテスト ページから Web サービスにアクセスすることができませんでした (ただし、クライアント アプリケーションは Web サービスにアクセスできます)。

この問題は、要求パラメータが ISO-8859-1 エンコーディングで解析されていたために発生していました。要求パラメータの解析前に文字エンコーディングが設定されるようコードを修正し、問題は解決しました。

8.1 SP2

CR105140

サーバ ハンドラのメッセージ コンテキストで、HTTPRequest および HTTPResponse が使用できませんでした。この問題は、WebLogic Server 7.0.x では発生していませんでした。

サーバ ハンドラに MessageContext.getProperty("HTTPRequest") および MessageContext.getProperty("HTTPResponse") のサポートを追加したことで問題は解決しました。

注意 : HTTPRequest および HTTPResponse は非推奨となりました。代わりに weblogic.webservice.transport.http.request および weblogic.webservice.transport.http.response を使用してください。

8.1 SP2

CR106392

invocation-style="one-way" で実行すると、次に示すように WSDL の <binding> セクションに <output> が含まれました。

<portType name="MyServicePort">
   <operation name="sayNothing">
      <input message="tns:sayNothing" />
   </operation>
</portType>

<binding name="MyServicePortSoapBinding" type="tns:MyServicePort">
   <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"; />
   <operation name="sayNothing">
      <soap:operation soapAction="" style="document" />
         <input>
            <soap:body use="literal" namespace="http://tempuri.org/"; />
         </input>

      <output>
            <soap:body use="literal" namespace="http://tempuri.org/"; />
      </output>
   </operation>
</binding>

この現象は、「rpc」スタイルおよび「document」スタイルの両方の Web サービスで発生しました。この WSDL に対して Microsoft の WSDL.EXE を実行すると、検証に失敗し、その後の .Net クライアント プロキシやスタブの生成も失敗しました。

この問題は、一方向のバインディングでは出力メッセージが生成されないようにコードを修正したことで解決しました。

7.0 SP3

8.1 SP2

CR107312

Clientgen で、attributeFormDefault="qualified" が指定されているにもかかわらず、SOAP リクエストのクライアント書き込み属性がネームスペースなしで生成されていました。WebLogic Workshop の Web サービスではこれらの属性が認識されず、Java オブジェクトの対応するフィールドが null に設定されていました。

attributeFormDefault="qualified" の場合は属性のネームスペースが書き出されるようになりました。

8.1 SP2

CR108646

servicegen タスクで「mergewithexistingws」属性がサポートされておらず、ビルドが失敗していました。

この問題は、weblogic.ant.taskdefs.webservices.servicegen.ServiceGenTask クラスに setMergeWithExistingWS メソッドが定義されていないことが原因で発生していました。

ServiceGenTask クラスに次のメソッドが追加されました。

public void setMergeWithExistingWS(boolean b) { mergeWithExistingWS = b; }

8.1 SP2

CR109437

次のように実行時に SSLAdapterWLSSLAdapter にキャストすると、ClassCastException が送出されていました。

SSLAdapterFactory factory = SSLAdapterFactory.getDefaultFactory(); WLSSLAdapter adapter = (WLSSLAdapter) factory.getSSLAdapter();

この問題は、機能の追加が不完全だったことが原因で発生していました。

JSSEAdapter が、デフォルトの WLSSLAdapter にセカンダリとして正しく入力されるようになりました。この修正によって、動作が元通りになりました。

8.1 SP2

CR109624

例外が常に Web サービス クライアントの stdout に出力されていました。

クライアント サイドでのロギングが、システム プロパティ weblogic.webservice.client.loggingtrue に設定されている場合にのみ行われるようになりました。デフォルトは false です。

8.1 SP2

CR109898

CR112443

メソッドに org.w3c.dom.Document[] をパラメータとして渡すと、以下の行で始まる SOAPException が送出されていました。

javax.xml.soap.SOAPException: Found SOAPElement [<anyType> <this xmlns="mynamespace"> <f:that xmlns:f="yournamespace"> <or> a lot of random < </or> <f:the> </f:the> <f:other> foo bar blaz</f:other> </f:that> </this> </anyType>].But was not able to find a Part that is registered with this Message which corresponds to this SOAPElement ...

コードを修正して問題は解決されました。

8.1 SP2

CR109938

Web サービス ランタイムが Source オブジェクトで表された XML のエンコーディングを確認しようとしたときに、その基底のストリームが読み込まれ、リセットされませんでした。

XML ストリームはリセットされるようになりました。

8.1 SP2

CR110168

サーバから返された XML が SOAP 配列のサイズを明示的に示していない場合に、クライアントは IllegalArgumentException で失敗していました。

この問題は、新しい配列インスタンスの作成に使用する引数が、サイズ情報がないために null だったことが原因でした。

サイズの指定されていない SOAP 配列では、まずオブジェクトがリストに格納され、それから配列が作成されるようになりました。

7.0 SP4

8.1 SP2

CR110945

配列を伴うドキュメント/リテラル型の Web サービスで SOAP 応答メッセージが生成され、それによってネームスペースが適切に適用されていませんでした。その結果として、.Net クライアントは一部のデータを無視していました。Web サービスの生成には、WebLogic Server Ant タスク (autotypewsdl2service、および wspackage) を使用します。

この問題は、生成されたコーデックに適切なネームスペースを書き込むようにコードを修正して解決されました。

8.1 SP2

CR111163

SOAP ヘッダの子ノードを反復処理するときに、空のテキスト ノードが SOAPHeaderElement にキャストされていました。

テキスト ノードは破棄されるようになりました。しかし、examineHeaderElements() メソッドを機能させるためには別の変更も必要でした。mustUnderstand 属性と actor 属性が、ネームスペースの修飾の有無に関係なく認識されるようになりました。以前は、非修飾形式だけが認識されていました。

8.1 SP2

CR111187

weblogic.webservice.binding.soap.HttpResponse クラスで、getBodyAsString が「String index out of range」エラーを送出していました。

この問題は、メソッドが終了の代わりに本文の長さを使用するようにコードを修正したことで解決しました。

7.0 SP4

8.1 SP2

CR111393

WebLogic Builder を使用した単純な EAR ファイルのデプロイ中に NullPointerException が発生していました。

この問題は解決されています。

8.1 SP2

CR109033

CR111653

暗号化に KeyWrappingMethod を指定できなかったため、Web サービスのデータ セキュリティをコンフィグレーションできませんでした (デフォルトでは、rsa-oaep-mgf1p が使用されていました)。

Web サービスのデプロイメント記述子でサポートされている KeyWrappingMethod であれば指定できるようになりました。たとえば、次のように指定できます。

<spec:EncryptionSpec
EncryptionMethod="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"
KeyWrappingMethod="http://www.w3.org/2001/04/xmlenc#rsa-1_5"
EncryptBody="true">
</spec:EncryptionSpec>

8.1 SP2

CR111881

CR128662

クライアント サイドで Web サービスの呼び出しをタイムアウトさせることができませんでした。

WebLogic Server SP 2 では、次の手順でクライアント サイドから Web サービスの呼び出しをタイムアウトさせることができるようになりました。

    1. クライアント サイドで weblogic.jar が使用できることを確認します。

    2. weblogic.webservice.UseWebLogicURLStreamHandler システム プロパティを true に設定します。

    3. タイムアウトをスタブで次のように設定します。

  • BindingInfo の API を使用する場合 : BindingInfo bInfo = (BindingInfo) stub._getProperty("weblogic.webservice.bindinginfo"); bInfo.setTimeout(5 /* secs */);

  • スタブのプロパティを使用する場合 : stub._setProperty("weblogic.webservice.rpc.timeoutsecs", "5" /* secs */);

注意 : WebLogic Server 8.1 SP1 では、BindingInfo.setTimeout(5000/*millisecs*/) がとるパラメータがミリ秒単位でした。しかし、これはクライアント サイドには影響していませんでした。SP 2 では、パラメータがミリ秒単位から秒単位に変更されました。

8.1 SP2

CR112835

wsdl2service を使用してスタイルが混在する WSDL のサービスを生成すると、サービスの呼び出し時にクライアント サイドから SerializationException が送出されていました。

スタイルの混在は、クライアント サイドでのみサポートし、サーバ サイドではサポートしなくなりました。この修正の結果、スタイルが混在している場合は wsdl2service がサービスを生成しなくなりました。代わりに、wsdl2service の実行中に WSBuildException が送出されるようになりました。

注意 : この修正が行われるまでは、wsdl2service がスタイルの混在するサービスを生成していました。

8.1 SP2

CR113038

WebLogic Server 8.1 では SOAP 1.2 仕様の古いバージョンがサポートされていました。

WebLogic Server 8.1 SP2 では、最新の SOAP1.2 仕様のサポートが追加されました。

8.1 SP2

CR113082

java.lang.Object を Web サービスのパラメータや戻り値の型として使用することができませんでした。その結果として、コンパイル時に次のようなエラーが発生していました。

Client.java:79: inconvertible types found : void required: java.lang.Object java.lang.Object retVal = (java.lang.Object)port.mapbasic8Data(arg0);

この問題はコードの修正によって解決されました。

8.1 SP2

CR113095

次に示すようにサーバ ハンドラ チェーンの handleResponse() メソッド内で getContent() メソッドを呼び出すと、

SOAPMessage msg = ( (SOAPMessageContext)context ).getMessage(); javax.xml.transform.Source src = msg.getSOAPPart().getContent();

次の行で始まる例外が送出されていました。

org.w3c.dom.DOMException: NAMESPACE_ERR: An attempt is made to create or change an object in a way which is incorrect with regard to namespaces....

この例外は送出されなくなり、msg.getSOAPPart().getContent() を呼び出すと正しい javax.xml.transform.Source オブジェクトが返されるようになりました。

8.1 SP2

CR120422

webserviceclient.jar に以下のクラスが追加されていませんでした。

weblogic/webservice/encoding/AttachmentCodec.class
weblogic/webservice/encoding/DataHandlerArrayCodec.class
weblogic/webservice/encoding/DataHandlerCodec.class
weblogic/webservice/encoding/ImageArrayCodec.class
weblogic/webservice/encoding/ImageCodec.class
weblogic/webservice/encoding/MimeMultipartArrayCodec.class
weblogic/webservice/encoding/MimeMultipartCodec.class
weblogic/webservice/encoding/XMLSourceArrayCodec.class
weblogic/webservice/encoding/XMLSourceCodec.class

これらのクラスが追加されました。

8.1 SP2

CR120835

クライアント サイドの JAX-RPC ハンドラ (javax.xml.rpc.handler.GenericHandler) を処理するために必要なクラスが、WebLogic Server に付属の webserviceclient.jar ファイルに含まれていませんでした。

必要なクラスが webserviceclient.jar に追加されました。Web サービス クライアントが webserviceclient.jar のみを使用して JAX-RPC ハンドラを使用できるようになり、クライアントのクラスパスに webservices.jar を含める必要がなくなりました。

8.1 SP2

CR120957

EJB メソッドから複数の例外が送出されたときに、静的なクライアントが正しい例外を送出していませんでした。たとえば、静的なクライアントのメソッド シグネチャが次のようになっている場合、

public void throwExceptions() throws ExceptionA, ExceptionB

サーバ サイドから送出された例外に関係なく、常に ExceptionA が送出されていました。

静的なクライアントが、サーバ サイドから送出された例外に対応する例外を送出するようになりました。

8.1 SP2

CR121013

認証されたサブジェクトがメッセージ コンテキストに設定されている場合、バックエンド コンポーネントの呼び出しにこのサブジェクトが使用されるようになりました。

8.1 SP2

CR121088

WebLogic Server 8.1 SP1 では、MDB は servicegen を使用して Web サービスとしてパブリッシュされます。この MDB は外部の JMS プロバイダ (MQ-Series 5.3) をリスンします。Administration Console で Web サービスをテストすると、以下の行で始まる ClassCastException が送出されていました。

Invocation failed ! Parameter Name Parameter Value Request sent to the server <!--REQUEST.................-->
<env:Envelope
  xmlns:env="http://schemas.xmlsoap.org/soap/envelope/";
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
  xmlns:xsd="http://www.w3.org/2001/XMLSchema";> <env:Header>
</env:Header>
<env:Body>
  <n1:toupper xmlns:n1="http://localhost:7001/messageToupperWebservices"; sample string</n1:toupper>
</env:Body>
</env:Envelope>

Response from the server
<!--RESPONSE.................--> <env:Envelope
  xmlns:env="http://schemas.xmlsoap.org/soap/envelope/";
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
  xmlns:xsd="http://www.w3.org/2001/XMLSchema";> ...

この問題は、ClassCastException が送出されないようにコードを修正したことで解決しました。

8.1 SP2

CR122437

StreamSourceInputStream フィールドが、null の場合でも常に使用されていました。

InputStreamnull の場合は、Reader が使用されるようになりました。 両方が null である場合は SOAPException が送出されます。

8.1 SP2

CR124019

基本型と拡張型のネームスペースが異なっていると、clientgen が拡張型で生成されたクラスのコンパイルに失敗しました。

この問題は、別のパッケージの基本クラスがインポートされていたことが原因で発生していました。

基本クラス名が完全なパッケージ名とともに生成されるようになりました。

8.1 SP2

CR124285

汎用の <xs:import> タグ経由の targetNamespace がない別のスキーマ内の型を参照する WSDL で、clientgenClassNotFoundException で失敗していました。

コードを修正して問題は解決されました。この修正により、スキーマ内に targetNamespace がなくても、<clientgen>typePackageName または typePackageBase を定義しなければならなくなりました。

8.1 SP2

CR127338

WebLogic Server が、文字列「start=null」で MIME ヘッダを生成していました。これは、RFC2387 に違反しています。RFC2387 では、「start element」はオプションですが null にすることはできません。次に例を示します。

[java] Content-Type=multipart/related;boundary="----=_Part_0_19561502.106 8580828000";start=null
[java] Transfer-Encoding=Chunked
[java] Envelope :
[java]
[java] ------=_Part_0_19561502.1068580828000
[java] Content-Type: text/xml; charset='utf-8'
[java] Content-Transfer-Encoding: 8bit

この問題は、正しい「start element」が生成されるように WebLogic Server を修正することで解決しました。たとえば、次のようにします。
[java] Content-Type=multipart/related;boundary="----=_Part_0_2960804.1068582126531";start=__WLS__1068582126546__SOAP__
[java] Transfer-Encoding=Chunked [java] Envelope :
[java]
[java] ------=_Part_0_2960804.1068582126531
[java] Content-Type: text/xml; charset='utf-8'
[java] Content-Transfer-Encoding: 8bit
[java] Content-ID: __WLS__1068582126546__SOAP__

8.1 SP2

WTC

変更
要求
番号

説明

修正されたリリース

CR070627

WebLogic Server の Administration Console で、[ネットワーク アドレス] フィールドの形式がチェックされていませんでした。この問題は、WTC LocalTuxDom コンフィグレーションまたは RemoteTuxDom コンフィグレーションのいずれかで発生していました。

この問題は、ネットワーク アドレスの形式が有効かどうかをチェックするメソッドを WTCLegalHelper に追加することで解決しました。この修正の結果、無効な形式を使用して [ネットワーク アドレス] フィールドを定義するとエラーが通知されるようになりました。

8.1 SP2

CR107333

WTC で使用するビュー クラスをコンフィグレーションするための設計が、JMX インタフェースを使用する場合しか想定していませんでした。これは、WebLogic Workshop で Tuxedo コントロールを使用する方法としては実際的でないことが判明しました。

ロードしたビュー クラスに WTC ビュー ハッシュテーブルを追加するためのメソッドを TuxedoConnection に追加しました。これにより、WTCService の実行時に使用するビュー クラスで WTCResourcesMBean を更新する必要がなくなりました。アプリケーションにこのクラスをロードし、TuxedoConnectionupdateViewMap メソッドを呼び出します。ただし、MBean の情報は更新されません。また、ビュー ハッシュテーブルへの追加は管理者以外でも行えます。

8.1 SP2

CR109849

WTC では、Tuxedo 6.5 ドメインとの通信に専用のプロトコルを使用します。この通信の一部で、読み込まれるデータの受信用に TypedBuffer が作成されます。この場合、ビュー バッファを作成しなければなりませんが、そのためにはビューのサブタイプが必要になります (このサブタイプは、Resources コンフィグレーション セクションにリストされているクラスにマップするビューの名前です)。しかし、createTypedBuffer メソッドにサブタイプが提供されていませんでした。

サブタイプの値を、入力ストリームから読み込んで createTypedBuffer メソッドに渡すように修正されました。この結果、WTC 8.1 で Tuxedo 6.5 ドメインからのビュー バッファを処理できるようになりました。

8.1 SP2

CR109877

TypedFML.FldId() メソッドが、Ferror 例外を送出すべきであるのに null 値を返していました。

TypedFML.Flid() に throw 文を追加し、フィールド ID が見つからない場合に例外が送出されるようにしました。この修正の結果、入力された name パラメータに対応するフィールド ID が見つからないと、Ferror.FBADNAME 例外が送出されるようになりました。

8.1 SP2

CR110488

CR110619

wsdl2service タスクによるユーザ定義例外の処理で、以下の問題が発生していました。

  • インタフェースのオペレーションが、ユーザ定義例外を WSDL に指定されたとおりには送出していませんでした。

  • デプロイメント記述子 web-services.xml に障害エントリがありませんでした。

この問題は解決されました。 その結果、wsdl2service でユーザ定義例外が正しく処理されるようになりました。

8.1 SP2

CR110957

Web サービス アプリケーションにおいて文字列として定義された VIEW バッファ フィールドに問題がありました。これらのフィールドは null で終わる文字列を格納するためのフィールドですが、Tuxedo では固定長文字配列フィールドとして作成されます。Tuxedo では、配列全体を VIEW バッファの一部として送信します。WTC はこうしたバッファを受信すると、配列全体を Java バイト配列に変換してから Java String に変換します。変換後の文字列には、本当のデータの後にたくさんの「0」または不要な文字が挿入されることがあります。WTC では、受信した文字配列の最初の null バイトを探し、その時点で作成されたバイト配列を切り詰めていました。

viewj コンパイラおよび viewj32 コンパイラに -modify_strings という新しいオプションが追加されました。また、wtc.jatmi.Utilities クラスに新しいバージョンの xdr_encode_string メソッドおよび xdr_decode_string メソッドが追加されました。-modify_strings が指定されていると、コンパイラは文字列をエンコードおよびデコードする新しいバージョンのルーチンを使用してコードを生成します。これらのバージョンでは、Tuxedo から受信した文字列が最初の null 文字のところで切り詰められ、Tuxedo に送信するすべての文字列に null 文字が追加されます。-modify_strings オプションを指定しない場合は、従来の動作になります。

8.1 SP2

CR122200

ビュー定義で特定のフィールドに L または C フラグを指定すると、長さフィールドやカウント フィールドに関連付けられた値を設定および使用するフィールド セッターやゲッター内に、Viewj および Viewj32 がコードを生成するようになりました。

  • セッターは、フィールドの場合はカウントを設定し、文字列または carray フィールドの場合は長さを設定します。

  • 配列フィールドのゲッターは、関連付けられたカウント フィールド以下のサイズの配列を返します。

  • 文字列または carray ゲッターは、関連付けられた長さフィールド以下の長さのデータを返します。

この動作は、viewj または viewj32 による TypedView または TypedView クラスの生成時、および実行時に制御できます。

実行時の動作は、以下の 2 つの方法で制御できます。

    1. 現在の状態が設定されている場合は boolean getAssociatedFieldHandling()true を返すため、セッターおよびゲッターは関連付けられた長さフィールドおよびカウント フィールドを使用します。現在の状態が設定されていない場合は false を返します。

    2. void setAssociatedFieldHandling(boolean state) には、関連付けられたフィールド処理の状態を設定します。false に設定すると、セッターおよびゲッターは長さフィールドおよびカウント フィールドを無視します。true に設定すると、上記のように関連付けられたフィールドを設定し、使用します。

関連付けられたフィールド処理のデフォルトの状態は false です。 viewj または viewj32 で -associated_fields オプションが指定されている場合、デフォルトの状態は true に設定されます。

8.1 SP2

CR122953

weblogic.wtc.jatmi.TypedFML32 クラスの Fchg(FmlKey key, Object value) メソッドは、ドキュメントのとおりに前の全エントリに適切に null 値を設定していませんでした。

この問題は、コードを修正することで解決しました。

7.0

8.1 SP2

XML

変更
要求
番号

説明

修正されたリリース

CR120910

web.xml において、エンコーディング名として「MS950」または「CP950」が指定されていると、以下の行で始まる例外が送出されていました。

weblogic.management.ApplicationException: Exception:weblogic.management.ApplicationException: Prepare failed. Task Id = 21 Module: encoding Error: [HTTP:101062][HTTP] Error reading Web application "C:\bea811\user_projects\domains\mydomain\.\myserver\upload\encoding\encoding.war". java.io.UnsupportedEncodingException: [J2EE:160098]Unable to parse the file 'C:\bea811\user_projects\domains\mydomain\.\myserver\upload\encoding\encoding.war:WEB-INF/web.xml' because it uses an invalid encoding name, 'Cp950'. All deployment descriptors must use an IANA or Java encoding name. Please change the encoding of the descriptor to be a supported encoding. ...

コードを修正したことで「MS950」または「CP950」が有効な Java エンコーディング名となり、上記の例外は送出されなくなりました。


8.1 SP2

 

フッタのナビゲーションのスキップ  ページの先頭 前 次