Vorheriges Thema: AllgemeinNächstes Thema: Kennwort in Klartext gespeichert


Fehler, wenn viele Services dargestellt werden

Symptom:

Wenn viele Services von CA IdentityMinder angezeigt werden, generiert Axis2 eine große Stub-Klasse, die die JVM-Übersetzungsregel verletzt, und es wird folgender Fehler zurückgegeben:

error: code too large for try statement

Lösung:

Wenn Sie einen solchen Übersetzungsfehler erhalten, führen Sie folgende Schritte aus:

  1. Öffnen Sie die generierte Stub-Klassendatei aus folgendem Beispielverzeichnis:
    <samples_dir>\wsdl2java\src\tew6\wsdl
    

    Axis2 generiert die Stub-Klasse im folgenden Format:

    <Service_name>Stub.java
    

    Hinweis: Rufen Sie den Servicenamen aus WSDL ab.

  2. Teilen Sie in der Stub-Klassendatei die Methoden "fromOM" und "populateFaults". Folgendes Skript ist ein Beispiel für die Methode "fromOM" aus der Stub-Klassendatei:
    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. Teilen Sie das Methodenskript in zwei Hälften, und benennen Sie die andere Hälfte zum Beispiel "fromOMExtended".
  4. Rufen Sie die neu erstellte Methode von der Methode "fromOM" ab. Folgendes Skript ist ein Beispiel für die geänderte Methode "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. Wiederholen Sie die Schritte 3 und 4 für die Methode "populateFaults".
  6. Speichern Sie die Änderungen, und führen Sie folgenden Befehl vom Speicherort des Beispielverzeichnisses für die Kompilierung der Änderungen aus:
    sample_dir_location> ant -Dnowsdlgen=true
    

    Die Kompilierung gibt keinen Fehler zurück.