2012-01-17 15 views
0

以下は、アプリケーションの多くのスレッドからアクセスされるメソッドです。DOMパーサのjava.lang.StackOverflowError

public static String getXMLAsString(org.dom4j.Document dom4jDocument) 
    { 

     String strXML=""; 
     try { 
      strXML = dom4jDocument.asXML();    

      } 
      catch(Exception e){ 
      e.printStackTrace(); 
      System.out.println("XMLUtility : General Exception :- "+e.getMessage()); 
     }  

     return strXML; 
    } 

いくつかのスレッドを正常に実行すると、次のエラーが発生します。

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) 
    ......................................................... 
    ......................................................... 

は、それは単にあなたのXML文書が1つの文字列にそれをすべてを取得しようとすると、chaninedをたくさん作るように大きさであることかもしれません正常に実行されたスレッド

<?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

あなたのデータはどうなっていますか?それはきれいで有効なxmlですか? –

+1

無限の再帰ループのように見えますが、何が原因か分かりません。 – esaj

+0

マイケルのコメントに追加されました。可能であれば、このコードの入力としてサンプルXMLを投稿しようとしています。 – kosa

答えて

1

ため、上に定義されたメソッドの結果でありますメソッド呼び出しとスタックメモリがいっぱいになります。経由してより多くのスタックメモリを割り当ててみます

-Xss10m 

JVM引数

(エクリプスから実行する場合:プロジェクトを右クリック - > [ファイル名を指定して実行として... - >実行構成] - > [引数]タブ - > [VM引数 - > -Xss1m)

+1

スレッドごとに10メガバイトです... –

+0

Myjbosssはスタックサイズ10mで動作しないので、6mを設定しましたが、まだ同じエラーに直面しています。 – chetan