[ http://issues.apache.org/jira/browse/AXIS-2104?page=comments#action_12315290 ]
david barker commented on AXIS-2104: ------------------------------------ Thank you Dims, I did that, and WSDL2Java no longer crashes. Sadly though, the generated code behaves as though the wsdl doesn't mention dime at all. The server returns SOAP in DIME, with a large string that is attached and referenced. The genreated java client code fails to read the referenced attachment. When I make the server inline the string, so no DIME is used at all, just plain SOAP over HTTP, then the same generated code works fine. (when it was supposed to expect a DIME encoded message) It appears as though the stub implementation is just not expecting attachments, even though the WSDL does specify that it should (for this single operation on the binding). For the time being, I'm going back to the old hack I used, which is specify the result type as xsd:any, and get the attachment manually. I would suspect this is a server error, since it's a inhouse-developed server, but axis understands that there is an attachment, and the data in it is fine. Any suggestions would be welcome, but it's clear that the bug as I logged it, has an easy workaround. (I tried both axis 1.2.1 and 1.3 again) Dave. > wsdl output specified as being dime causes a NPE in WSDL2Java > ------------------------------------------------------------- > > Key: AXIS-2104 > URL: http://issues.apache.org/jira/browse/AXIS-2104 > Project: Apache Axis > Type: Bug > Components: WSDL processing > Versions: beta-3 > Environment: Windows 2000, Sun java build 1.5.0_02-b09, Axis 1.3 taken from > nightly build area, on 7th July 2005 (16:30 GMT) > Reporter: david barker > > I copied an example wsdl file I found: > I had a wsdl operation with an input that was specified as being DIME > encoded. WSDL2Java accepted it. > I added an output and similarly specified it as DIME. WSDL2Java crashed with > this stack: > java.lang.NullPointerException > at > org.apache.axis.wsdl.symbolTable.SymbolTable.fillInDIMEInformation(SymbolTable.java:2712) > at > org.apache.axis.wsdl.symbolTable.SymbolTable.fillInBindingInfo(SymbolTable.java:2627) > at > org.apache.axis.wsdl.symbolTable.SymbolTable.populateBindings(SymbolTable.java:2535) > at > org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:744) > at > org.apache.axis.wsdl.symbolTable.SymbolTable.add(SymbolTable.java:543) > at > org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:518) > at > org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:495) > at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361) > at java.lang.Thread.run(Unknown Source) > In version 1.2.1, the stack is not quite the same: > java.lang.NullPointerException > at > org.apache.axis.wsdl.symbolTable.SymbolTable.fillInDIMEInformation(SymbolTable.java:2751) > at > org.apache.axis.wsdl.symbolTable.SymbolTable.fillInBindingInfo(SymbolTable.java:2626) > at > org.apache.axis.wsdl.symbolTable.SymbolTable.populateBindings(SymbolTable.java:2534) > at > org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:744) > at > org.apache.axis.wsdl.symbolTable.SymbolTable.add(SymbolTable.java:543) > at > org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:518) > at > org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:495) > at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361) > at java.lang.Thread.run(Unknown Source) > WSDL is: > <?xml version="1.0" ?> > <wsdl:definitions > name="DIME Example" > targetNamespace="http://example.com/DimeExample/Service/" > xmlns:svc="http://example.com/DimeExample/Service/" > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" > xmlns:dime="http://schemas.xmlsoap.org/ws/2002/04/dime/wsdl/" > xmlns:content= "http://schemas.xmlsoap.org/ws/2002/04/content-type/" > xmlns:ref="http://schemas.xmlsoap.org/ws/2002/04/reference/" > xmlns:msg="http://example.com/DimeExample/Messages/" > xmlns:xs="http://www.w3.org/2001/XMLSchema"> > <wsdl:types> > <xs:schema > targetNamespace="http://example.com/DimeExample/Messages/" > elementFormDefault="qualified"> > > <xs:import > namespace="http://schemas.xmlsoap.org/ws/2002/04/content-type/"/> > <xs:import namespace="http://schemas.xmlsoap.org/ws/2002/04/reference/"/> > <xs:element name="PutCompanyInfo"> > <xs:complexType> > <xs:sequence> > > <xs:element name="tickerSymbol" type="xs:string"/> > <xs:element name="logo" type="msg:Logo" minOccurs="0"/> > <xs:element name="doc" type="msg:Doc" minOccurs="0" > maxOccurs="unbounded"/> > <xs:element name="report" type="msg:Report"/> > </xs:sequence> > </xs:complexType> > </xs:element> > > <xs:complexType name="ReferencedBinary"> > <xs:simpleContent> > <xs:extension base="xs:base64Binary"> > <xs:attribute ref="ref:location" use="optional"/> > </xs:extension> > </xs:simpleContent> > </xs:complexType> > <xs:complexType name="Logo"> > <xs:simpleContent> > <xs:restriction base="msg:ReferencedBinary"> > <xs:annotation> > <xs:appinfo> > <content:mediaType type="image/jpeg"/> > <content:mediaType type="image/gif"/> > </xs:appinfo> > </xs:annotation> > </xs:restriction> > </xs:simpleContent> > </xs:complexType> > <xs:complexType name="Doc"> > <xs:simpleContent> > <xs:restriction base="msg:ReferencedBinary"> > <xs:annotation> > <xs:appinfo> > <content:mediaType > type="text/html; charset=ISO-8859-1"/> > </xs:appinfo> > </xs:annotation> > </xs:restriction> > </xs:simpleContent> > </xs:complexType> > > <xs:complexType name="Report"> > <xs:simpleContent> > <xs:restriction base="msg:ReferencedBinary"> > <xs:annotation> > <xs:appinfo> > <content:documentType value="msg:report"/> > </xs:appinfo> > </xs:annotation> > </xs:restriction> > </xs:simpleContent> > </xs:complexType> > > <xs:element name="report"> > <xs:complexType> > <xs:sequence> > <xs:element name="title" type="xs:string"/> > <!-- etc. --> > </xs:sequence> > </xs:complexType> > </xs:element> > > </xs:schema> > </wsdl:types> > <wsdl:message name="PutCompanyInfo"> > <wsdl:part name="body" element="msg:PutCompanyInfo"/> > </wsdl:message> > <wsdl:portType name="PortType"> > <wsdl:operation name="PutCompanyInfo"> > <wsdl:input message="svc:PutCompanyInfo"/> > </wsdl:operation> > </wsdl:portType> > <wsdl:binding name="SoapDimeBinding" type="svc:PortType"> > > <soap:binding > transport="http://schemas.xmlsoap.org/soap/http" > style="document"/> > <wsdl:operation name="PutCompanyInfo"> > <soap:operation > soapAction="http://example.com/PutCompanyInfo"/> > <wsdl:input> > <dime:message > layout="http://schemas.xmlsoap.org/ws/2002/04/dime/closed-layout" > wsdl:required="true"/> > <soap:body parts="body" use="literal"/> > </wsdl:input> > <wsdl:output> > <dime:message > layout="http://schemas.xmlsoap.org/ws/2002/04/dime/closed-layout" > wsdl:required="true"/> > <soap:body use="literal"/> > </wsdl:output> > </wsdl:operation> > </wsdl:binding> > > <wsdl:service name="DimeExample"> > <wsdl:port name="SoapDimePort" binding="svc:SoapDimeBinding"> > <soap:address location="http://example.com/DimeExample/"/> > </wsdl:port> > </wsdl:service> > > </wsdl:definitions> -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
