Ken,
Could u please log a JIRA bug and then upload your WSDL?
thanks,
dims
On 5/12/06, Ken Campbell <[EMAIL PROTECTED]> wrote:
Hi,
Sorry to bang on about this but I tried removing the targetNamespace
entirely from my wsdl and then re-ran WSDL2Java to see if the namespace
declarations in the soap:body of the message could be removed.
So now I am asking why WSDL2Java throws:
Invalid QName value: Can't resolve prefix 'gen361' ?
I don't have a 'gen361' prefix in my schema.
Regards,
Ken
<WSDL2Java exception follows :>
>WSDL2Java -uri ..\DEVELOP\paf\PAF.wsdl -ss -sd -g -d xmlbeans -o
..\DEVELOP\paf -p edp.ws.paf.generated
Using AXIS2_HOME: C:\Apache\Tomcat5\webapps\axis2\WEB-INF
Using JAVA_HOME: C:\Program Files\Java\jdk1.5.0_04
org.apache.axis2.wsdl.codegen.CodeGenerationException
: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at
org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGener
ationEngine.java:185)
at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:32)
at org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:21)
Caused by: java.lang.RuntimeException:
java.lang.reflect.InvocationTargetExcepti
on
at
org.apache.axis2.wsdl.codegen.extension.XMLBeansExtension.engage(XMLB
eansExtension.java:93)
at
org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGener
ationEngine.java:140)
... 2 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.apache.axis2.wsdl.codegen.extension.XMLBeansExtension.engage(XMLB
eansExtension.java:83)
... 3 more
Caused by: java.lang.RuntimeException: org.apache.xmlbeans.XmlException:
error:
Invalid QName value: Can't resolve prefix 'gen361'
at
org.apache.axis2.xmlbeans.CodeGenerationUtility.processSchemas(CodeGe
nerationUtility.java:192)
... 8 more
Caused by: org.apache.xmlbeans.XmlException: error: Invalid QName value:
Can't r
esolve prefix 'gen361'
at
org.apache.xmlbeans.impl.schema.SchemaTypeSystemCompiler.compile(Sche
maTypeSystemCompiler.java:225)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.xmlbeans.XmlBeans.compileXmlBeans(XmlBeans.java:665)
at
org.apache.axis2.xmlbeans.CodeGenerationUtility.processSchemas(CodeGe
nerationUtility.java:161)
... 8 more
________________________________________
From: Ken Campbell [mailto:[EMAIL PROTECTED]
Sent: 12 May 2006 15:10
To: [email protected]
Subject: RE: [Axis2 1.0] MessageContext question
Hi,
Further to my question, the data binding error is thrown by
org.apache.xmlbeans.SchemaTypeLoader.parse(XmlStreamReader, SchemaType,
XmlOptions) in one of my bound classes (LoginRequestDocument). However, with
the msgContext.getEnvelope() line placed in the code shown below it manages
to generate a LoginRequestDocument and a LoginResponseDocument (both of
which make sense) before the exception is thrown!? Surely there either is a
data binding error or there is not. How can it have it both ways? Here is
the SOAP envelope for the request:
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header />
<soapenv:Body>
<LoginRequest xmlns="paf.ws.edp.co.uk">
<env>default</env>
<userID>test</userID>
<password>test</password>
</LoginRequest>
</soapenv:Body>
</soapenv:Envelope>
Regards,
Ken
________________________________________
From: Ken Campbell [mailto:[EMAIL PROTECTED]
Sent: 12 May 2006 11:07
To: [email protected]
Subject: [Axis2 1.0] MessageContext question
Hi,
If someone understands the AxisEngine well I'd appreciate them having a look
at this problem:
I'm having a data binding error which I don't understand. In an attempt to
trace it I've called:
System.out.println(msgContext.getEnvelope());
in MyMessageReceiverInOut.invokeBusinessLogic()
This seems to have a very weird effect. By placing it here :
…
if("login".equals(methodName)){
uk.co.edp.ws.paf.LoginResponseDocument param11 = null;
System.out.println(msgContext.getEnvelope());
//doc style
param11 =skel.login(
(uk.co.edp.ws.paf.LoginRequestDocument)fromOM(
msgContext.getEnvelope().getBody().getFirstElement(),
uk.co.edp.ws.paf.LoginRequestDocument.class,
getEnvelopeNamespaces(msgContext.getEnvelope())));
envelope = toEnvelope(getSOAPFactory(msgContext), param11,
false);
System.out.println("toEnvelope() returned.");
…
the service classes will return a valid param11, but axis throws an
exception:
- Servlet.service() for servlet AxisServlet threw exception
java.lang.NullPointerException
at
com.ctc.wstx.util.BijectiveNsMap.findPrefixByUri(BijectiveNsMap.java:132)
at
com.ctc.wstx.sw.SimpleOutputElement.getPrefix(SimpleOutputElement.java:453)
at
org.apache.axiom.om.impl.serialize.StreamingOMSerializer.serializeAttributes
(StreamingOMSerializer.java:214)
at
org.apache.axiom.om.impl.serialize.StreamingOMSerializer.serializeElement(St
reamingOMSerializer.java:147)
at
org.apache.axiom.om.impl.serialize.StreamingOMSerializer.serializeNode(Strea
mingOMSerializer.java:73)
at
org.apache.axiom.om.impl.serialize.StreamingOMSerializer.serialize(Streaming
OMSerializer.java:56)
at
org.apache.axiom.om.impl.util.OMSerializerUtil.serializeByPullStream(OMSeria
lizerUtil.java:315)
at
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.
java:786)
at
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMEl
ementImpl.java:809)
at
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.
java:780)
at
org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvel
opeImpl.java:171)
at
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMEl
ementImpl.java:809)
at
org.apache.axiom.om.impl.llom.OMNodeImpl.serializeAndConsume(OMNodeImpl.java
:381)
at
org.apache.axis2.transport.http.CommonsHTTPTransportSender.sendUsingOutputSt
ream(CommonsHTTPTransportSender.java:256)
at
org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTT
PTransportSender.java:210)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:589)
at
org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(Abstract
InOutSyncMessageReceiver.java:43)
at
org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:454)…..
- Servlet.service() for servlet jsp threw exception
java.lang.IllegalStateException: getOutputStream() has already been called
for this response….
So my question is, it seems as if MessageContext.getEnvelope() in some way
'consumes' the data stream. How is it possible
that I am getting a response from my service classes when I do this and that
no other class complains about my intercepting msgContext until
BijectiveNsMap ? The data binding error is normally thrown in
MyMessageReceiverInOut.fromOM() at the request but when I call
msgContext.getEnvelope()
it happily goes off and gets a proper response!
Regards,
Ken
--
Davanum Srinivas : http://wso2.com/blogs/