本項では Sun GlassFish Enterprise Server v3 の既知の問題と回避策 (存在する場合) について説明します。
「[JDK_Issue] setSoLinger または setReuseAddress の呼び出しによって引き起こされるパフォーマンス低下 (課題 7109)」
「[JDK_ISSUE] Richaccess: java.io.IOException: doSelect からの無効な引数 (課題 8573)」
「ドメイン /applications ディレクトリのファイルアクセス権によって NullProcessException が発生することがある (課題 6545)」
「[Open Installer] Windows でログファイルを移動するためのオプション -l が無視される (課題 10693)」
「com.sun.xml.wss.NonceManager.getInstance からヌルポインタ例外がスローされる (課題 11138)」
「[Open Installer] Windows Vista および Windows 2008 で「スタート」メニューが表示されず、その後メニューに何も表示されない (課題 5087)」
「specj アプリケーションが配備されている場合に asadmin get --monitor=true "server.*" によって I/O エラーが発生する (課題 11163)」
「Java Web Start によって起動されたアプリケーションクライアントで Java EE 6 Managed Bean がサポートされない (課題 11257)」
「Apple の Java が実装された Mac OS X 上で appclient スクリプトを呼び出したときの警告メッセージ (課題 8644)」
「アプリケーションクライアントを起動するとアプリケーションクライアントのメインクラスで ClassNotFounds エラーが発生する可能性がある (課題 11181)」
「Linux および Mac OS で「概要」画面のリンクからインストールログファイルを開くことができない (課題 6621)」
「Windows 上で同じインストールディレクトリへの再インストールを行った場合、updatetool コマンドが動作しない (課題 8233)」
「[Update Center] 非ユーザーディレクトリへのアクセスが失敗する (Update Center 課題 1583)」
「インラインヘルプと CLI のマニュアルページで、X-Powered-By に誤ったサーブレットバージョン 2.4 が記載される (課題 11011)」
「[Embedded] activation-1.1.jar を含むアプリケーション配備が uber-jar の使用時に失敗する (課題 11149)」
「Solaris で passwordfile に AS_ADMIN_USER が指定されていないと create-service でサービスを作成できない (課題 11119)」
「[EclipseLink] 組み込み可能要素の ElementCollections の問題 (EclipseLink 課題 296606)」
「 ターゲット EJB が同一ホスト上にあると、リモート EJB の EJB 相互運用が不可能になる (課題 11152)」
「Windows Vista と Windows 7 でインストーラが 41% のところでハングアップする場合がある (課題 11185)」
「deploy コマンドのマニュアルページで、--dbvendorname のサポートされるデータベースのリストに mysql が表示されない (課題 11328)」
setSoLinger メソッドまたは setReuseAddess メソッドが呼び出されたときに、パフォーマンスが低下して次の例外がスローされます。
[#|2009-01-26T00:33:56.325-0800|WARNING|sun-appserver9.1| javax.enterprise.system.container.web|_ThreadID=17; _ThreadName=SelectorReaderThread-8084; _RequestID=11ae0030-c392-4217-8408-cfa7efe0a879;|setSoLinger exception java.net.SocketException: Invalid argument |
この問題は JDK ソフトウェアの問題が原因です。この問題は JDK バージョン 7 で解決されています。
詳細については、課題レポートを参照してください。
ありません。
Enterprise Server を再起動するとヌルポインタ例外がスローされることがあります。
SEVERE: doSelect exception java.lang.NullPointerException |
この問題は JDK ソフトウェアの問題が原因です。この問題は JDK バージョン 7 で解決されています。
詳細については、課題レポートを参照してください。
ありません。
HTTP 寿命テストの際に、実行開始から 42 時間で次の例外がスローされます。
[#|2009-04-05T17:41:26.537-0700|SEVERE|glassfish|javax.enterprise.system.core| _ThreadID=15;_ThreadName=Thread-1;|doSelect exception java.io.IOException: Invalid argument |
実行中、インスタンスとアプリケーションは引き続きアクセス可能です。
この問題は JDK ソフトウェアの問題が原因です。この問題は JDK バージョン 7 で解決されています。
詳細については、課題レポートを参照してください。
ありません。
起動時に Enterprise Server がヌルポインタをスローします。
java.lang.NullPointerException at sun.nio.ch.Util.atBugLevel(Util.java:326) at sun.nio.ch.SelectorImpl.<init>(SelectorImpl.java:40) at sun.nio.ch.EPollSelectorImpl.<init>(EPollSelectorImpl.java:47) |
これは Grizzly に関連し、JDK 6 の問題です。この問題は JDK 7 で解決されています。
詳細については、課題レポートを参照してください。
ありません。Grizzly ではこの問題の回避を試みていますが、まだ失敗の可能性があります。
次の例外が見られます。
[#|2009-06-20T06:05:57.942-0700|SEVERE|glassfish| com.sun.grizzly.config.GrizzlyServiceListener| _ThreadID=21;_ThreadName=Thread-2;|doSelect IOException java.io.IOException: Invalid argument |
これは JDK の問題であり、JDK 1.6.0_18 で修正される予定です。
詳細については、課題レポートを参照してください。
ファイル記述子の最大数を 10000 以上まで増加させます (Solaris のデフォルトは 64000 です)。JDK 1.6.0_18 が提供された際には、これをインストールしてください。
ドメインの /applications ディレクトリでアクセス権が制限されているか、または制限されたディレクトリからのディレクトリ配備を使用している場合、サーバーは拡張ディレクトリ内のファイルを読み取ることができません。配備中に NullProcessException エラーが発生します。
詳細については、課題レポートを参照してください。
このようなディレクトリのファイルアクセス権を変更して、ディレクトリのコンテンツを読み出すためのアクセス権をサーバーに許可します。
time-stamp-install.log ファイルに書き込まれたすべての行が 1 行に結合されているため、ファイルを読み取ることができません。
詳細については、課題レポートを参照してください。
別のエディタを使用して、%TEMP% ディレクトリの下に作成されているインストールログファイルを手動で開きます。
新しく追加された仮想サーバーの統計をモニターするには、その前にサーバーを再起動する必要があります。
詳細については、課題 6238 および 課題 6422 のレポートを参照してください。
仮想サーバーを追加したあと、サーバーを再起動して仮想サーバーのモニタリングデータを表示します。
ログファイルを移動するためのオプション -1 を -a および -s オプションとともに使用した場合、このオプションが無視されてログファイルがデフォルトの場所に作成されます。
詳細については、課題レポートを参照してください。
ありません。
Windows Vista でユーザーアカウント制御 (UAC) が有効になっていると、一部の機能が正常に動作しません。たとえば 管理コンソール が起動されません。
詳細については、課題レポートを参照してください。
UAC を無効にして再起動します。
GlassFish メッセージセキュリティープロバイダを有効にして JAX-RPC Web サービスのテストを行うと、サーバーログで次の例外がスローされます。
[#|2009-11-23T11:16:58.375+0005|SEVERE|glassfishv3.0| javax.enterprise.resource.webservices.rpc.server.http|_ThreadID=25;_ ThreadName=http-thread-pool-8080-(2);|caught throwable java.lang.RuntimeException: com.sun.enterprise.security.jauth.AuthException |
nonce プロパティーのデフォルト値が無効です。
詳細については、課題レポートを参照してください。
JAX-RPC Web サービスとともにメッセージセキュリティーを使用するには、設定で nonce プロパティーを無効にしてください。この回避策の完全な手順については、課題レポートを参照してください。
1 回目のインストールが終了した後、Enterprise Server の「スタート」メニューグループが表示されません。ログアウトしてから再度ログインすると、メニューグループは表示されますが内容が表示されません。
詳細については、課題レポートを参照してください。
ありません。
asadmin get -m "server.*" コマンドはサーバーに関連しているすべての監視データを返します。多数のアプリケーションが配備されていると、データ量が非常に大きくなるため、応答に時間がかかることがあります。クライアントがタイムアウトして、次のクライアント側エラーが発生することがあります。
./asadmin get --monitor=true "server.*" I/O Error: Read timed out Command get failed. |
詳細については、課題レポートを参照してください。
クライアントに返されるデータの量を最小限にします。
最上位の要素を返す asadmin list -m "server.*" コマンドを実行します。
詳細を知る必要がある最上位の要素を選択して、これをフィルタとして使用します。次に例を示します。
> ./asadmin list -m "server.*" ... server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-cache server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods. create-int-int-[Lorg\.spec\.jappserver\.supplier\.helper\.ComponentOrder server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods. findByPrimaryKey-java\.lang\.Integer server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods.generateXml server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods.getEJBLocalHome ... >./asadmin get -m "server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods.*" ... server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods.remove. methodstatistic-name = MethodStatistic server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods.remove. methodstatistic-starttime = 1259604209775 ... |
updatetool コマンドで起動されたスタンドアロン更新ツールが、アドオンコンポーネントのインストール中に Solaris のセグメンテーション障害によって失敗します。
詳細については、課題レポートを参照してください。
システムがUpdate Center のリリースノートで定められているスタンドアロン更新ツールのパスの要件に従っていることを確認してください。
管理コンソールでの更新ツールの機能では、Java ベースのさまざまな Update Center API が使用されているので、この問題による影響は受けません。
Ruby アプリケーションがコンテキストルート '/' に配備され、その後管理コンソールへのアクセスが行われた場合、Ruby アプリケーションにアクセスすると 404 エラーが発生します。
詳細については、課題レポートを参照してください。
ありません。
Java Web Start を使用してアプリケーションクライアントを起動すると、アプリケーションクライアントのすべての Managed Bean が認識されなくなります。
詳細については、課題レポートを参照してください。
appclient スクリプトを使用してアプリケーションクライアントを起動します。これによりアプリケーションクライアントの Managed Bean が正常にサポートされます。
Apple の Java が実装された Mac OS X システム上で appclient スクリプトを呼び出すと、次のスタックトレースが 2 回表示されます (ここには最初の数行のみが示されています)。
Intentionally suppressing recursive invocation exception! java.lang.IllegalStateException: recursive invocation at java.lang.ClassLoader.initSystemClassLoader(ClassLoader.java:1394) at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:1377) at sun.security.jca.ProviderConfig$1.run(ProviderConfig.java:64) ... |
詳細については、課題レポートを参照してください。
回避する必要はありません。
警告メッセージが出ても、クライアントは正常に起動されて実行されます。これらのエラーは Apple の Java 実装の問題に由来しています。
問題が発生するのは、次のすべてに該当する場合です。
アプリケーションが EAR で、ここにアプリケーションクライアントが含まれる。
EAR がディレクトリ配備である。
EAR がアプリケーションクライアントモジュール myAppClient.jar を含む。ディレクトリ配備であるため、これは myAppClient_jar として事前に展開されている(この myApp は EAR の名前であり、不特定です)。
サーバー上に生成されたファイルが誤ったサーバーディレクトリに配置され、別の生成ファイルを上書きするため、アプリケーションクライアントを起動しようとすると次のエラーで失敗します。
java.lang.ClassNotFoundException:(main-class-for-the-client) |
詳細については、課題レポートを参照してください。
アプリケーションクライアントの名前を myAppClient.jar 以外の名前に変更します。具体的には次のとおりです。
myApp/META-INF/application.xml を編集して、クライアントの宣言を <java>myClient.jar</java> とします。myAppClient.jar 以外の名前を使用してください。
ディレクトリ名を myApp/myAppClient_jar から myApp/myClient_jar に変更します。クライアントのサブディレクトリ名は application.xml ファイルで指定されたアプリケーションクライアントの URL と同じにする必要がありますが、.jar を _jar に置き換えてください。
アプリケーションを配備します。
asadmin deploy --retrieve localdir myApp |
アプリケーションクライアントを実行します。
appclient -client localdir/myAppClient.jar |
管理コンソールで、「ロガーの設定」ページにある「一般」タブのサーバーログの値を変更してもすぐに効果が現れません。
詳細については、課題レポートを参照してください。
サーバーを再起動します。このページのすべての値は、サーバーを再起動しないと変更が有効になりません。
グラフィカルインストーラによるインストール処理の最後に表示される「Summary」ページで、リンクをクリックしてもインストールログファイルを開くことができません。
詳細については、課題レポートを参照してください。
ファイルに手動でアクセスしてください。インストールログとサマリーファイルの名前は、timestamp-install.log および timestamp-install-summary.html です。Linux および Mac システムでは、これらのファイルは $TMP ディレクトリの下に作成されます。
同じインストールディレクトリに Enterprise Server (更新ツール付き) を同じデフォルト設定で再インストールして、updatetool コマンドを実行すると、更新ツールがインストールされていないというメッセージが表示され、ツールをインストールするかどうか確認されます。これは Windows システムのみで発生します。
詳細については、課題レポートを参照してください。
アンインストールした後、再インストールの前に残った .org* ディレクトリを手動で削除してください。
この問題は Windows と Mac OS システムでしばしば発生します。pkg(5) が特定のシステムで機能しないときがあります。
詳細については、Update Center 課題レポート を参照してください。
ありません。
インラインヘルプと CLI のマニュアルページで、X-Powered-By フィールドにサーブレットのバージョンが 2.4 と記載されます。正しいバージョンは Servlet 3.0 です。
詳細については、課題レポートを参照してください。
ありません。
glassfish-embedded-all-3.0-b73.jar を含む組み込みを使用した場合、配備が失敗して次のエラーが表示されます。
SEVERE: WEB9051: Error trying to scan the classes at /private/var/folders/CV/CVhj8DvqEwGK5bdJKK9TaE TI/-Tmp- /gfembed6991712842235699248tmp/applications/xwiki-enterprise-web-2.0/ WEB-INF/lib/activation-1.1.jar for annotations in which a ServletContainerInitializer has expressed interest java.util.zip.ZipException: error in opening zip file |
この問題が発生するのは、組み込みでプラス記号 (+) を含むフォルダが使用され、パスが復号化されるときにプラス記号が空白文字 " " に変換されるためです。
詳細については、課題レポートを参照してください。
一時ディレクトリを配置できるようなシステムプロパティーが追加されました。そのプロパティーは glassfish.embedded.tmpdir で、一時ドメインディレクトリがユーザーディレクトリ内に配置されないように設定できます。
Solaris で passwordfile に AS_ADMIN_USER が指定されていないと create-service でサービスを作成できません。
詳細については、課題レポートを参照してください。
ありません。
Enterprise Server は、ツリー構造を使って監視可能なオブジェクトを追跡します。このツリー内で、次のビューを使用して接続プールの統計を取得することができません。
server.connector-service.resource-adapter-name .connection-pool-name .* または server.jms-service.connection-factories. connection-factory-name.* (jms-ra-related pools の場合)。
詳細については、課題レポートを参照してください。
server.resources.* ビューを使用して統計を取得します。
監視の詳細については、『Sun GlassFish Enterprise Server v3 管理ガイド』の第 8 章「監視サービスの管理」を参照してください。
ウィービングが有効化されていると、組み込み可能要素の要素集合からヌルポインタ例外がスローされる可能性があります。
詳細については、EclipseLink 課題レポートを参照してください。
2 つの回避策があります。
組み込み可能要素に注釈 @ChangeTracking(DEFFERED) を追加し、プロパティー eclipselink.weaving.internal を false に設定します。
persistence.xml で次のプロパティーを false に設定します。eclipselink.weaving.changetracking、eclipselink.weaving.internal。
ドメインを開始して localhost:4848 にアクセスすると、サーバーログに次のメッセージが書き込まれています。
[#|2009-11-27T16:21:57.091+1100|INFO|glassfishv3.0| javax.enterprise.system.container.web.com.sun.enterprise.web| _ThreadID=20;_ThreadName=Thread-1;|Created virtual server server|#] |
[#|2009-11-27T16:21:57.091+1100|INFO|glassfishv3.0| javax.enterprise.system.container.web.com.sun.enterprise.web| _ThreadID=20;_ThreadName=Thread-20;|Created virtual server server|#] |
このメッセージは、仮想サーバー (server) が 2 回起動されたような印象を与えますが、この場合には当てはまりません。仮想サーバーは 1 回起動されただけですが、ログが複数記録されています。
詳細については、課題レポートを参照してください。
ありません。
サーバーからのメッセージが限定されているため、JPA のデバッグが困難です。
詳細については、課題レポートを参照してください。
logging.properties ファイルにプロパティー org.eclipse.persistence.session.level=INFO を追加します。これにより 管理コンソール を使用して EclipseLink ロガーを制御することができます。
ターゲット EJB が同一ホスト上にあると (別の Enterprise Server ドメインまたは別の Enterprise Server v3 インスタンス)、リモート EJB の EJB 相互運用が不可能になります。
詳細については、課題レポートを参照してください。
jvm-options: で次のプロパティーを設定します。
-Dorg.glassfish.orb.iiop.orbserverid=:
Windows Vista と Windows 7 でのインストール中に、Enterprise Server のグラフィカルインストーラが 41% のところでハングアップします。これは、インストールするたびに発生するわけではありません。
詳細については、課題レポートを参照してください。
これは Windows Vista と Windows 7 の自動チューニング機能 (デフォルトで有効) に関連しています。
Enterprise Server の初回インストールの際、またはパッケージの追加や更新適用の際にハングアップが発生する場合は、自動チューニング機能を制限するか無効にしてください。
デフォルトでは、Enterprise Server の JMS サービスのデフォルトホスト名は localhost です。ただし、別のシステムから JMS サービスにアクセスするには、ホスト名を変更する必要があります。これは実際のホスト名、または 0.0.0.0 に変更することができます。
詳細については、課題レポートを参照してください。
変更を行うには、次のいずれかの操作を行います。
管理コンソール を使用: 「設定」、「Java Message Service」、「JMS ホスト」ノードの順に展開して、default_JMS_host を選択し、「ホスト」フィールドを編集します。
次のように、asadmin サブコマンドを使用します。
asadmin set server-config.jms-service.jms-host.default_JMS_host.host="0.0.0.0" 、または
asadmin set server-config.jms-service.jms-host.default_JMS_host.host="hostname"
グラフィカルインストーラを使用して Enterprise Server をインストールした場合、インストールは正常に終了しますが、Windows システムメニューに GlassFish v3 の最上位のエントリのみが追加され、何も表示されません。この問題は各国語版と英語版の両方のインストーラで発生します。
詳細については、課題レポートを参照してください。
ありません。
deploy コマンドのマニュアルページで、--dbvendorname のサポートされるデータベースのリストに mysql が表示されません。これは誤りです。MySQL はサポートされるデータベースであり、リストに表示されるべきです。
詳細については、課題レポートを参照してください。
ありません。
ACC では、現在のスレッドのコンテキストクラスローダーが ACCClassLoader である必要があります。これは限定的すぎます。この条件は、appclient スクリプトおよび Java Web Start の起動では満たされますが、組み込みの場合は満たされない場合があります。ACC 内部の他の機能は、クラスローダーが URLClassLoader (または、URLClassLoader のサブクラスのインスタンス) であることを必要としますが、ローダーが ACCClassLoader である必要はありません。
詳細については、課題レポートを参照してください。
2 つの回避策があります。
-Djava.system.class.loader=org.glassfish.appclient.client.acc.ACCClassLoader を設定するか、
Java プログラムで、組み込みの ACC クラスおよびインタフェースを使用する前に、ACCClassLoader をインスタンス化し、Thread.currentThread().setContextClassLoader を使用して現在のスレッドのコンテキストクラスローダーに設定します。
MySQL でユーザーとして EJB タイマーを作成して保存できますが、MySQL で EJB Timer Service を設定しようとすると、次の例外が発生します (文の実行中の SQLException)。
"CREATE TABLE EJB__TIMER__TBL (TIMERID VARCHAR(255) NOT NULL, BLOB BLOB(64000), INITIALEXPIRATIONRAW BIGINT, SCHEDULE VARCHAR(255), INTERVALDURATION BIGINT, OWNERID VARCHAR(255), STATE INTEGER, LASTEXPIRATIONRAW BIGINT, PKHASHCODE INTEGER, CREATIONTIMERAW BIGINT, CONTAINERID BIGINT, PRIMARY KEY (TIMERID))": com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BLOB BLOB(64000), INITIALEXPIRATIONRAW BIGINT, SCHEDULE VARCHAR(255), INTERVALDU' at line 1|#] |
詳細については、課題レポートを参照してください。
タイマープールに指定された datasource-classname が、XA DataSource を表すようにします。
次の MySQL に固有の手順を実行します。
glassfishv3/glassfish/lib/install/applications/ejb-timer-service-app.war を展開します。
WEB-INF/classes/__ejb_timer_mappings.xml の <persistence-unit-metadata> のあとに、次の内容を追加します。
<persistence-unit-defaults> <delimited-identifiers/> </persistence-unit-defaults>
WEB-INF/classes/__ejb_timer_mappings.xml ファイルを再パッケージ化します。
(この手順は、現在のインストールですでに EJB Timer Service を使用している場合にのみ必要です。)次の create 文を使用して、手動で EJB__TIMER__TBL をデータベースに作成します。
CREATE TABLE `EJB__TIMER__TBL` (`TIMERID` VARCHAR(255) NOT NULL, `BLOB` BLOB(64000), `INITIALEXPIRATIONRAW` BIGINT, `SCHEDULE` VARCHAR(255), `INTERVALDURATION` BIGINT, `OWNERID` VARCHAR(255), `STATE` INTEGER, `LASTEXPIRATIONRAW` BIGINT, `PKHASHCODE` INTEGER, `CREATIONTIMERAW` BIGINT, `CONTAINERID` BIGINT, PRIMARY KEY (`TIMERID`))
--secure オプションを使用しなければ、セキュリティー保護されたサーバーで deploy サブコマンドが失敗します。
詳細については、課題レポートを参照してください。
セキュリティー保護されたサーバーで deploy サブコマンドを実行する場合は、--secure オプションを使用します。
Enterprise Server トラストストアにある認証局証明書の 1 つが、2010 年 1 月 7 日に期限切れになりました。期限切れになった証明書は cacerts.jks です。証明書の有効期限が切れたことを示すエラーメッセージが起動時に生成されます。
Version: V1 Subject: OU=Secure Server Certification Authority, O="RSA Data Security, Inc.", C=US Signature Algorithm: MD2withRSA, OID = 1.2.840.113549.1.1.2 Key: SunPKCS11-Solaris RSA public key, 1000 bits (id 17891456, session object) modulus: public exponent: Validity: [From: Tue Nov 08 19:00:00 GMT-05:00 1994, To: Thu Jan 07 18:59:59 GMT-05:00 2010] Issuer: OU=Secure Server Certification Authority, O="RSA Data Security, Inc.", C=US SerialNumber: [ 02ad667e 4e45fe5e 576f3c98 195eddc0] |
詳細については、課題レポートを参照してください。
期限切れの認証局証明書は、Java SE 6 の Update 18 で削除されました。今後の更新で、Enterprise Server のトラストストアからも削除されます。
エラーメッセージを無視して更新を使用するか、エラーメッセージの生成を止めることができます。エラーメッセージの受信を止めるには、keytool を使用して Enterprise Server のトラストストアから証明書を削除します。
=> cd domains/domainX/config => cp cacerts.jks cacerts.jks.save => keytool -delete -keystore cacerts.jks -alias verisignserverca Enter keystore password: |
今後作成するドメインで期限切れの証明書が再度表示されないようにするには、証明書をテンプレートのトラストストアからも削除してください。
=> cd glassfish/lib/templates => cp cacerts.jks cacerts.jks.save => keytool -delete -keystore cacerts.jks -alias verisignserverca Enter keystore password: |
キーストアパスワードの詳細については、『Sun GlassFish Enterprise Server v3 管理ガイド』の「認証」でマスターパスワードとキーストアに関する情報を参照してください。