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 Pedro Salazar <pe...@ptinovacao.pt> on 2003/10/07 15:53:50 UTC
WSDL: operation with attachment?
Greetings,
I read many threads on this list about SOAP attachments but I didn't saw
a sample of well formed WSDL document with SOAP attachments (only java
implementation code). I was looking in http://www.w3.org/TR/wsdl for
more details but my WSDL sample throws this error on the
<axis-wsdl2java> task:
....
[axis-wsdl2java] java.io.IOException: <input ..>, <output ..> or <fault
..> in <portType> with undefined message found. message name is
'{http://www.ptinovacao.pt/nginpro/interfaces/wsdl}NGINPro_testWSAtachRequest'
[axis-wsdl2java] at
org.apache.axis.wsdl.symbolTable.SymbolTable.ensureOperationMessageValid(SymbolTable.java:1064)
[axis-wsdl2java] at
org.apache.axis.wsdl.symbolTable.SymbolTable.ensureOperationValid(SymbolTable.java:1094)
[axis-wsdl2java] at
org.apache.axis.wsdl.symbolTable.SymbolTable.ensureOperationsOfPortTypeValid(SymbolTable.java:1141)
[axis-wsdl2java] at
org.apache.axis.wsdl.symbolTable.SymbolTable.populatePortTypes(SymbolTable.java:1158)
[axis-wsdl2java] at
org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:576)
[axis-wsdl2java] at
org.apache.axis.wsdl.symbolTable.SymbolTable.add(SymbolTable.java:421)
[axis-wsdl2java] at
org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:408)
[axis-wsdl2java] at
org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:393)
[axis-wsdl2java] at
org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:245)
[axis-wsdl2java] at java.lang.Thread.run(Thread.java:534)
My WSDL document is:
<wsdl ...>
<types>
<schema ..>
...
<complexType name="ArrayOfBinary">
<complexContent>
<restriction base="soapenc:Array">
<attribute ref="soapenc:arrayType"
wsdl:arrayType="xsd:binary[]"/>
</restriction>
</complexContent>
</complexType>
</schema>
</types>
<message name="NGINPro_testWSAttachRequest">
<part name="aXML" type="xsd:string"/>
</message>
<message name="NGINPro_testWSAttachResponse">
<part name="result" type="tns:ArrayOfBinary"/>
</message>
<message name="NGINProException">
<part name="fault" type="xsd:string"/>
</message>
<portType ..>
...
<operation name="testWSAttach"
parameterOrder="aXML">
<input message="tns:NGINPro_testWSAtachRequest"/>
<output message="tns:NGINPro_testWSAttachResponse"/>
<fault name="NGINProException"
message="tns:NGINProException" />
</operation>
</portType>
<binding ...>
...
<operation name="testWSAttach">
<input>
<mime:mimeXml/>
</input>
<output>
<mime:content type="*/*"/>
</output>
<fault name="NGINProException">
<soap:fault
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
use="encoded"
namespace="http://www.ptinovacao.pt/nginpro/interfaces/wsdl"/>
</fault>
<soap:operation soapAction="testWSAttach"/>
</operation>
<soap:binding
transport="http://schemas.xmlsoap.org/soap/http"
style="rpc"/>
</binding>
<service .../>
</wsdl>
Any hints or advice for a WSDL definition with a operation with SOAP
attachments?
thanks,
Pedro Salazar.
--
PS
pedro-b-salazar@ptinovacao.pt
PGP:0E129E31D803BC61
Re: WSDL: operation with attachment?
Posted by Pedro Salazar <pe...@ptinovacao.pt>.
Greetings,
First of all a few changes in my original post that I solved::
1)
> ...
> <complexType name="ArrayOfBinary">
> <complexContent>
> <restriction base="soapenc:Array">
> <attribute ref="soapenc:arrayType"
> wsdl:arrayType="xsd:binary[]"/>
> </restriction>
> </complexContent>
> </complexType>
- I changed the xsd:binary[] to xsd:base64Binary[].
(the "xsd:binary[]" must be a mistake in th WSDL 1.1 specification)
2)
> <operation name="testWSAttach"
> parameterOrder="aXML">
> <input message="tns:NGINPro_testWSAtachRequest"/>
> <output message="tns:NGINPro_testWSAttachResponse"/>
> <fault name="NGINProException"
> message="tns:NGINProException" />
> </operation>
Here was a misspelling in the name of the input message (it misses a the
letter 't').
*Now*,
I finally can generate the interfaces of my service *BUT* I have a
byte[][] in my service method where I was expecting the java object data
javax.activation.DataHandler like the specification of JAXRPC refers.
public byte[][] testWSAttach(java.lang.String aXML) throws
java.rmi.RemoteException,
pt.ptinovacao.nginpro.interfaces.service.NGINProException {
return null;
}
Shouldn't I use the DataHandler to be used as a SOAP attachment???
thanks,
Pedro Salazar.
--
PS
pedro-b-salazar@ptinovacao.pt
PGP:0E129E31D803BC61