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 Tom Jordahl <to...@macromedia.com> on 2003/01/28 22:33:44 UTC

RE: WSDL2Java throws a Null Pointer exception when processing mul tipa rt WSDL

This sounds like a bug to me, but it looks like it might be the WSDL4J code and not the Axis code.  You might want to try just using WSDL4J to see if it can read the multi-part WSDL without throwing a null pointer exception.


Tom Jordahl
Macromedia Server Development

-----Original Message-----
From: Richards, Mark [mailto:Mark.Richards@fmr.com] 
Sent: Tuesday, January 28, 2003 1:15 PM
To: 'axis-user@xml.apache.org'
Subject: WSDL2Java throws a Null Pointer exception when processing multipa rt WSDL

Hello, 
I have WebSphere service which is based on  Apache SOAP 2.x that has
multipart WSDL.
When I try to create a client with this, WSDL2Java throws a Null Pointer
Exception.

I have tried this with both release 1.0 and 1.1b.

	java org.apache.axis.wsdl.WSDL2Java
http://localhost:8080/simple/wsdl/smallTest-service.wsdl
	ava.lang.NullPointerException
	       at
org.apache.crimson.tree.ElementNode.getAttributeNodeNS(ElementNode.java:415)
	       at com.ibm.wsdl.util.xml.DOMUtils.getAttributeNS(Unknown
Source)
	       at
com.ibm.wsdl.util.xml.DOMUtils.getNamespaceURIFromPrefix(Unknown Source)
	       at
com.ibm.wsdl.util.xml.DOMUtils.getQualifiedAttributeValue(Unknown Source)
	       at com.ibm.wsdl.xml.WSDLReaderImpl.parsePort(Unknown Source)
	       at com.ibm.wsdl.xml.WSDLReaderImpl.parseService(Unknown
Source)
	       at com.ibm.wsdl.xml.WSDLReaderImpl.parseDefinitions(Unknown
Source)
	       at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
	       at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
	       at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
	       at
org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:369)
	       at
org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:358)
	       at
org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:243)
	       at java.lang.Thread.run(Thread.java:484)

It's easy enough to work around, I just merge the files into one,  but I
wanted to clarify if Axis is meant to support this? 

Here is the WSDL for a simple case.
service

<?xml version="1.0" encoding="UTF-8"?>
<definitions name="smallTestService"
 
targetNamespace="http://localhost:8080/simple/wsdl/smallTest-service.wsdl"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
 
xmlns:binding="http://www.smalltest.com/definitions/smallTestRemoteInterface
"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://localhost:8080/simple/wsdl/smallTest-service.wsdl">
    <import
        location="http://localhost:8080/simple/wsdl/smallTest-binding.wsdl"
namespace="http://www.smalltest.com/definitions/smallTestRemoteInterface"/>
    <service name="smallTestService">
        <port binding="binding:smallTestBinding" name="smallTestPort">
            <soap:address
location="http://localhost:8080/simple/servlet/rpcrouter"/>
        </port>
    </service>
</definitions>

Binding

<?xml version="1.0" encoding="UTF-8"?>
<definitions name="smallTest-binding"
 
targetNamespace="http://www.smalltest.com/definitions/smallTestRemoteInterfa
ce"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
 
xmlns:tns="http://www.smalltest.com/definitions/smallTestRemoteInterface"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <message name="echoIntRequest">
        <part name="myNum" type="xsd:int"/>
    </message>
    <message name="echoIntResponse">
        <part name="result" type="xsd:int"/>
    </message>
    <portType name="smallTest">
        <operation name="echoInt" parameterOrder="myNum">
            <input message="tns:echoIntRequest" name="echoIntRequest"/>
            <output message="tns:echoIntResponse" name="echoIntResponse"/>
        </operation>
    </portType>
    <binding name="smallTestBinding" type="tns:smallTest">
        <soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="echoInt">
            <soap:operation soapAction="" style="rpc"/>
            <input name="echoIntRequest">
                <soap:body
 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
                    namespace="http://tempuri.org/smallTest" use="encoded"/>
            </input>
            <output name="echoIntResponse">
                <soap:body
 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
                    namespace="http://tempuri.org/smallTest" use="encoded"/>
            </output>
        </operation>
    </binding>
</definitions>

Thanks,
Mark
==================
Mark Richards

Any views expressed are not necessarily those of my company !