Hi All,
I am having a problem with how some WSDL is being parsed. I think what is
happening is that I am receiving a FAULT message which we have somehow not
'told' xerces to expect (through the WSDL itself).
Question 1.
============
If the operation on a WSDL portType defines a fault message which is not
mirrored in the binding element. Does this matter? Could this mean that if
xerces found a fault message it wouldn't expect it - and thus find itself in
error?
I have in my project the following WSDL portType:
<portType name="CMLeJobSoapGetEmpBrand">
<operation name="EJobGetEmpBrand">
<input message="tns:EJobEmpBrdReq" name="EJobEmpBrdReq"/>
<output message="tns:EJobGetEmpBrdRes" name="EJobGetEmpBrdRes"/>
<fault message="tns:Fault" name="Fault"/>
</operation>
</portType>
and a binding to match it:
<binding name="MS_ALPHA_EJOB_PRJHTTP_SOAP_Binding_GetEmpBrand"
type="tns:CMLeJobSoapGetEmpBrand">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="EJobGetEmpBrand">
<soap:operation style="document" soapAction=""/>
<input name="EJobEmpBrdReq">
<soap:body encodingStyle=""
parts="EJobEmpBrdReqBody" use="literal"/>
</input>
<output name="EJobGetEmpBrdRes">
<soap:body encodingStyle=""
parts="EJobGetEmpBrdResBody" use="literal"/>
</output>
</operation>
</binding>
Question 2.
============
The underlying problem is that my Java parser is throwing an exception (full
trace at end of this message):
java.lang.Exception: WSWS3379E: Error: Prefix
http://schemas.xmlsoap.org/soap/envelope/ is undefined.
This was in response to a FAULT message (below) and the error looks as though
xerces didn't understand how to parse a fault - as though it wasn't expecting
it or something.
<?xml version="1.0" encoding="UTF-8" ?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<soapenv:Fault>
<faultcode>http://schemas.xmlsoap.org/soap/envelope/:EAI</faultcode>
<faultstring>Failure in EAI message processing</faultstring>
<faultactor>http://udeaib01:7080/CMLeJob/EJobFindDept</faultactor>
<detail>The request for service 01:7080/CMLeJob/EJobFindDept failed.2230
Caught exception and rethrowing,ImbComputeNode::evaluate,2488 Error detected,
rethrowing,SqlStatementGroup::execute,2949 User Generated SQL 'USER'
exception,SqlThrowExceptionStatement::execute,</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
Full trace for the exception I received:
2005-12-28 10:30:59,798 FATAL com.ibm.ws.webservices.engine.InternalException -
WSWS3227E: Error: Exception:
java.lang.Exception: WSWS3379E: Error: Prefix
http://schemas.xmlsoap.org/soap/envelope/ is undefined.
at
com.ibm.ws.webservices.engine.InternalException.<init>(InternalException.java:124)
at
com.ibm.ws.webservices.engine.encoding.ser.QNameDeserializer.makeValue(QNameDeserializer.java:119)
at
com.ibm.ws.webservices.engine.encoding.ser.SimpleDeserializer.onEndElement(SimpleDeserializer.java:209)
at
com.ibm.ws.webservices.engine.encoding.Deserializer.endElement(Deserializer.java:590)
at
com.ibm.ws.webservices.engine.events.DEventProcessor.onSimpleChild(DEventProcessor.java:243)
at
com.ibm.ws.webservices.engine.events.P2DConverter.flush(P2DConverter.java:728)
at
com.ibm.ws.webservices.engine.events.P2DConverter.endElement(P2DConverter.java:395)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
Source)
at
org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at
com.ibm.ws.webservices.engine.encoding.DeserializationContextImpl.parse(DeserializationContextImpl.java:251)
at
com.ibm.ws.webservices.engine.SOAPPart.getSOAPEnvelope(SOAPPart.java:882)
at com.ibm.ws.webservices.engine.SOAPPart.getFault(SOAPPart.java:1262)
at com.ibm.ws.webservices.engine.Message.getFault(Message.java:757)
at
com.ibm.ws.webservices.engine.Message.ifFaultThrowSelf(Message.java:737)
at
com.ibm.ws.webservices.engine.PivotHandlerWrapper.invoke(PivotHandlerWrapper.java:252)
at
com.ibm.ws.webservices.engine.WebServicesEngine.invoke(WebServicesEngine.java:255)
at
com.ibm.ws.webservices.engine.client.Connection.invokeEngine(Connection.java:688)
at
com.ibm.ws.webservices.engine.client.Connection.invoke(Connection.java:614)
at
com.ibm.ws.webservices.engine.client.Connection.invoke(Connection.java:444)
at
com.ibm.ws.webservices.engine.client.Stub$Invoke.invoke(Stub.java:662)
at
com.cml.hr.portal.eai.webservices.sap.MS_ALPHA_EJOB_PRJHTTP_SOAP_Binding_FindPositionsStub.EJobFindPositions(MS_ALPHA_EJOB_PRJHTTP_SOAP_Binding_FindPositionsStub.java:112)
at
com.cml.hr.portal.eai.webservices.sap.FindPositionsTestCase.testFindPositions(FindPositionsTestCase.java:115)
at java.lang.reflect.Method.invoke(Native Method)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:329)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:218)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:151)
2005-12-28 10:30:59,844 ERROR com.ibm.ws.webservices.engine.PivotHandlerWrapper
- WSWS3400I: Info: unexpected exception.
java.lang.NullPointerException
at java.io.FilterInputStream.read(FilterInputStream.java:128)
at com.ibm.ws.webservices.engine.SOAPPart.getBytes(SOAPPart.java:671)
at com.ibm.ws.webservices.engine.SOAPPart.getString(SOAPPart.java:788)
at com.ibm.ws.webservices.engine.SOAPPart.getAsString(SOAPPart.java:582)
at
com.ibm.ws.webservices.engine.SOAPPart.getSOAPEnvelope(SOAPPart.java:888)
at com.ibm.ws.webservices.engine.SOAPPart.getFault(SOAPPart.java:1262)
at com.ibm.ws.webservices.engine.Message.getFault(Message.java:757)
at
com.ibm.ws.webservices.engine.Message.ifFaultThrowSelf(Message.java:737)
at
com.ibm.ws.webservices.engine.PivotHandlerWrapper.invoke(PivotHandlerWrapper.java:252)
at
com.ibm.ws.webservices.engine.WebServicesEngine.invoke(WebServicesEngine.java:255)
at
com.ibm.ws.webservices.engine.client.Connection.invokeEngine(Connection.java:688)
at
com.ibm.ws.webservices.engine.client.Connection.invoke(Connection.java:614)
at
com.ibm.ws.webservices.engine.client.Connection.invoke(Connection.java:444)
at
com.ibm.ws.webservices.engine.client.Stub$Invoke.invoke(Stub.java:662)
at
com.cml.hr.portal.eai.webservices.sap.MS_ALPHA_EJOB_PRJHTTP_SOAP_Binding_FindPositionsStub.EJobFindPositions(MS_ALPHA_EJOB_PRJHTTP_SOAP_Binding_FindPositionsStub.java:112)
at
com.cml.hr.portal.eai.webservices.sap.FindPositionsTestCase.testFindPositions(FindPositionsTestCase.java:115)
at java.lang.reflect.Method.invoke(Native Method)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:329)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:218)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:151)
2005-12-28 10:30:59,876 INFO com.ibm.ws.webservices.engine.enterprise -
WSWS3243I: Info: Mapping Exception to WebServicesFault.
WebServicesFault
faultCode: Server.generalException
faultString: WSWS3400I: Info: unexpected exception.
faultActor: null
faultDetail:
WSWS3400I: Info: unexpected exception.
java.lang.NullPointerException
at java.io.FilterInputStream.read(FilterInputStream.java:128)
at com.ibm.ws.webservices.engine.SOAPPart.getBytes(SOAPPart.java:671)
at com.ibm.ws.webservices.engine.SOAPPart.getString(SOAPPart.java:788)
at com.ibm.ws.webservices.engine.SOAPPart.getAsString(SOAPPart.java:582)
at
com.ibm.ws.webservices.engine.SOAPPart.getSOAPEnvelope(SOAPPart.java:888)
at com.ibm.ws.webservices.engine.SOAPPart.getFault(SOAPPart.java:1262)
at com.ibm.ws.webservices.engine.Message.getFault(Message.java:757)
at
com.ibm.ws.webservices.engine.Message.ifFaultThrowSelf(Message.java:737)
at
com.ibm.ws.webservices.engine.PivotHandlerWrapper.invoke(PivotHandlerWrapper.java:252)
at
com.ibm.ws.webservices.engine.WebServicesEngine.invoke(WebServicesEngine.java:255)
at
com.ibm.ws.webservices.engine.client.Connection.invokeEngine(Connection.java:688)
at
com.ibm.ws.webservices.engine.client.Connection.invoke(Connection.java:614)
at
com.ibm.ws.webservices.engine.client.Connection.invoke(Connection.java:444)
at
com.ibm.ws.webservices.engine.client.Stub$Invoke.invoke(Stub.java:662)
at
com.cml.hr.portal.eai.webservices.sap.MS_ALPHA_EJOB_PRJHTTP_SOAP_Binding_FindPositionsStub.EJobFindPositions(MS_ALPHA_EJOB_PRJHTTP_SOAP_Binding_FindPositionsStub.java:112)
at
com.cml.hr.portal.eai.webservices.sap.FindPositionsTestCase.testFindPositions(FindPositionsTestCase.java:115)
at java.lang.reflect.Method.invoke(Native Method)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:329)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:218)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:151)
2005-12-28 10:30:59,907 ERROR
com.cml.hr.portal.eai.webservices.sap.FindPositionsTestCase -
testFindPositions() caught exception [WSWS3400I: Info: unexpected exception.;
nested exception is:
java.lang.NullPointerException] while accessing web service.
WebServicesFault
faultCode: Server.generalException
faultString: WSWS3400I: Info: unexpected exception.
faultActor: null
faultDetail:
WSWS3400I: Info: unexpected exception.
java.lang.NullPointerException
at java.io.FilterInputStream.read(FilterInputStream.java:128)
at com.ibm.ws.webservices.engine.SOAPPart.getBytes(SOAPPart.java:671)
at com.ibm.ws.webservices.engine.SOAPPart.getString(SOAPPart.java:788)
at com.ibm.ws.webservices.engine.SOAPPart.getAsString(SOAPPart.java:582)
at
com.ibm.ws.webservices.engine.SOAPPart.getSOAPEnvelope(SOAPPart.java:888)
at com.ibm.ws.webservices.engine.SOAPPart.getFault(SOAPPart.java:1262)
at com.ibm.ws.webservices.engine.Message.getFault(Message.java:757)
at
com.ibm.ws.webservices.engine.Message.ifFaultThrowSelf(Message.java:737)
at
com.ibm.ws.webservices.engine.PivotHandlerWrapper.invoke(PivotHandlerWrapper.java:252)
at
com.ibm.ws.webservices.engine.WebServicesEngine.invoke(WebServicesEngine.java:255)
at
com.ibm.ws.webservices.engine.client.Connection.invokeEngine(Connection.java:688)
at
com.ibm.ws.webservices.engine.client.Connection.invoke(Connection.java:614)
at
com.ibm.ws.webservices.engine.client.Connection.invoke(Connection.java:444)
at
com.ibm.ws.webservices.engine.client.Stub$Invoke.invoke(Stub.java:662)
at
com.cml.hr.portal.eai.webservices.sap.MS_ALPHA_EJOB_PRJHTTP_SOAP_Binding_FindPositionsStub.EJobFindPositions(MS_ALPHA_EJOB_PRJHTTP_SOAP_Binding_FindPositionsStub.java:112)
at
com.cml.hr.portal.eai.webservices.sap.FindPositionsTestCase.testFindPositions(FindPositionsTestCase.java:115)
at java.lang.reflect.Method.invoke(Native Method)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:329)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:218)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:151)
Thanks for any advice!
Kind regards,
Rob
:)
-------
Robert Mark Bram
Portal Analyst Programmer
eBusiness, Methodologies and Portals (eBM&P), Coles Myer Limited
[EMAIL PROTECTED]
+61 3 9635 1036
This email and any attachments may contain privileged and confidential
information and are intended for the named addressee only. If you have received
this e-mail in error, please notify the sender and delete this e-mail
immediately. Any confidentiality, privilege or copyright is not waived or lost
because this e-mail has been sent to you in error. It is your responsibility to
check this e-mail and any attachments for viruses. No warranty is made that
this material is free from computer virus or any other defect or error. Any
loss/damage incurred by using this material is not the sender's responsibility.
The sender's entire liability will be limited to resupplying the material.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]