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.



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>