Rubrique précédente: GénéralRubrique suivante: Mot de passe stocké en texte clair


Erreur lors de l'utilisation de plusieurs services

Symptôme :

Lorsque plusieurs services sont affichés à partir de CA IdentityMinder, Axis2 génère une classe de stubs étendue enfreignant la règle de compilation de machine virtuelle Java et renvoie l'erreur suivante :

error: code too large for try statement

Solution

Lorsque cette erreur de compilation est renvoyée, procédez comme suit pour la corriger :

  1. Ouvrez le fichier de classe de stubs généré à partir du répertoire d'exemples suivant :
    <répertoire_exemples>\wsdl2java\src\tew6\wsdl
    

    Axis2 génère la classe de stubs au format suivant :

    <nom_service>Stub.java
    

    Remarque : Récupérez le nom du service à partir du code WSDL.

  2. Dans le fichier de classe de stubs, séparez les méthodes fromOM et populateFaults. Le script suivant est un exemple de méthode fromOM à partir du fichier de classe de stubs :
    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. Divisez le script de méthode en deux moitiés et nommez l'autre moitié, par exemple, fromOMExtended.
  4. Appelez cette méthode à partir de la méthode fromOM. Le script suivant est un exemple de méthode fromOM modifiée :
    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);
    }
    //Appeler la nouvelle méthode
    renvoie la valeur suivante : fromOMExtended(param, type, extraNamespaces);
    }
    
  5. Répétez les étapes 3 et 4 pour la méthode populateFaults.
  6. Enregistrez les modifications et exécutez la commande suivante à partir de l'emplacement du répertoire d'exemples, pour compiler les modifications :
    <emplacement_répertoire_exemples> ant -Dnowsdlgen=true
    

    La compilation ne renvoie aucune erreur.