wsdl for pojos exported by jsr181 endpoint is missing complextypes from other 
namespaces than the service itself
----------------------------------------------------------------------------------------------------------------

                 Key: SM-739
                 URL: https://issues.apache.org/activemq/browse/SM-739
             Project: ServiceMix
          Issue Type: Bug
          Components: servicemix-jsr181
    Affects Versions: 3.0
            Reporter: Christian Schneider
         Attachments: jsr181wsdlproblem..zip

I am exporting a pojo Service in namespace http://test1 that uses a Class from 
namespace http://test2 as a jsr181 endpoint.
The wsdl I get from jconsole for the endpoint does not include the definition 
of the Complextype Person from http://test2.

If you put the Person class in the package test1 the wsdl looks fine. The 
problem does not happen when using xfire without servicemix. 

Thanks to Ken Berthelot for reporting the problem on the mailing list. 
http://mail-archives.apache.org/mod_mbox/geronimo-servicemix-users/200611.mbox/browser

---
My xbean.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xbean.org/schemas/spring/1.0";
        xmlns:jsr181="http://servicemix.apache.org/jsr181/1.0";>
        <classpath>
                <location>.</location>
        </classpath>

        <jsr181:endpoint
                pojoClass="test1.PersonServiceImpl"
                serviceInterface="test1.PersonService"
                style="wrapped">
        </jsr181:endpoint>
</beans>

---
My Classes

package test1;

import test2.Person;

public interface PersonService {

        public abstract void testPerson(Person person);

}

package test1;

import test2.Person;

public class PersonServiceImpl implements PersonService {
        /* (non-Javadoc)
         * @see test1.PersonService#testPerson(test2.Person)
         */
        public void testPerson(Person person) {
                
        }
}

package test2;

public class Person {
        String name;

        public String getName() {
                return name;
        }

        public void setName(String name) {
                this.name = name;
        }
}

----
The wsdl
<?xml version="1.0" encoding="UTF-8"?><wsdl:definitions 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; xmlns:ns1="http://test2"; 
xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"; 
xmlns:soapenc11="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:soapenc12="http://www.w3.org/2003/05/soap-encoding"; 
xmlns:tns="http://test1"; xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; targetNamespace="http://test1";>
  <wsdl:types>
    <xsd:schema attributeFormDefault="qualified" elementFormDefault="qualified" 
targetNamespace="http://test1";>
<xsd:element name="testPerson">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="1" minOccurs="1" name="in0" nillable="true" 
type="ns1:Person"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="testPersonResponse">
<xsd:complexType/>
</xsd:element>
</xsd:schema>
  </wsdl:types>
  <wsdl:message name="testPersonResponse">
    <wsdl:part element="tns:testPersonResponse" name="parameters"/>
  </wsdl:message>
  <wsdl:message name="testPersonRequest">
    <wsdl:part element="tns:testPerson" name="parameters"/>
  </wsdl:message>
  <wsdl:portType name="PersonServicePortType">
    <wsdl:operation name="testPerson">
      <wsdl:input message="tns:testPersonRequest" name="testPersonRequest"/>
      <wsdl:output message="tns:testPersonResponse" name="testPersonResponse"/>
    </wsdl:operation>
  </wsdl:portType>
</wsdl:definitions>

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://issues.apache.org/activemq/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to