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 Martin Grüneberg <ma...@active-group.de> on 2005/09/19 10:21:38 UTC
[axis 1.2.1] Trouble with randomly occuring Errors
Hi,
I'm stuck here with a problem. I use axis 1.2.1 on a tomcat5.5 server (jdk
1.5) and on the client side (jdk 1.4.2). The client and the server transmit
large objects over some methods (up to 30MB) which I serialize and transport
attachements (DataHandler). Most of the method calls work quite good but I
get randomly error messages on calling a simple method which takes a string
and results in a boolean. The method works or works not which I can not
understand.
Here is a part of the stacktrace on the client side.
On the server side everything seems to be ok (nothing in the logs).
19-09-2005 09:33:51,156 ERROR (Message.writeTo() 536) - Exception:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.NullPointerException
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.lang.NullPointerException
at
org.apache.axis.attachments.AttachmentsImpl.writeContentToStream(Attachments
Impl.java:473)
at org.apache.axis.Message.writeTo(Message.java:534)
at
org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:511)
at
org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
at
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:
32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2765)
at org.apache.axis.client.Call.invoke(Call.java:2748)
at org.apache.axis.client.Call.invoke(Call.java:2424)
at org.apache.axis.client.Call.invoke(Call.java:2347)
at org.apache.axis.client.Call.invoke(Call.java:1804)
at
activegroup.dba.webservice.DBA_WS_BindingStub.existsStorageObject(DBA_WS_Bin
dingStub.java:682)
at
activegroup.dba.webservice.WebserviceClientAccessWrapper.existsStorageObject
(WebserviceClientAccessWrapper.java:108)
....
Here the defining parts of the wedl which I usewd to generate the
stubs/skelletons (wsdl2java
<wsdl:definitions xmlns:apachesoap="http://xml.apache.org/xml-soap"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapencoding="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="urn:webservice" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="dba"
targetNamespace="urn:webservice">
<wsdl:types>
<xsd:schema
targetNamespace="http://xml.apache.org/xml-soap">
<xsd:import
namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
.... More ...
</xsd:schema>
</wsdl:types>
<!-- Messages -->
<wsdl:message name="emptyMsg"/>
<wsdl:message name="booleanMsg">
<wsdl:part name="boolean" type="xsd:boolean"/>
</wsdl:message>
<wsdl:message name="stringMsg">
<wsdl:part name="string" type="xsd:string"/>
</wsdl:message>
.... More ...
<wsdl:portType name="dbaPT">
<wsdl:operation name="existsStorageObject">
<wsdl:input message="tns:stringMsg"
name="existsStorageObjectInMsg"/>
<wsdl:output message="tns:booleanMsg"
name="existsStorageObjectResponse"/>
</wsdl:operation>
.... More ...
</wsdl:portType>
<wsdl:binding name="DBA_WS_Binding" type="tns:dbaPT">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="existsStorageObject">
<wsdl:input name="existsStorageObjectInMsg">
<soap:body namespace="urn:webservice"
use="literal"/>
</wsdl:input>
<wsdl:output name="existsStorageObjectResponse">
<soap:body namespace="urn:webservice"
use="literal"/>
</wsdl:output>
</wsdl:operation>
.... More ...
</wsdl:binding>
<wsdl:service name="DBAService">
<wsdl:port binding="tns:DBA_WS_Binding" name="DBAService">
<soap:address
location="http://localhost/dba/services/DBAService"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
I hope someone can give me a hint why this non deterministic behaviour
happens!
Kind regards
Martin Grüneberg
____________
Virus checked by G DATA AntiVirusKit
Version: AVK 16.534 from 19.09.2005
Virus news: www.antiviruslab.com
Re: [axis 1.2.1] Trouble with randomly occuring Errors ---> Error handling in org.apache.axis.Message writeTo Method???
Posted by Davanum Srinivas <da...@gmail.com>.
Please log a bug report with your wsdl, and soap traces.
thanks,
dims
On 9/19/05, Martin Grüneberg <ma...@active-group.de> wrote:
> Tracked the problem down to the class org.apache.axis.Message
>
> public void writeTo(java.io.OutputStream os) throws SOAPException,
> IOException {
> //Do it the old fashion way.
> if (getSendType() == Attachments.SEND_TYPE_NONE || mAttachments ==
> null || 0 == mAttachments.getAttachmentCount()) {
> try {
> String charEncoding = XMLUtils.getEncoding(this,
> msgContext);;
> mSOAPPart.setEncoding(charEncoding);
> mSOAPPart.writeTo(os);
> } catch (java.io.IOException e) {
> log.error(Messages.getMessage("javaIOException00"), e);
> }
> } else {
> try {
> mAttachments.writeContentToStream(os);
> } catch (java.lang.Exception e) {
> ????---> log.error(Messages.getMessage("exception00"), e);
> }
> }
> }
> I always don't know why the method call sometimes work and sometimes not.
> I don't know why axis wants to write to a attachement in case of a simple
> method (boolean existsStorageObject(String). (more about my mapping in my
> first mail.)
> I also don't know how to interpret the catch clouse without a throw.
> Did my call work or not? Can I ignore the Execption????
> When I can't ignore it why is the Exception not send up the call stack??
>
> Really confused about this.
>
> Greetings Martin
>
> -----Ursprüngliche Nachricht-----
> Von: Martin Grüneberg [mailto:martin.grueneberg@active-group.de]
> Gesendet: Montag, 19. September 2005 10:22
> An: axis-user@ws.apache.org
> Betreff: [axis 1.2.1] Trouble with randomly occuring Errors
>
> Hi,
> I'm stuck here with a problem. I use axis 1.2.1 on a tomcat5.5 server (jdk
> 1.5) and on the client side (jdk 1.4.2). The client and the server transmit
> large objects over some methods (up to 30MB) which I serialize and transport
> attachements (DataHandler). Most of the method calls work quite good but I
> get randomly error messages on calling a simple method which takes a string
> and results in a boolean. The method works or works not which I can not
> understand.
>
> Here is a part of the stacktrace on the client side.
> On the server side everything seems to be ok (nothing in the logs).
>
> 19-09-2005 09:33:51,156 ERROR (Message.writeTo() 536) - Exception:
> AxisFault
> faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
> faultSubcode:
> faultString: java.lang.NullPointerException
> faultActor:
> faultNode:
> faultDetail:
>
> {http://xml.apache.org/axis/}stackTrace:java.lang.NullPointerException
> at
> org.apache.axis.attachments.AttachmentsImpl.writeContentToStream(Attachments
> Impl.java:473)
> at org.apache.axis.Message.writeTo(Message.java:534)
> at
> org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:511)
> at
> org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
> at
> org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:
> 32)
> at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
> at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
> at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
> at org.apache.axis.client.Call.invokeEngine(Call.java:2765)
> at org.apache.axis.client.Call.invoke(Call.java:2748)
> at org.apache.axis.client.Call.invoke(Call.java:2424)
> at org.apache.axis.client.Call.invoke(Call.java:2347)
> at org.apache.axis.client.Call.invoke(Call.java:1804)
> at
> activegroup.dba.webservice.DBA_WS_BindingStub.existsStorageObject(DBA_WS_Bin
> dingStub.java:682)
> at
> activegroup.dba.webservice.WebserviceClientAccessWrapper.existsStorageObject
> (WebserviceClientAccessWrapper.java:108)
> ....
>
> Here the defining parts of the wedl which I usewd to generate the
> stubs/skelletons (wsdl2java
>
> <wsdl:definitions xmlns:apachesoap="http://xml.apache.org/xml-soap"
> xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:soapencoding="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:tns="urn:webservice" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="dba"
> targetNamespace="urn:webservice">
> <wsdl:types>
> <xsd:schema
> targetNamespace="http://xml.apache.org/xml-soap">
> <xsd:import
> namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
>
> .... More ...
>
> </xsd:schema>
> </wsdl:types>
> <!-- Messages -->
> <wsdl:message name="emptyMsg"/>
> <wsdl:message name="booleanMsg">
> <wsdl:part name="boolean" type="xsd:boolean"/>
> </wsdl:message>
> <wsdl:message name="stringMsg">
> <wsdl:part name="string" type="xsd:string"/>
> </wsdl:message>
> .... More ...
>
> <wsdl:portType name="dbaPT">
> <wsdl:operation name="existsStorageObject">
> <wsdl:input message="tns:stringMsg"
> name="existsStorageObjectInMsg"/>
> <wsdl:output message="tns:booleanMsg"
> name="existsStorageObjectResponse"/>
> </wsdl:operation>
>
> .... More ...
>
> </wsdl:portType>
>
> <wsdl:binding name="DBA_WS_Binding" type="tns:dbaPT">
> <soap:binding style="rpc"
> transport="http://schemas.xmlsoap.org/soap/http"/>
> <wsdl:operation name="existsStorageObject">
> <wsdl:input name="existsStorageObjectInMsg">
> <soap:body namespace="urn:webservice"
> use="literal"/>
> </wsdl:input>
> <wsdl:output name="existsStorageObjectResponse">
> <soap:body namespace="urn:webservice"
> use="literal"/>
> </wsdl:output>
> </wsdl:operation>
>
> .... More ...
>
> </wsdl:binding>
>
> <wsdl:service name="DBAService">
> <wsdl:port binding="tns:DBA_WS_Binding" name="DBAService">
> <soap:address
> location="http://localhost/dba/services/DBAService"/>
> </wsdl:port>
> </wsdl:service>
>
> </wsdl:definitions>
>
> I hope someone can give me a hint why this non deterministic behaviour
> happens!
>
> Kind regards
> Martin Grüneberg
>
>
> ____________
> Virus checked by G DATA AntiVirusKit
> Version: AVK 16.534 from 19.09.2005
> Virus news: www.antiviruslab.com
>
>
> ____________
> Virus checked by G DATA AntiVirusKit
> Version: AVK 16.534 from 19.09.2005
> Virus news: www.antiviruslab.com
>
>
--
Davanum Srinivas : http://wso2.com/ - Oxygenating The Web Service Platform
[axis 1.2.1] Trouble with randomly occuring Errors ---> Error handling in org.apache.axis.Message writeTo Method???
Posted by Martin Grüneberg <ma...@active-group.de>.
Tracked the problem down to the class org.apache.axis.Message
public void writeTo(java.io.OutputStream os) throws SOAPException,
IOException {
//Do it the old fashion way.
if (getSendType() == Attachments.SEND_TYPE_NONE || mAttachments ==
null || 0 == mAttachments.getAttachmentCount()) {
try {
String charEncoding = XMLUtils.getEncoding(this,
msgContext);;
mSOAPPart.setEncoding(charEncoding);
mSOAPPart.writeTo(os);
} catch (java.io.IOException e) {
log.error(Messages.getMessage("javaIOException00"), e);
}
} else {
try {
mAttachments.writeContentToStream(os);
} catch (java.lang.Exception e) {
????---> log.error(Messages.getMessage("exception00"), e);
}
}
}
I always don't know why the method call sometimes work and sometimes not.
I don't know why axis wants to write to a attachement in case of a simple
method (boolean existsStorageObject(String). (more about my mapping in my
first mail.)
I also don't know how to interpret the catch clouse without a throw.
Did my call work or not? Can I ignore the Execption????
When I can't ignore it why is the Exception not send up the call stack??
Really confused about this.
Greetings Martin
-----Ursprüngliche Nachricht-----
Von: Martin Grüneberg [mailto:martin.grueneberg@active-group.de]
Gesendet: Montag, 19. September 2005 10:22
An: axis-user@ws.apache.org
Betreff: [axis 1.2.1] Trouble with randomly occuring Errors
Hi,
I'm stuck here with a problem. I use axis 1.2.1 on a tomcat5.5 server (jdk
1.5) and on the client side (jdk 1.4.2). The client and the server transmit
large objects over some methods (up to 30MB) which I serialize and transport
attachements (DataHandler). Most of the method calls work quite good but I
get randomly error messages on calling a simple method which takes a string
and results in a boolean. The method works or works not which I can not
understand.
Here is a part of the stacktrace on the client side.
On the server side everything seems to be ok (nothing in the logs).
19-09-2005 09:33:51,156 ERROR (Message.writeTo() 536) - Exception:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.NullPointerException
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.lang.NullPointerException
at
org.apache.axis.attachments.AttachmentsImpl.writeContentToStream(Attachments
Impl.java:473)
at org.apache.axis.Message.writeTo(Message.java:534)
at
org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:511)
at
org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
at
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:
32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
at org.apache.axis.client.Call.invokeEngine(Call.java:2765)
at org.apache.axis.client.Call.invoke(Call.java:2748)
at org.apache.axis.client.Call.invoke(Call.java:2424)
at org.apache.axis.client.Call.invoke(Call.java:2347)
at org.apache.axis.client.Call.invoke(Call.java:1804)
at
activegroup.dba.webservice.DBA_WS_BindingStub.existsStorageObject(DBA_WS_Bin
dingStub.java:682)
at
activegroup.dba.webservice.WebserviceClientAccessWrapper.existsStorageObject
(WebserviceClientAccessWrapper.java:108)
....
Here the defining parts of the wedl which I usewd to generate the
stubs/skelletons (wsdl2java
<wsdl:definitions xmlns:apachesoap="http://xml.apache.org/xml-soap"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapencoding="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="urn:webservice" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="dba"
targetNamespace="urn:webservice">
<wsdl:types>
<xsd:schema
targetNamespace="http://xml.apache.org/xml-soap">
<xsd:import
namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
.... More ...
</xsd:schema>
</wsdl:types>
<!-- Messages -->
<wsdl:message name="emptyMsg"/>
<wsdl:message name="booleanMsg">
<wsdl:part name="boolean" type="xsd:boolean"/>
</wsdl:message>
<wsdl:message name="stringMsg">
<wsdl:part name="string" type="xsd:string"/>
</wsdl:message>
.... More ...
<wsdl:portType name="dbaPT">
<wsdl:operation name="existsStorageObject">
<wsdl:input message="tns:stringMsg"
name="existsStorageObjectInMsg"/>
<wsdl:output message="tns:booleanMsg"
name="existsStorageObjectResponse"/>
</wsdl:operation>
.... More ...
</wsdl:portType>
<wsdl:binding name="DBA_WS_Binding" type="tns:dbaPT">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="existsStorageObject">
<wsdl:input name="existsStorageObjectInMsg">
<soap:body namespace="urn:webservice"
use="literal"/>
</wsdl:input>
<wsdl:output name="existsStorageObjectResponse">
<soap:body namespace="urn:webservice"
use="literal"/>
</wsdl:output>
</wsdl:operation>
.... More ...
</wsdl:binding>
<wsdl:service name="DBAService">
<wsdl:port binding="tns:DBA_WS_Binding" name="DBAService">
<soap:address
location="http://localhost/dba/services/DBAService"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
I hope someone can give me a hint why this non deterministic behaviour
happens!
Kind regards
Martin Grüneberg
____________
Virus checked by G DATA AntiVirusKit
Version: AVK 16.534 from 19.09.2005
Virus news: www.antiviruslab.com
____________
Virus checked by G DATA AntiVirusKit
Version: AVK 16.534 from 19.09.2005
Virus news: www.antiviruslab.com