Thanks, Dan, that was the problem...
--matthew
--- Dan Diephouse <[EMAIL PROTECTED]> wrote:
> Hi Matthew,
> I think the solution is to generate getters and
> setters for the
> properties as the aegis binding works with javabean
> properties not
> fields. Cheers,
> - Dan
>
> Matthew T. Adams wrote:
>
> >Hi all,
> >
> >I have a question regarding the control over the
> Aegis
> >binding. I'm using XFire 1.0 (all jars in use are
> at
> >1.0 except xfire-jsr181-api-1.0-M1.jar) on JDK
> >1.5.0_06 with JSR 181 annotations & Spring 1.2.6 to
> >expose a web service. It appears that the Aegis
> >binding is not descending into my DTO classes or
> >picking up the generics in them.
> >
> >Here is my web service interface:
> >=================================
> >package dummy;
> >
> >import javax.jws.WebService;
> >import javax.jws.WebMethod;
> >
> >@WebService
> >public interface Dummy {
> > @WebMethod
> > DoSomethingResponse
> doSomething(DoSomethingRequest
> >request);
> >}
> >=================================
> >...and my implementation class:
> >=================================
> >package dummy;
> >
> >import javax.jws.WebService;
> >
> >@WebService(endpointInterface = "dummy.Dummy")
> >public class DummyImpl implements Dummy {
> >
> > public DoSomethingResponse
> >doSomething(DoSomethingRequest request) {
> > DoSomethingResponse r = new
> >DoSomethingResponse();
> > r.foo = request.foo;
> > return r;
> > }
> >}
> >=================================
> >...and my data transfer & request/response objects:
> >=================================
> >package dummy;
> >
> >import java.io.Serializable;
> >
> >public class DoSomethingRequest implements
> >Serializable {
> > public Foo foo;
> >
> > public Foo getFoo() {
> > return foo;
> > }
> >
> > public void setFoo(Foo foo) {
> > this.foo = foo;
> > }
> >}
> >=================================
> >package dummy;
> >
> >import java.io.Serializable;
> >
> >public class DoSomethingResponse implements
> >Serializable {
> > public Foo foo;
> >
> > public Foo getFoo() {
> > return foo;
> > }
> >
> > public void setFoo(Foo foo) {
> > this.foo = foo;
> > }
> >}
> >=================================
> >package dummy;
> >
> >import java.util.Map;
> >import java.util.HashMap;
> >import java.io.Serializable;
> >
> >public class Foo implements Serializable {
> > public Map<String,Bar> bars = new
> >HashMap<String,Bar>();
> >}
> >=================================
> >package dummy;
> >
> >import java.io.Serializable;
> >
> >public class Bar implements Serializable {
> > public int x;
> > public int y;
> > public int z;
> >}
> >=================================
> >...and my xfire-servlet.xml:
> >=================================
> ><beans>
> > <bean id="webAnnotations"
>
>class="org.codehaus.xfire.annotations.jsr181.Jsr181WebAnnotations"/>
> >
> > <bean id="handlerMapping"
>
>class="org.codehaus.xfire.spring.remoting.Jsr181HandlerMapping">
> > <property name="typeMappingRegistry">
> > <ref bean="xfire.typeMappingRegistry"/>
> > </property>
> > <property name="xfire">
> > <ref bean="xfire"/>
> > </property>
> > <property name="webAnnotations">
> > <ref bean="webAnnotations"/>
> > </property>
> > </bean>
> >
> > <bean id="dummy" class="dummy.DummyImpl"/>
> >
> > <bean
>
>class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
> > <property name="urlMap">
> > <map>
> > <entry key="/">
> > <ref bean="handlerMapping"/>
> > </entry>
> > </map>
> > </property>
> > </bean>
> ></beans>
> >=================================
> >...and my WEB-INF/web.xml:
> >=================================
> ><web-app>
> > <context-param>
> >
> <param-name>contextConfigLocation</param-name>
> > <param-value>
> > /WEB-INF/applicationContext.xml
> >
> >classpath:org/codehaus/xfire/spring/xfire.xml
> > </param-value>
> > </context-param>
> >
> > <context-param>
> >
> <param-name>log4jConfigLocation</param-name>
> >
>
><param-value>/WEB-INF/log4j.properties</param-value>
> > </context-param>
> >
> > <listener>
> >
>
><listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
> > </listener>
> >
> > <listener>
> >
>
><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
> > </listener>
> >
> > <servlet>
> > <servlet-name>xfire</servlet-name>
> >
>
><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
> > <load-on-startup>1</load-on-startup>
> > </servlet>
> >
> > <servlet-mapping>
> > <servlet-name>xfire</servlet-name>
> > <url-pattern>/*</url-pattern>
> > </servlet-mapping>
> ></web-app>
> >=================================
> >
> >The above produces the following WSDL when deployed
> >into Tomcat in the context named "tt" (URL is
> >http://localhost:8080/tt/services/DummyImpl?wsdl):
> >=================================
> ><?xml version="1.0" encoding="UTF-8"?>
> ><wsdl:definitions
> >xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
>
>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://dummy"
>
>xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
> >xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> >targetNamespace="http://dummy">
> > <wsdl:types>
> > <xsd:schema targetNamespace="http://dummy"
> >elementFormDefault="qualified"
> >attributeFormDefault="qualified">
> > <xsd:complexType name="DoSomethingRequest">
> > <xsd:sequence>
> > <xsd:element name="foo" type="tns:Foo"
> >minOccurs="0" nillable="true" />
> > </xsd:sequence>
> > </xsd:complexType>
> > <xsd:complexType name="Foo" />
> >
> > <xsd:element name="doSomething">
> > <xsd:complexType>
> > <xsd:sequence>
> > <xsd:element name="in0"
> >type="tns:DoSomethingRequest" nillable="true"
> >minOccurs="1" maxOccurs="1" />
> > </xsd:sequence>
> > </xsd:complexType>
> > </xsd:element>
> > <xsd:complexType name="DoSomethingResponse">
> > <xsd:sequence>
> >
> > <xsd:element name="foo" type="tns:Foo"
> >minOccurs="0" nillable="true" />
> > </xsd:sequence>
> > </xsd:complexType>
> > <xsd:element name="doSomethingResponse">
> > <xsd:complexType>
> > <xsd:sequence>
> > <xsd:element name="out"
> >type="tns:DoSomethingResponse" nillable="true"
> >minOccurs="1" maxOccurs="1" />
> > </xsd:sequence>
> > </xsd:complexType>
> >
> > </xsd:element>
> > </xsd:schema>
> > </wsdl:types>
> > <wsdl:message name="doSomethingResponse">
> > <wsdl:part element="tns:doSomethingResponse"
> >name="parameters" />
> > </wsdl:message>
> > <wsdl:message name="doSomethingRequest">
> > <wsdl:part element="tns:doSomething"
> >name="parameters" />
> > </wsdl:message>
> >
> > <wsdl:portType name="DummyImpl">
> > <wsdl:operation name="doSomething">
> > <wsdl:input message="tns:doSomethingRequest"
> >name="doSomethingRequest" />
> > <wsdl:output
> message="tns:doSomethingResponse"
> >name="doSomethingResponse" />
> > </wsdl:operation>
> > </wsdl:portType>
> > <wsdl:binding name="DummyImplHttpBinding"
> >type="tns:DummyImpl">
> > <wsdlsoap:binding style="document"
> >transport="http://schemas.xmlsoap.org/soap/http" />
> > <wsdl:operation name="doSomething">
> >
> > <wsdlsoap:operation soapAction="" />
> > <wsdl:input name="doSomethingRequest">
> > <wsdlsoap:body use="literal" />
> > </wsdl:input>
> > <wsdl:output name="doSomethingResponse">
> > <wsdlsoap:body use="literal" />
> > </wsdl:output>
> > </wsdl:operation>
> > </wsdl:binding>
> >
> > <wsdl:service name="DummyImpl">
> > <wsdl:port binding="tns:DummyImplHttpBinding"
> >name="DummyImplHttpPort">
> > <wsdlsoap:address
>
>location="http://localhost:8080/tt/services/DummyImpl"
> >/>
> > </wsdl:port>
> > </wsdl:service>
> ></wsdl:definitions>
> >=================================
> >
> >Note in the WSDL the line
> > <xsd:complexType name="Foo" />
> >which is clearly not reflective of Foo's structure:
> a
> >member variable whose name is "bars" and is of
> generic
> >type Map<java.lang.String,dummy.Bar>. How do I get
> >XFire/Aegis/whatever to descend into the
> constituent
> >parts of a DoSomethingRequest and
> DoSomethingResponse
> >so that the proper structure is reflected in the
> WSDL?
> > I was under the impression from the user's guide
> that
> >the use of generics would cause all of this to be
> >picked up automatically, but it appears that XFire
> is
> >not even bothering to go deeper than
> >DoSomethingRequest/DoSomethingResponse.
> >
> >TIA,
> >Matthew
> >
> >
> >__________________________________________________
> >Do You Yahoo!?
> >Tired of spam? Yahoo! Mail has the best spam
> protection around
> >http://mail.yahoo.com
> >
> >
>
>
> --
> Dan Diephouse
> (616) 971-2053
> Envoi Solutions LLC
> http://netzooid.com
>
>
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com