Interstage Web Server 使用上の注意 - Solaris - |
目次 |
第3章 注意事項 |
Web アプリケーション、またはJ2EE アプリケーションクライアントの運用時に、以下のXMLファイルを使用する場合、計算式から算出されるJavaVM ヒープ領域サイズを、JavaVM の最大ヒープ領域サイズの指定値に加算してください。
[JavaVM ヒープ領域サイズの算出]
使用しているXMLファイルごとに以下の計算式から算出したサイズの総和を求めます。
( ( ( (a×460) + b) / 1024) +500) × c (単位:Kバイト)
- a:XMLファイル内行数
- b:XMLファイルサイズ(単位:バイト)
- c:同時クライアントアクセス数(Web アプリケーション運用時)、またはlookup を発行しているスレッド数(J2EE アプリケーションクライアント運用時)
[JavaVM の最大ヒープ領域サイズの指定方法]
JavaVM の最大ヒープ領域サイズに、512M バイトを指定する場合の例:
-Xmx512m
JavaVM の最大ヒープ領域サイズに、128M バイトを指定する場合の例:
java -Xmx128m ClientAPL
[JavaVM のヒープメモリ不足が発生した場合の現象]
各アプリケーションの運用時に、使用するJavaVMヒープ領域サイズを加算しなかった場合は、以下の例外が発生する場合があります。
javax.naming.NamingException:com.fujitsu.interstage.j2ee.def.FJDefException: unknown error: java.lang.OutOfMemoryError
WebアプリケーションとEJBアプリケーションを同一VM上で運用し、かつ、同一のデータソースを使用する場合は、Webアプリケーション、EJBアプリケーションそれぞれでInitialContextのlookupメソッドを使用してJDBCデータソースの取得を行ってください。
以下の場合は、問題が発生することがあります。
J2EEアプリケーションクライアントより、Interstage管理コンソールまたはisj2eeadminコマンドで定義したデータソースを使用して取得したjava.sql.Connectionに対して、close()メソッド発行後にisClosed()メソッドによりConnectionの状態を確認すると、isClosed()メソッドが期待した値を返却しない可能性があります。本現象はスレッド多重で動作させた場合に発生します。
以下に本現象が発生する可能性のある例を示します。
------------------------------------------------------------------------------- javax.sql.DataSource dataSource = null; java.sql.Connection connection = null; try { javax.naming.Context nctx = new javax.naming.InitialContext(); dataSource = (javax.sql.DataSource)nctx.lookup("java:comp/env/jdbc/DB1"); } catch (javax.naming.NamingException ex) { } try { connection = dataSource.getConnection(); /* データベースアクセス処理 */ connection.close(); } catch ( java.sql.SQLException sqlEx ) { } finally { try { if ( !connection.isClosed() ) { connection.close(); } } catch (java.sql.SQLException sqlEx2) { } } -------------------------------------------------------------------------------
JDK/JREのバージョンは、開発から実行まで、すべてを同一にすることを推奨します。
JDK/JRE 5.0でコンパイルしたアプリケーションは、JDK/JRE 1.4の実行環境では正しく動作しません。
JDBCドライバの障害により、J2EEアプリケーションクライアントからlookupしたデータソースに対して複数スレッドでアクセスすると、コネクション獲得時に以下のエラーが発生することがあります。詳細な情報は、JDBCドライバの提供元へ問い合わせてください。
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Pooled connection reclaimation not supported.
目次 |