I’m trying to generate Java service classes from a WSDL definition I have already created. My current problem is that it fails with the following message, no more detail than that:
Unable to generate JAX-WS Source.
Reason:
java.lang.NullPointerException
(yay~ for verboseness)
I am using MuleStudio 1.3.0, which is based on Eclipse 3.6.1. I have tried creating these classes both from Mule’s components and from the WSDL directly, but I get the same error.
I mixed up the WSDL on purpose and it correctly started throwing validation errors. This means that it’s reading the file and parsing it properly. Not clue about what happens next.
How may I troubleshoot this?
Below is my wsdl file for reference:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://tempuri.org/ListenerService/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
name="ListenerService"
targetNamespace="http://tempuri.org/ListenerService/">
<!-- types -->
<wsdl:types>
<!-- Generic TransactionLog entities -->
<xsd:schema targetNamespace="http://tempuri.org/ListenerService/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:simpleType name="LevelEnumeration">
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="Debug" />
<xsd:enumeration value="Info" />
<xsd:enumeration value="Warning" />
<xsd:enumeration value="Error" />
<xsd:enumeration value="Fatal" />
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="LogEntry">
<sequence>
<xsd:element name="CorrelationToken" type="xsd:normalizedString"/>
<xsd:element name="SystemId" type="xsd:normalizedString"/>
<xsd:element name="Level" type="tns:LevelEnumeration"/>
<xsd:element name="Description" type="xs:string" />
<xsd:element name="RecordData" type="xs:string" />
<xsd:element name="Timestamp" type="xs:dateTime" />
</sequence>
</xsd:complexType>
<!-- Service Specific Types -->
<xsd:simpleType name="GenericResponseStatusEnumeration">
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="Success" />
<xsd:enumeration value="Error" />
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="ListenerServiceGenericResponse">
<sequence>
<xsd:element name="Status" type="tns:GenericResponseStatusEnumeration" />
<xsd:element name="Detail" type="xsd:string" minOccurs="0" maxOccurs="1" />
</sequence>
</xsd:complexType>
<xsd:element name="LogEntry" type="tns:LogEntry" />
<xsd:element name="ServiceResponse" type="tns:ListenerServiceGenericResponse" />
</xsd:schema>
</wsdl:types>
<!-- service message types -->
<wsdl:message name="SubmitLogRequest">
<wsdl:part name="LogEntry" type="tns:LogEntry" />
</wsdl:message>
<wsdl:message name="SubmitLogResponse">
<wsdl:part name="Response" type="tns:ListenerServiceGenericResponse" />
</wsdl:message>
<!-- service messages -->
<wsdl:portType name="ListenerService">
<wsdl:operation name="SubmitLog">
<wsdl:input message="tns:SubmitLogRequest" />
<!-- TODO: Remove this to make it a one-way operation -->
<wsdl:output message="tns:SubmitLogResponse" />
</wsdl:operation>
</wsdl:portType>
<!-- service bindings -->
<wsdl:binding name="ListenerServiceSOAP">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="SubmitLog">
<soap:operation soapAction="http://tempuri.org/ListenerService/SubmitLog" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="ListenerService">
<wsdl:port binding="tns:ListenerServiceSOAP" name="ListenerServiceSOAP">
<soap:address location="http://tempuri.org" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
I would try calling the jaxws wsimport command directly on your Wsdl from a command line.
I believe it comes with the JDK now so you shouldn’t even have to download it.
You may have run into a bug which has been fixed in a later version of wsimport.