You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by "Miller, Andy" <an...@hp.com> on 2003/06/25 17:43:57 UTC

Turning off sendMultiRefs causes OutOfMemoryError (PLAINTEXT)

*** I apologize for the previous message being in RTF, here's the plain
text version. ***
 
I can find no reference to this problem anywhere in this mailing list so
I was hoping someone could shed some light on it.  Basically my
situation is that the soap testing tool we are using to diff soap
results can't handle mutlirefs, so I set the "sendMultiRefs" option in
my .wsdd config file to "false".  When I do this though, the Axis
servlet spins for about 20 seconds and then throws an OutOfMemoryError.
With this setting set to "true" the result is returned just fine.  

I've tried most of the recent Axis 1.1 Release Candidates, and now the
full on 1.1 Release, all give me this problem. 
Is there some facet of SOAP that we are using in the response that
cannot be handled with mutlirefs=false? I would think it would be
simpler to serialize to xml without mulitrefs.

The pertinent details are as follows (I can provide WSDL and Java
Objects if needed): 

*** SOAP Result (with multirefs=true): 

HTTP/1.0 200 OK 
Date: Wed, 25 Jun 2003 15:59:27 GMT 
Server: WebLogic WebLogic Server 7.0 SP2  Sun Jan 26 23:09:32 PST 2003
234192 
Content-Type: text/xml; charset=utf-8 
Set-Cookie:
JSESSIONID=25GfTFKpzpWESCnXAOACiUm4pLfu8oLnwkGd7wuEZYXuXldCWPmj!-1874272
230; path=/ 
Connection: Close 
<?xml version="1.0" encoding="UTF-8"?> 
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <soapenv:Body> 
  <ns1:createUserResponse
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="HPPService"> 
   <ns1:createUserReturn href="#id0"/> 
  </ns1:createUserResponse> 
  <multiRef id="id0" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="ns2:CreateUserResult"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns2="http://result.asl.hppcbl.globalops.hp.com">
   <faults xsi:type="soapenc:Array" soapenc:arrayType="ns4:Fault[5]"
xmlns:ns3="urn:hppcbl"
xmlns:ns4="http://common.hppcbl.globalops.hp.com">
    <item href="#id1"/> 
    <item href="#id2"/> 
    <item href="#id3"/> 
    <item href="#id4"/> 
    <item href="#id5"/> 
   </faults> 
   <value href="#id0"/> 
   <profileId xsi:type="xsd:string" xsi:nil="true"/> 
   <success xsi:type="xsd:boolean">false</success> 
  </multiRef> 
  <multiRef id="id3" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="ns5:Fault" xmlns:ns5="http://common.hppcbl.globalops.hp.com"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
   <code xsi:type="xsd:string">field.readonly</code> 
   <desc xsi:type="xsd:string">field is read only;not updatable using
this serivce [must be blank] </desc> 
   <fieldName xsi:type="xsd:string">creationAppId</fieldName> 
  </multiRef> 
  <multiRef id="id2" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="ns6:Fault" xmlns:ns6="http://common.hppcbl.globalops.hp.com"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
   <code xsi:type="xsd:string">field.forfutureuse</code> 
   <desc xsi:type="xsd:string">field reserved for future use [must be
blank] </desc> 
   <fieldName xsi:type="xsd:string">busAddrLocalizationCode</fieldName> 
  </multiRef> 
  <multiRef id="id4" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="ns7:Fault" xmlns:ns7="http://common.hppcbl.globalops.hp.com"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
   <code xsi:type="xsd:string">field.forfutureuse</code> 
   <desc xsi:type="xsd:string">field reserved for future use [must be
blank] </desc> 
   <fieldName xsi:type="xsd:string">cidNumber</fieldName> 
  </multiRef> 
  <multiRef id="id1" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="ns8:Fault" xmlns:ns8="http://common.hppcbl.globalops.hp.com"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
   <code xsi:type="xsd:string">field.forfutureuse</code> 
   <desc xsi:type="xsd:string">field reserved for future use [must be
blank] </desc> 
   <fieldName xsi:type="xsd:string">homeAddrLocalizationCode</fieldName>

  </multiRef> 
  <multiRef id="id5" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="ns9:Fault" xmlns:ns9="http://common.hppcbl.globalops.hp.com"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
   <code xsi:type="xsd:string">field.readonly</code> 
   <desc xsi:type="xsd:string">field is read only;not updatable using
this serivce [must be blank] </desc> 
   <fieldName xsi:type="xsd:string">brandedUnbranded</fieldName> 
  </multiRef> 
 </soapenv:Body> 
</soapenv:Envelope> 

*** Exception (with multirefs=false): 

     [java] (500)Internal Server Error 
     [java]     at
org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java
:630) 
     [java]     at
org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:128) 
     [java]     at
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.j
ava:71) 
     [java]     at
org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:150) 
     [java]     at
org.apache.axis.SimpleChain.invoke(SimpleChain.java:120) 
     [java]     at
org.apache.axis.client.AxisClient.invoke(AxisClient.java:180) 
     [java]     at
org.apache.axis.client.Call.invokeEngine(Call.java:2564) 
     [java]     at org.apache.axis.client.Call.invoke(Call.java:2553) 
     [java]     at org.apache.axis.client.Call.invoke(Call.java:2248) 
     [java]     at org.apache.axis.client.Call.invoke(Call.java:2171) 
     [java]     at org.apache.axis.client.Call.invoke(Call.java:1691) 
     [java]     at
com.hp.globalops.hppcbl.test.HPPServiceSoapBindingStub.execute(HPPServic
eSoapBindingStub.java:649) 
     [java]     at
com.hp.globalops.hppcbl.test.HPPServiceSoapBindingStub.createUser(HPPSer
viceSoapBindingStub.java:360)
     [java]     at
com.hp.globalops.hppcbl.test.cases.CreateUser.execute(CreateUser.java:31
) 
     [java]     at
com.hp.globalops.hppcbl.test.cases.HPPTestCase.perform(HPPTestCase.java:
20) 
     [java]     at
com.hp.globalops.hppcbl.test.HPPWSClient.execTest(HPPWSClient.java:130) 
     [java]     at
com.hp.globalops.hppcbl.test.HPPWSClient.main(HPPWSClient.java:86) 


Thanks!!!! 
Andy Miller 
HP 
Andy.miller@hp.com 






 

Re: Turning off sendMultiRefs causes OutOfMemoryError (PLAINTEXT)

Posted by Aleksander Slominski <as...@cs.indiana.edu>.
hi,

this looks like a case of circular reference:

  <multiRef id="id0" soapenc:root="0" 
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
xsi:type="ns2:CreateUserResult" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:ns2="http://result.asl.hppcbl.globalops.hp.com">

   <faults xsi:type="soapenc:Array" soapenc:arrayType="ns4:Fault[5]" 
xmlns:ns3="urn:hppcbl" xmlns:ns4="http://common.hppcbl.globalops.hp.com">

    <item href="#id1"/>
    <item href="#id2"/>
    <item href="#id3"/>
    <item href="#id4"/>
    <item href="#id5"/>
   </faults>
   <value href="#id0"/>
   <profileId xsi:type="xsd:string" xsi:nil="true"/>
   <success xsi:type="xsd:boolean">false</success>
  </multiRef>

note that  <value href="#id0"/> points to element containing it.

if no multiRef s used it should be detected that this can not be 
serialized - attempts to serialize it will lead to stack overflow when 
serializer calls itself to serialize the same object endlessly  ...

still i wonder what is the XML-serialization of this object graph that 
had no multi-refs and you use to diff in tests?

thanks,

alek

Miller, Andy wrote:

>*** I apologize for the previous message being in RTF, here's the plain
>text version. ***
> 
>I can find no reference to this problem anywhere in this mailing list so
>I was hoping someone could shed some light on it.  Basically my
>situation is that the soap testing tool we are using to diff soap
>results can't handle mutlirefs, so I set the "sendMultiRefs" option in
>my .wsdd config file to "false".  When I do this though, the Axis
>servlet spins for about 20 seconds and then throws an OutOfMemoryError.
>With this setting set to "true" the result is returned just fine.  
>
>I've tried most of the recent Axis 1.1 Release Candidates, and now the
>full on 1.1 Release, all give me this problem. 
>Is there some facet of SOAP that we are using in the response that
>cannot be handled with mutlirefs=false? I would think it would be
>simpler to serialize to xml without mulitrefs.
>
>The pertinent details are as follows (I can provide WSDL and Java
>Objects if needed): 
>
>*** SOAP Result (with multirefs=true): 
>
>HTTP/1.0 200 OK 
>Date: Wed, 25 Jun 2003 15:59:27 GMT 
>Server: WebLogic WebLogic Server 7.0 SP2  Sun Jan 26 23:09:32 PST 2003
>234192 
>Content-Type: text/xml; charset=utf-8 
>Set-Cookie:
>JSESSIONID=25GfTFKpzpWESCnXAOACiUm4pLfu8oLnwkGd7wuEZYXuXldCWPmj!-1874272
>230; path=/ 
>Connection: Close 
><?xml version="1.0" encoding="UTF-8"?> 
><soapenv:Envelope
>xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
>xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> <soapenv:Body> 
>  <ns1:createUserResponse
>soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>xmlns:ns1="HPPService"> 
>   <ns1:createUserReturn href="#id0"/> 
>  </ns1:createUserResponse> 
>  <multiRef id="id0" soapenc:root="0"
>soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>xsi:type="ns2:CreateUserResult"
>xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>xmlns:ns2="http://result.asl.hppcbl.globalops.hp.com">
>   <faults xsi:type="soapenc:Array" soapenc:arrayType="ns4:Fault[5]"
>xmlns:ns3="urn:hppcbl"
>xmlns:ns4="http://common.hppcbl.globalops.hp.com">
>    <item href="#id1"/> 
>    <item href="#id2"/> 
>    <item href="#id3"/> 
>    <item href="#id4"/> 
>    <item href="#id5"/> 
>   </faults> 
>   <value href="#id0"/> 
>   <profileId xsi:type="xsd:string" xsi:nil="true"/> 
>   <success xsi:type="xsd:boolean">false</success> 
>  </multiRef> 
>  <multiRef id="id3" soapenc:root="0"
>soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>xsi:type="ns5:Fault" xmlns:ns5="http://common.hppcbl.globalops.hp.com"
>xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
>   <code xsi:type="xsd:string">field.readonly</code> 
>   <desc xsi:type="xsd:string">field is read only;not updatable using
>this serivce [must be blank] </desc> 
>   <fieldName xsi:type="xsd:string">creationAppId</fieldName> 
>  </multiRef> 
>  <multiRef id="id2" soapenc:root="0"
>soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>xsi:type="ns6:Fault" xmlns:ns6="http://common.hppcbl.globalops.hp.com"
>xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
>   <code xsi:type="xsd:string">field.forfutureuse</code> 
>   <desc xsi:type="xsd:string">field reserved for future use [must be
>blank] </desc> 
>   <fieldName xsi:type="xsd:string">busAddrLocalizationCode</fieldName> 
>  </multiRef> 
>  <multiRef id="id4" soapenc:root="0"
>soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>xsi:type="ns7:Fault" xmlns:ns7="http://common.hppcbl.globalops.hp.com"
>xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
>   <code xsi:type="xsd:string">field.forfutureuse</code> 
>   <desc xsi:type="xsd:string">field reserved for future use [must be
>blank] </desc> 
>   <fieldName xsi:type="xsd:string">cidNumber</fieldName> 
>  </multiRef> 
>  <multiRef id="id1" soapenc:root="0"
>soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>xsi:type="ns8:Fault" xmlns:ns8="http://common.hppcbl.globalops.hp.com"
>xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
>   <code xsi:type="xsd:string">field.forfutureuse</code> 
>   <desc xsi:type="xsd:string">field reserved for future use [must be
>blank] </desc> 
>   <fieldName xsi:type="xsd:string">homeAddrLocalizationCode</fieldName>
>
>  </multiRef> 
>  <multiRef id="id5" soapenc:root="0"
>soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>xsi:type="ns9:Fault" xmlns:ns9="http://common.hppcbl.globalops.hp.com"
>xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
>   <code xsi:type="xsd:string">field.readonly</code> 
>   <desc xsi:type="xsd:string">field is read only;not updatable using
>this serivce [must be blank] </desc> 
>   <fieldName xsi:type="xsd:string">brandedUnbranded</fieldName> 
>  </multiRef> 
> </soapenv:Body> 
></soapenv:Envelope> 
>
>*** Exception (with multirefs=false): 
>
>     [java] (500)Internal Server Error 
>     [java]     at
>org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java
>:630) 
>     [java]     at
>org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:128) 
>     [java]     at
>org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.j
>ava:71) 
>     [java]     at
>org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:150) 
>     [java]     at
>org.apache.axis.SimpleChain.invoke(SimpleChain.java:120) 
>     [java]     at
>org.apache.axis.client.AxisClient.invoke(AxisClient.java:180) 
>     [java]     at
>org.apache.axis.client.Call.invokeEngine(Call.java:2564) 
>     [java]     at org.apache.axis.client.Call.invoke(Call.java:2553) 
>     [java]     at org.apache.axis.client.Call.invoke(Call.java:2248) 
>     [java]     at org.apache.axis.client.Call.invoke(Call.java:2171) 
>     [java]     at org.apache.axis.client.Call.invoke(Call.java:1691) 
>     [java]     at
>com.hp.globalops.hppcbl.test.HPPServiceSoapBindingStub.execute(HPPServic
>eSoapBindingStub.java:649) 
>     [java]     at
>com.hp.globalops.hppcbl.test.HPPServiceSoapBindingStub.createUser(HPPSer
>viceSoapBindingStub.java:360)
>     [java]     at
>com.hp.globalops.hppcbl.test.cases.CreateUser.execute(CreateUser.java:31
>) 
>     [java]     at
>com.hp.globalops.hppcbl.test.cases.HPPTestCase.perform(HPPTestCase.java:
>20) 
>     [java]     at
>com.hp.globalops.hppcbl.test.HPPWSClient.execTest(HPPWSClient.java:130) 
>     [java]     at
>com.hp.globalops.hppcbl.test.HPPWSClient.main(HPPWSClient.java:86) 
>
>
>Thanks!!!! 
>Andy Miller 
>HP 
>Andy.miller@hp.com 
>
>
>
>
>
>
> 
>  
>


-- 
"Mr. Pauli, we in the back are all agreed that your theory is crazy. 
What divides us is whether it is crazy enough to be true." Niels H. D. Bohr