Add a targetNamespace attribute to your @WebService annotations in both the SEI and the impl object. If the interface and impl are in different packages, you get different namespaces for them and we have to generate a wsdl that imports another wsdl. The imported wsdl would have the types in it someplace.

Dan



On Jul 8, 2008, at 5:26 PM, Marcus Redeker wrote:

All,

I am trying to get a wsdl generated which also has the <wsdl:types> tags so my webservice consumer knows who to map my java types. I want to return a
list of Strings but no complex types or anything is created. My client
always complains about "no types in definition".

What do I have to do that the type mapping is created inside the wsdl?

Here is my spring conf:
====================

<jaxws:endpoint
          id="filerouterService"
          implementor="#filerouterServiceImpl"
          address="http://${wsServer}:${wsPort}/filerouter"; >
</jaxws:endpoint>
========================


And this is my webservice interface:
================================

@WebService(name="TestServices")
public interface FilerouterServices {

   @WebMethod(operationName = "echoString", action = "urn:EchoString")
   @WebResult(name = "echoResult")
   String echoString( String text);

   @WebMethod(operationName = "checkPortalDB", action =
"urn:checkPortalDB")
   @WebResult(name = "checkPortalResult")
   int checkPortalDB( String test);

   @WebMethod(operationName = "uploadLicence", action =
"urn:uploadLicence")
   @WebResult(name = "uploadLicenceResult")
   String uploadLicence( String data);

   @WebMethod(operationName = "displayLicence", action =
"urn:displayLicence")
   @WebResult(name = "displayLicenceResult")
        List<String> displayLicence();
}
=================================


The resulting WSDL looks like this:
===============================
<?xml version="1.0" encoding="UTF-8" ?>
- <>  <wsdl:definitions name="FilerouterServices"
targetNamespace="http://impl.ws.filerouter.test/"; xmlns:ns1="http://test/ "
xmlns:ns2="http://schemas.xmlsoap.org/soap/http";
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
xmlns:tns="http://impl.ws.filerouter.test/";
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
<wsdl:import
location="http://localhost:9000/filerouter?wsdl=TestServices.wsdl";
namespace="http://test/"; />
- <>  <wsdl:binding name="FilerouterServicesSoapBinding"
type="ns1:TestServices">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"; />
- <>  <wsdl:operation name="displayLicence">
<soap:operation soapAction="urn:displayLicence" style="document" />
- <>  <wsdl:input name="displayLicence">
<soap:body use="literal" />
</wsdl:input>
- <>  <wsdl:output name="displayLicenceResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
- <>  <wsdl:operation name="uploadLicence">
<soap:operation soapAction="urn:uploadLicence" style="document" />
- <>  <wsdl:input name="uploadLicence">
<soap:body use="literal" />
</wsdl:input>
- <>  <wsdl:output name="uploadLicenceResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
- <>  <wsdl:operation name="echoString">
<soap:operation soapAction="urn:EchoString" style="document" />
- <>  <wsdl:input name="echoString">
<soap:body use="literal" />
</wsdl:input>
- <>  <wsdl:output name="echoStringResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
- <>  <wsdl:operation name="checkPortalDB">
<soap:operation soapAction="urn:checkPortalDB" style="document" />
- <>  <wsdl:input name="checkPortalDB">
<soap:body use="literal" />
</wsdl:input>
- <>  <wsdl:output name="checkPortalDBResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <>  <wsdl:service name="FilerouterServices">
- <>  <wsdl:port binding="tns:FilerouterServicesSoapBinding"
name="FilerouterServicesImplPort">
<soap:address location="http://neelix:9000/filerouter"; />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
============

Thanks,

Marcus


---
Daniel Kulp
[EMAIL PROTECTED]
http://www.dankulp.com/blog




Reply via email to