前のトピック: 一般次のトピック: クリア テキストで格納されるパスワード


多数のサービスをエクスポーズする場合のエラー

問題の状況:

CA IdentityMinder から多数のサービスをエクスポーズすると、Axis2 によって、JVM コンパイル ルールに違反する大きなスタブ クラスが生成されます。その結果、以下のエラーが返されます。

error: code too large for try statement

解決方法:

このコンパイル エラーが表示される場合は、問題を解決するために、以下の手順を実行します。

  1. 以下のサンプル ディレクトリから、生成された スタブ クラス ファイルを開きます。
    <samples_dir>¥wsdl2java¥src¥tew6¥wsdl
    

    Axis2 は、以下の形式でスタブ クラスを生成します。

    <Service_name>Stub.java
    

    : WSDL からサービス名を取得してください。

  2. スタブ クラス ファイルで、fromOM メソッドと populateFaults メソッドを分割します。 以下のスクリプトは、スタブ クラス ファイルの fromOM メソッドの例です。
    public org.apache.xmlbeans.Xmlobject fromOM (
    org.apache.axiom.om.OMElement param,
    java.lang.Class type,
    java.util.Map extraNamespaces) throws
    org.apache.axis2.AxisFault {
    try {
    .......
    .......
    .......
    }catch (java.lang.Exception e) {
    throw org.apache.axis2.AxisFault.makeFault(e);
    }
    return null;
    }
    
  3. このメソッド スクリプトを二等分し、後半部分に名前(fromOMExtended など)を付けます。
  4. fromOM メソッドから新しく作成されたメソッドをコールします。 以下のスクリプトは、変更された fromOM メソッドの例です。
    public org.apache.xmlbeans.Xmlobject fromOM (
    org.apache.axiom.om.OMElement param,
    java.lang.Class type,
    java.util.Map extraNamespaces) throws
    org.apache.axis2.AxisFault {
    try {
    .......
    .......
    .......
    }catch (java.lang.Exception e) {
    throw org.apache.axis2.AxisFault.makeFault(e);
    }
    //invoking the new method
    return this. fromOMExtended(param, type, extraNamespaces);
    }
    
  5. populateFaults メソッドについて、手順 3 ~ 4 を繰り返します。
  6. 変更を保存し、サンプル ディレクトリの場所から以下のコマンドを実行して、変更をコンパイルします。
    sample_dir_location> ant -Dnowsdlgen=true
    

    このコンパイルではエラーが返されません。