Cannot Publish My WSDL - NSD Error

khookguy
User offline. Last seen 2 years 13 weeks ago. Offline
Joined: 04/10/2009
Points: 30

I have a web service (WSDL) named "StockTraderLogin" that I use for testing.  When I publish it using Presto (developer edition), and then try to load it, I get a dialog box with the following error message:

"Error Generating NSD info for Service : StockTraderLogin"

Here is a snippet of the stack trace from the presto.log:

Caused by: com.jackbe.jbp.sas.nsd.NSDException: NSDService.generateNSDForService: Error generating NSD Info for Service StockTraderLogin  :  project://local/ApplicationControllerService_schema6.xsd:7:3: error: sch-props-correct.2: Duplicate global type: account@http://account.stocktrader.demo.agileitinc.com/ (Original global type found in file: ApplicationControllerService_schema6.xsd)

I'm not 100% sure, but it seems like Presto is objecting to the fact that 'ApplicationControllerService_schema6.xsd' gets imported multiple times (at the top level WSDL, and also within some of the imported XSD files).  Presto seems to be throwing a 'duplicate global type' error for the 'account' type which is defined in 'ApplicationControllerService_schema6.xsd' because it gets imported more than once.  Can anyone confirm this behavior?

This same WSDL works fine with both the Java (JAX-WS) and C# proxy generating tools (among others) - so I'm assuming that the WSDL is OK with multiple imports of the same schema; and that this is a bug in how Presto handles the multiple imports.  But, maybe I'm wrong about this.  Any help would be much appreciated.

 

Below is the WSDL:

<definitions name="ApplicationControllerService" targetNamespace="http://stocktrader.demo.agileitinc.com/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://stocktrader.demo.agileitinc.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<types>
<xsd:schema>
<xsd:import namespace="http://yahoo.stocktrader.demo.agileitinc.com/" schemaLocation="ApplicationControllerService_schema1.xsd"/>
</xsd:schema>
<xsd:schema>
<xsd:import namespace="http://stocktrader.demo.agileitinc.com/" schemaLocation="ApplicationControllerService_schema2.xsd"/>
</xsd:schema>
<xsd:schema>

<xsd:import namespace="http://session.stocktrader.demo.agileitinc.com/" schemaLocation="ApplicationControllerService_schema3.xsd"/>
</xsd:schema>
<xsd:schema>
<xsd:import namespace="http://customer.stocktrader.demo.agileitinc.com/" schemaLocation="ApplicationControllerService_schema4.xsd"/>
</xsd:schema>
<xsd:schema>
<xsd:import namespace="http://admin.stocktrader.demo.agileitinc.com/" schemaLocation="ApplicationControllerService_schema5.xsd"/>
</xsd:schema>
<xsd:schema>

<xsd:import namespace="http://account.stocktrader.demo.agileitinc.com/" schemaLocation="ApplicationControllerService_schema6.xsd"/>
</xsd:schema>
</types>
<message name="sl_login_String_StringResponse">
<part name="parameters" element="tns:sl_login_String_StringResponse">
</part>
</message>
<message name="sl_refreshDemoData">
<part name="parameters" element="tns:sl_refreshDemoData">

</part>
</message>
<message name="QuoteServiceNotAvailableException">
<part name="fault" element="tns:QuoteServiceNotAvailableException">
</part>
</message>
<message name="sl_addCash_String_longResponse">
<part name="parameters" element="tns:sl_addCash_String_longResponse">
</part>

</message>
<message name="SessionExpiredException">
<part name="fault" element="tns:SessionExpiredException">
</part>
</message>
<message name="sl_addCash_String_long">
<part name="parameters" element="tns:sl_addCash_String_long">
</part>
</message>

<message name="sl_updateAccount_String_String_String_String_String_String_String_String_String">
<part name="parameters" element="tns:sl_updateAccount_String_String_String_String_String_String_String_String_String">
</part>
</message>
<message name="sl_trade_String_String_String_longResponse">
<part name="parameters" element="tns:sl_trade_String_String_String_longResponse">
</part>
</message>
<message name="sl_refreshDemoDataResponse">

<part name="parameters" element="tns:sl_refreshDemoDataResponse">
</part>
</message>
<message name="FailedToGetPriceException">
<part name="fault" element="tns:FailedToGetPriceException">
</part>
</message>
<message name="sl_getCustomer_StringResponse">
<part name="parameters" element="tns:sl_getCustomer_StringResponse">

</part>
</message>
<message name="sl_getQuote_String_String">
<part name="parameters" element="tns:sl_getQuote_String_String">
</part>
</message>
<message name="sl_login_String_String">
<part name="parameters" element="tns:sl_login_String_String">
</part>

</message>
<message name="sl_trade_String_String_String_long">
<part name="parameters" element="tns:sl_trade_String_String_String_long">
</part>
</message>
<message name="sl_isDatabaseConnectedResponse">
<part name="parameters" element="tns:sl_isDatabaseConnectedResponse">
</part>
</message>

<message name="sl_stopDatabaseResponse">
<part name="parameters" element="tns:sl_stopDatabaseResponse">
</part>
</message>
<message name="NoSuchPersistedObject">
<part name="fault" element="tns:NoSuchPersistedObject">
</part>
</message>
<message name="sl_stopDatabase">

<part name="parameters" element="tns:sl_stopDatabase">
</part>
</message>
<message name="InsufficientCashException">
<part name="fault" element="tns:InsufficientCashException">
</part>
</message>
<message name="sl_updateAccount_String_String_String_String_String_String_String_String_StringResponse">
<part name="parameters" element="tns:sl_updateAccount_String_String_String_String_String_String_String_String_StringResponse">

</part>
</message>
<message name="sl_getQuote_String_StringResponse">
<part name="parameters" element="tns:sl_getQuote_String_StringResponse">
</part>
</message>
<message name="sl_connectDemoData">
<part name="parameters" element="tns:sl_connectDemoData">
</part>

</message>
<message name="sl_getCustomer_String">
<part name="parameters" element="tns:sl_getCustomer_String">
</part>
</message>
<message name="sl_connectDemoDataResponse">
<part name="parameters" element="tns:sl_connectDemoDataResponse">
</part>
</message>

<message name="sl_isDatabaseConnected">
<part name="parameters" element="tns:sl_isDatabaseConnected">
</part>
</message>
<portType name="ApplicationController">
<operation name="sl_login_String_String">
<input message="tns:sl_login_String_String">
</input>
<output message="tns:sl_login_String_StringResponse">

</output>
</operation>
<operation name="sl_isDatabaseConnected">
<input message="tns:sl_isDatabaseConnected">
</input>
<output message="tns:sl_isDatabaseConnectedResponse">
</output>
</operation>
<operation name="sl_stopDatabase">

<input message="tns:sl_stopDatabase">
</input>
<output message="tns:sl_stopDatabaseResponse">
</output>
</operation>
<operation name="sl_refreshDemoData">
<input message="tns:sl_refreshDemoData">
</input>
<output message="tns:sl_refreshDemoDataResponse">

</output>
</operation>
<operation name="sl_connectDemoData">
<input message="tns:sl_connectDemoData">
</input>
<output message="tns:sl_connectDemoDataResponse">
</output>
</operation>
<operation name="sl_updateAccount_String_String_String_String_String_String_String_String_String">

<input message="tns:sl_updateAccount_String_String_String_String_String_String_String_String_String">
</input>
<output message="tns:sl_updateAccount_String_String_String_String_String_String_String_String_StringResponse">
</output>
<fault name="SessionExpiredException" message="tns:SessionExpiredException">
</fault>
<fault name="NoSuchPersistedObject" message="tns:NoSuchPersistedObject">
</fault>
</operation>

<operation name="sl_getQuote_String_String">
<input message="tns:sl_getQuote_String_String">
</input>
<output message="tns:sl_getQuote_String_StringResponse">
</output>
<fault name="QuoteServiceNotAvailableException" message="tns:QuoteServiceNotAvailableException">
</fault>
</operation>
<operation name="sl_trade_String_String_String_long">

<input message="tns:sl_trade_String_String_String_long">
</input>
<output message="tns:sl_trade_String_String_String_longResponse">
</output>
<fault name="FailedToGetPriceException" message="tns:FailedToGetPriceException">
</fault>
<fault name="InsufficientCashException" message="tns:InsufficientCashException">
</fault>
<fault name="QuoteServiceNotAvailableException" message="tns:QuoteServiceNotAvailableException">

</fault>
</operation>
<operation name="sl_addCash_String_long">
<input message="tns:sl_addCash_String_long">
</input>
<output message="tns:sl_addCash_String_longResponse">
</output>
</operation>
<operation name="sl_getCustomer_String">

<input message="tns:sl_getCustomer_String">
</input>
<output message="tns:sl_getCustomer_StringResponse">
</output>
</operation>
</portType>
<binding name="ApplicationControllerPortBinding" type="tns:ApplicationController">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="sl_login_String_String">

<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="sl_isDatabaseConnected">

<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="sl_stopDatabase">

<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="sl_refreshDemoData">

<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="sl_connectDemoData">

<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="sl_updateAccount_String_String_String_String_String_String_String_String_String">

<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
<fault name="SessionExpiredException">
<soap:fault name="SessionExpiredException" use="literal"/>

</fault>
<fault name="NoSuchPersistedObject">
<soap:fault name="NoSuchPersistedObject" use="literal"/>
</fault>
</operation>
<operation name="sl_getQuote_String_String">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>

</input>
<output>
<soap:body use="literal"/>
</output>
<fault name="QuoteServiceNotAvailableException">
<soap:fault name="QuoteServiceNotAvailableException" use="literal"/>
</fault>
</operation>
<operation name="sl_trade_String_String_String_long">

<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
<fault name="FailedToGetPriceException">
<soap:fault name="FailedToGetPriceException" use="literal"/>

</fault>
<fault name="InsufficientCashException">
<soap:fault name="InsufficientCashException" use="literal"/>
</fault>
<fault name="QuoteServiceNotAvailableException">
<soap:fault name="QuoteServiceNotAvailableException" use="literal"/>
</fault>
</operation>
<operation name="sl_addCash_String_long">

<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="sl_getCustomer_String">

<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>

<service name="ApplicationControllerService">
<port name="ApplicationControllerPort" binding="tns:ApplicationControllerPortBinding">
<soap:address location="http://localhost:8000/stocktrader-windows-0.91/soap/com/agileitinc/demo/stocktrader/ApplicationController"/>
</port>
</service>
</definitions>

 

0
Your rating: None
monkeylittle
User offline. Last seen 2 years 25 weeks ago. Offline
Joined: 05/31/2009
Points: 0

I'm encountering the same error for my web service, but on a different global attribute:

Caused by: com.jackbe.jbp.sas.nsd.NSDException: NSDService.generateNSDForService
: Error generating NSD Info for Service ADSWebService5  :  project://local/xml.x
sd:86:2: error: sch-props-correct.2: Duplicate global attribute: lang@http://www
.w3.org/XML/1998/namespace (Original global attribute found in file: http_3A_2F_
2Fwww_2Ew3_2Eorg_2F2001/xml.xsd)
        at com.jackbe.jbp.sas.nsd.WSDL2NSDMapper2.generateServiceNSD(WSDL2NSDMap
per2.java:174)
        at com.jackbe.jbp.sas.nsd.NSDBuilder.buildServiceNSD(NSDBuilder.java:82)

        ... 68 more

 

this is definitely a bug, like in your case, the web service works just fine.

rkrugman
User offline. Last seen 1 year 50 weeks ago. Offline
Joined: 01/13/2010
Points: 0

 I am seeing the same error, has anyone been able to get past this?

ivan_mejia
ivan_mejia's picture
User offline. Last seen 8 weeks 5 days ago. Offline
Joined: 09/22/2008
Points: 0

Can you paste here the XSD files too?

Thanks!

Ivan.