6. 障害解析

6.1. 障害の解析方法

6.2. 標準で採取される障害情報

6.3. 各ログファイルからの障害解析

6.4. その他(トラブルシューティング)

6.4.1. 開発環境

WebAP JSP Developer で発生する問題の解決方法を説明します。

No. 現象
1 ファイル転送時にエラーが発生する。
2 JSP開発ツール起動時に、プロジェクト、トランザクションまたはフェーズに関する情報が不正であることを示すメッセージが表示される。
3 JSP開発ツール使用中にメモリ不足(OutOfMemory)が発生する。
4 Cookie構造体がマッピングできない。
5 「フェーズ設定」ダイアログでHTMLを追加しようとすると、「TRタグはTABLEタグに含まれていません。TABLEタグの記述を確認してください。」と表示される。
6 最も内側のテーブルなのに列単位のマッピングができない。
7 コンパイルすると「ZIPファイルのクローズに失敗しました。」のエラーが表示される。
8 コンパイルするとHTMLをカスタマイズした部分でエラーになる。
9 IDL(IF)ファイルを変更したがJSP開発ツールに反映されない。
10 コンパイルに失敗する。

 ファイル転送時にエラーが発生する。

以下の原因が考えられます。

 JSP開発ツール起動時に、プロジェクト、トランザクションまたはフェーズに関する情報が不正であることを示すメッセージが表示される。

 JSP開発ツール起動時などに「トランザクション定義ファイルが存在しません。」や「フェーズプロパティファイル:***は存在しません。」などのエラーメッセージが表示された場合、JSP開発ツールが管理するファイル群が不正になっていることが考えられます。
 前回、名前の変更や削除を実行したときに、変更する権利がJSP開発ツールに与えられていなかったなどの原因が考えられます。その場合、以下に示す各JSP開発ツールのファイル群フォーマットを参考に不正になっている情報がないか確認してください。不正になっている部分があれば、修正してください。

<プロジェクト定義ファイル>

ファイル名:JSP開発ディレクトリ配下/project/プロジェクト名/conf/JSProj.conf
説明: プロジェクトに登録されているトランザクション名を列挙しています。

トランザクション名
トランザクション名
トランザクション名
トランザクション名
---------

 JSP開発ディレクトリ配下/project/プロジェクト名配下のトランザクションディレクトリ名とプロジェクト定義ファイルの内容が異なる場合には、トランザクション名の定義を削除するか、または名前を修正することにより、復旧されます。

<トランザクション定義ファイル>

ファイル名:トランザクション定義ファイル:JSP開発ディレクトリ配下/project/プロジェクト名/トランザクション名/conf/JSTrans.conf
説明:トランザクション全体に関する情報とトランザクションに登録されているフェーズ名を列挙しています。トランザクション全体に関する情報については修正の必要はありません。フェーズ名の列挙部分は、以下のように記述されます。

{
Phase1
Phase2
---------
}

JSP開発ディレクトリ配下/project/プロジェクト名/トランザクション名/work配下のフェーズプロパティファイル名とトランザクション定義ファイルの内容が異なる場合には、フェーズ名の定義を削除するまたは名前を修正することにより、復旧されます。

 JSP開発ツール使用中にメモリ不足(OutOfMemory)が発生する。

以下の原因が考えられます。

 Cookie構造体がマッピングできない。

WebブラウザのCookie情報を送受信するためのメソッドパラメータ「cookie」には以下の決まりがあります。
IDLの定義をみなおしてください。

詳細は、「Cookieパラメータ利用の手引き」を参照してください。

 「フェーズ設定」ダイアログでHTMLを追加しようとすると、「TRタグはTABLEタグに含まれていません。TABLEタグの記述を確認してください。」と表示される。

HTML構文の記述で、INPUTタグの">"がない、または<TD>〜</TD>、<TR>〜</TR>の係り受けが誤っているなどの理由が考えられます。
HTML作成ツールで作成しても、HTML構文が正しくない場合があります。HTMLをテキストエディタで確認してください。

 最も内側のテーブルなのに列単位のマッピングができない。

テーブルに列単位のマッピングをする場合は、構造体(struct)は一段でなければなりません。
マッピングしようとしている変数の型を確認してください。

 コンパイルすると「ZIPファイルのクローズに失敗しました。」のエラーが表示される。

コンパイルが失敗してクラスファイルが作成できていません。
ビルドパネルに表示されているコンパイルの失敗原因を取り除き再度コンパイルしてください。ビルドパネルの表示が途中できれている場合には、ビルドログ(JSP開発ディレクトリ\logs\build.log)でビルド情報を確認してください。

「環境設定」ダイアログでのJavaコンパイラの各種設定が間違っていることもあります。設定を見なおしてください。

 コンパイルするとHTMLをカスタマイズした部分でエラーになる。

カスタマイズ部分に記述している変数名がIDLで定義した内容と合っているか確認してください。
カスタマイズ部分のコメントの記述が正しいか確認してください。

 IDL(IF)ファイルを変更したがJSP開発ツールに反映されない。

「フェーズ設定」ダイアログを表示している状態でIDL(IF)ファイルを変更した場合、正しく反映されないことがあります。
IDL(IF)ファイルを変更する場合は、一旦JSP開発ツールを終了してください。
また、「フェーズ設定」ダイアログでフェーズ設定を行った後、IDL(IF)ファイルを更新した場合は、もう一度「フェーズ設定」ダイアログでフェーズ設定を行ってください。

 コンパイルに失敗する。

「環境設定」ダイアログの「コンパイラ」タブの「Javaコンパイラ−クラスパス」にクラスパスが正しく設定されているか確認してください。
Object Broker バージョン6.x以上またはObjectSpinnerバージョン5.xの場合は、「Javaコンパイラ−クラスパス」に設定するObject Brokerのjarファイル名はospiorb.jarではなく、ospiorb50.jarです。
MFDL移行の場合は、mfdl.jar(ObjectSpinnerバージョン4.xまたはObjectSpinner互換ライブラリを使用する場合)またはmfdl50.jar(Object Broker バージョン6.x以上またはObjectSpinnerバージョン5.xを使用する場合)へのパスが必要です。
Object Broker バージョン6.x以上またはObjectSpinnerバージョン5.xの場合で、WO_Baseから派生したインタフェースを定義しているIDLファイルを使用する場合は、WOTXBS90.jar へのパスが必要です。

6.4.2. 実行環境

WebAP JSPで発生する問題の解決方法を説明します。

No. 現象
1 Webサーバから「Internal Server Error」のメッセージが返された。
3 WebAP JSPのエラーログに「NameComponentの構築に失敗しました。」と出力される。
4 Webブラウザに出力される受信データが文字化けしている。
5 サーバAPで受け取ったデータが文字化けしている。
6 サーバAPにアクセス後の画面を表示しようとすると、「NameCompornentの構築に失敗しました」というエラーになる。
7 Object BrokerのBadOperationエラーが発生する。
8 フェーズ実行時、java.lang.VerifyErrorが発生する。
9 Webブラウザに「内部サーバー エラー 」、「Server Error」などと出力される。
10 トランザクションの実行がエラーになり、Webブラウザの表示、またはServletコンテナのエラーログに、「java.lang.ClassCastException」が出力される。
11 モアレッシモと連携して実行している場合、Servletコンテナのログに「org.xml.sax.SAXParseException」と出力される。
12 Webブラウザの表示、またはWebAP JSPのエラーログに「画面遷移チェックに必要なパラメータ(JSPNAME)の値が取得できません。」と出力される。
13 サーバAPでエラーになり、Servletコンテナのエラーログに、「Exception(Short Read)」が出力される。

 Webサーバから「Internal Server Error」のメッセージが返された。

まず、Webサーバの起動が完了していないことが考えられます。しばらく時間をおいて再度試してください。さらに同じエラーが発生する場合には、何らかの原因でServletコンテナまたはWebAP JSPが起動できないと思われます。エラーの原因についての情報は、インストールディレクトリ/logs/error.logまたはServletコンテナのエラーログに出力されます。

 WebAP JSPのエラーログに「NameComponentの構築に失敗しました。」と出力される。

「環境設定」ページの「名前サーバ名(CNSを使用しないとき)」もしくは「キャッシュ名前サーバ名(CNSを使用するとき)」に記述したホスト名が不正です。または、ホスト名がWebAP JSPを実行しているマシンでは識別できない名前です。hostsファイルに記述されていないなどが考えられます。

 Webブラウザに出力される受信データが文字化けしている。

Object Brokerのコードセットがサーバ側とクライアント側で一致していないことが考えられます。
クライアント側のコードセットは「環境設定」ページから設定できます。コードセットの詳細については、Object Brokerのマニュアルを参照してください。

また、WebAP JSPでJDK 1.5以上を使用する場合、JSP構文 <%@ page contentType="text/html; charset=エンコーディング名"%>のエンコーディング名に「SJIS」、「MS932」を指定すると、外字やIBM拡張文字などの機種依存文字が表示できません。この場合は「Windows-31J」を転送し直してしてください。

 サーバAPで受け取ったデータが文字化けしている。

コード変換に関する設定が正しく行われていないことが考えられます。
以下の設定を確認してください。

string型の引数でANK文字以外をサーバAPに送信している場合

WebAP JSPの運用管理/環境設定用JSPファイル(admin.jsp)の「環境設定」ページの「stringのUNICODE変換」が「行う」になっていること。

 サーバAPにアクセス後の画面を表示しようとすると、「NameCompornentの構築に失敗しました」というエラーになる。

など、サーバAP自体が起動していないケースであると思われます。WebOTXの運用管理ツールでサーバAPの状態を確認してください。

 Object BrokerのBadOperationエラーが発生する。

サーバAPで例外が発生していないか確認してください。

 フェーズ実行時、java.lang.VerifyErrorが発生する。

フェーズソース中の1つのメソッドのバイトコードサイズが、JavaVMの制限値65535を超えている可能性があります。入力項目数を見直すなどして、メソッドのサイズを減らしてください。
実行環境の「環境設定」ページの「フェーズオブジェクト作成タイミング」に「トランザクション実行時に全フェーズオブジェクトを作成」を指定している場合は、実行したフェーズだけでなく、トランザクション中のすべてのフェーズについて見直してください。

 Webブラウザに「内部サーバー エラー 」、「Server Error」などと出力される。

Webアプリケーションを作成したWebAP JSP Developer と、WebAP JSPで使用しているObject Brokerのバージョンが一致していることを確認してください。

WebOTX 3.x以上のインストール媒体に含まれているObject Brokerには、ObjectSpinner4.5互換用ライブラリ(ospievnt.jar、ospiname.jar、ospiorb.jar)とObject Broker6.x以上またはObjectSpinner5.xのライブラリ(ospievnt50.jar、ospiname50.jar、ospiorb50.jar)の2種類があります。Webアプリケーションを作成したWebAP JSP Developer と、WebAP JSPで使用しているObject Brokerのライブラリが同じであることを確認してください。

 トランザクションの実行がエラーになり、Webブラウザの表示、またはServletコンテナのエラーログに、「java.lang.ClassCastException」が出力される。

バージョン3.1x以前のWebAP JSP Developer で作成したトランザクションを読み込んで、「ソース作成」、「ビルド」を行ったとき、フェーズJavaソースファイルの上書きを行わなかったり、ソース作成、ビルドを途中でキャンセルし、フェーズJavaソースファイルをすべて再生成せずにWebアプリケーションをWebAP JSPに転送すると、実行環境上で正しく動作しません。
上記の場合は、そのトランザクションのすべてのフェーズJavaソースファイルを再生成し、再コンパイル後、WebAP JSPにファイル転送してください。

 モアレッシモと連携して実行している場合、Servletコンテナのログに「org.xml.sax.SAXParseException」と出力される。

HTMLファイルの記述がモアレッシモで解析できる形式になっていない可能性があります。Servletコンテナのログの「org.xml.sax.SAXParseException:」に続くメッセージを参照して、HTMLファイルの記述を見直してください。
モアレッシモと連携する場合のHTMLファイルの記述形式については、「HTMLファイルの記述形式」を参照してください。

 Webブラウザの表示、またはWebAP JSPのエラーログに「画面遷移チェックに必要なパラメータ(JSPNAME)の値が取得できません。」と出力される。

Servletコンテナのエラーログに「Exception(Short Read)」が出力されている場合は、Webブラウザからの通信中になんらかの障害が発生して、WebAP JSPがデータを受け取れなかった可能性があります。

Servletコンテナのエラーログに「Exception(Short Read)」が出力されていない場合は、前画面のJSPファイルに、JSPNAME(前画面のJSPファイル名を保持する識別子)が記述されているかどうか確認してください。記述がなければ、JSPファイルの再生成を行ってください。
また、HTML(JSP)ファイルをカスタマイズして、ハイパーリンクやJavaScriptなどでフェーズのURLを指定している場合は、URL中にJSPNAMEの記述があることを確認してください。

 サーバAPでエラーになり、Servletコンテナのエラーログに、「Exception(Short Read)」が出力される。

Webブラウザからの通信中になんらかの障害が発生して、WebAP JSPがデータを受け取れなかった可能性があります。

Short Readが発生した場合に、サーバAPにアクセスする前にエラーを検出するには、以下の方法でWebアプリケーションの再作成とWebAP JSPの環境設定を行ってください。 Short Read発生時、WebAP JSPで遷移エラーになります。

ただし、先頭フェーズ実行時は遷移エラーを検出できません。先頭フェーズでShort Readが発生しないようにするには、先頭フェーズを実行するリクエストをHTTPのGETメソッドにしてください。