2012-01-17 4 views
0

Voici la méthode qui sera accessible par de nombreux threads dans mon application. Après l'exécution réussie de certains threads, l'erreur suivante se produira après l'exécution réussie de certains threads.java.lang.StackOverflowError dans dom parser

java.lang.StackOverflowError 
    at java.lang.String.indexOf(String.java:1352) 
    at org.apache.xerces.dom.ElementNSImpl.getPrefix(Unknown Source) 
    at org.dom4j.io.DOMReader.readElement(DOMReader.java:169) 
    ......................................................... 
    ......................................................... 

Voici le résultat de la méthode supérieure définie pour le fil exécuté avec succès

<?xml version="1.0" encoding="UTF-8"?> 
<action_script> 
<command>SUSPEND^ 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:spi="http://nsn.com/npm/SoapProvisioningInterface/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <spi:updateService> 
      <spi:request> 
       <spi:service> 
        <spi:serviceIdentifier> 
         <spi:serviceCode>CFS_Residential_v1</spi:serviceCode> 
        </spi:serviceIdentifier> 
        <spi:attributes> 
        <spi:attribute spi:name="CallingSystem" xsi:type="spi:singlevalue"> 
          <spi:value xsi:type="xsd:string">OCS</spi:value> 
         </spi:attribute> 
         <spi:attribute spi:name="MSISDN" xsi:type="spi:singlevalue"> 
          <spi:value xsi:type="xsd:string">{MSISDN}</spi:value> 
         </spi:attribute> 
         <spi:attribute spi:name="HSSUserAdminBlock" xsi:type="spi:singlevalue"> 
          <spi:value xsi:type="xsd:boolean">true</spi:value> 
         </spi:attribute> 
         <spi:attribute spi:name="IMSPrivateID" xsi:type="spi:singlevalue"> 
         <spi:value xsi:type="xsd:string">{username}</spi:value> 
         </spi:attribute> 
         </spi:attributes> 
       </spi:service> 
      </spi:request> 
     </spi:updateService> 
    </soapenv:Body> 
</soapenv:Envelope> 
</command> 
<success_message>//ns1:updateServiceResponse</success_message> 
<command>DEACTIVATE^ 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:spi="http://nsn.com/npm/SoapProvisioningInterface/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <spi:updateService> 
      <spi:request> 
       <spi:service> 
        <spi:serviceIdentifier> 
         <spi:serviceCode>CFS_Residential_v1</spi:serviceCode> 
        </spi:serviceIdentifier> 
        <spi:attributes> 
        <spi:attribute spi:name="CallingSystem" xsi:type="spi:singlevalue"> 
          <spi:value xsi:type="xsd:string">OCS</spi:value> 
         </spi:attribute> 
         <spi:attribute spi:name="MSISDN" xsi:type="spi:singlevalue"> 
          <spi:value xsi:type="xsd:string">{MSISDN}</spi:value> 
         </spi:attribute> 
         <spi:attribute spi:name="HSSUserAdminBlock" xsi:type="spi:singlevalue"> 
          <spi:value xsi:type="xsd:boolean">true</spi:value> 
         </spi:attribute> 
         <spi:attribute spi:name="IMSPrivateID" xsi:type="spi:singlevalue"> 
         <spi:value xsi:type="xsd:string">{username}</spi:value> 
         </spi:attribute> 
         </spi:attributes> 
       </spi:service> 
      </spi:request> 
     </spi:updateService> 
    </soapenv:Body> 
</soapenv:Envelope> 
</command> 
<success_message>//ns1:updateServiceResponse</success_message> 
<command>ACTIVATE^ 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:spi="http://nsn.com/npm/SoapProvisioningInterface/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <spi:updateService> 
      <spi:request> 
       <spi:service> 
        <spi:serviceIdentifier> 
         <spi:serviceCode>CFS_Residential_v1</spi:serviceCode> 
        </spi:serviceIdentifier> 
        <spi:attributes> 
        <spi:attribute spi:name="CallingSystem" xsi:type="spi:singlevalue"> 
          <spi:value xsi:type="xsd:string">OCS</spi:value> 
         </spi:attribute> 
         <spi:attribute spi:name="MSISDN" xsi:type="spi:singlevalue"> 
          <spi:value xsi:type="xsd:string">{MSISDN}</spi:value> 
         </spi:attribute> 
         <spi:attribute spi:name="HSSUserAdminBlock" xsi:type="spi:singlevalue"> 
          <spi:value xsi:type="xsd:boolean">false</spi:value> 
         </spi:attribute> 
         <spi:attribute spi:name="IMSPrivateID" xsi:type="spi:singlevalue"> 
         <spi:value xsi:type="xsd:string">{username}</spi:value> 
         </spi:attribute> 
         </spi:attributes> 
       </spi:service> 
      </spi:request> 
     </spi:updateService> 
    </soapenv:Body> 
</soapenv:Envelope> 
</command> 
<success_message>//ns1:updateServiceResponse</success_message> 
</action_script> 
+1

À quoi ressemblent vos données? Est-ce propre et valide xml? –

+1

Ressemble à une boucle de récursion infinie, ne sais pas ce qui le provoque ... – esaj

+0

Ajouté au commentaire de Michael, essayez de poster un exemple de XML que vous obtenez en entrée pour ce code, si possible poster ici. – kosa

Répondre

1

Il pourrait tout simplement que votre document XML est si grand que d'essayer d'obtenir le tout dans une chaîne fait beaucoup de chanined appels de méthode et votre mémoire de pile devient pleine. Essayez allouer plus de mémoire de la pile via:

-Xss10m 

argument JVM

(si l'exécution d'Eclipse: faites un clic droit sur le projet -> Exécuter en tant que ... -> Exécuter les configurations -> onglet Arguments -> Arguments VM - > -Xss1m)

+1

Il suffit de garder à l'esprit que c'est 10 megs par thread ... –

+0

Myjbosss ne fonctionne pas avec la taille de la pile 10m donc j'ai mis 6m mais je suis confronté à la même erreur. – chetan