Ah, yeah XmlBeansServiceFactory defaults to document style as most often people don't want their operations wrapped it seemed. Maybe this was the wrong decision, but I think we're stuck with it for now.

- Dan

Tim Robertson wrote:
Hi Dan,

I have got this working by doing:

XmlBeansServiceFactory factory = new XmlBeansServiceFactory();
factory.setStyle("wrapped");                  
Service serviceModel = factory.create(TaxonAPI.class);                  

TaxonAPI service = (TaxonAPI) new XFireProxyFactory().create(serviceModel,
"http://localhost:8080/col2005/services/taxonApi";);

I notice that the ObjectServiceFactory recognizes the service as being a
doc/lit/wrapped automatically but the XmlBeansServiceFactory needs it
explicitly set.  Could this be a small bug?

In answer to your question though it is using spring and
        <!-- Declare an xfire service factory -->
        <bean id="xfire.xmlbeansServiceFactory"
        class="org.codehaus.xfire.xmlbeans.XmlBeansServiceFactory"
        singleton="true">
        <property name="transportManager">
            <ref bean="xfire.transportManager"/>
        </property>
    </bean>

        <!-- Declare an xfire configuration from the service interface -->
        <bean id="taxonApiWebService"
class="org.codehaus.xfire.spring.remoting.XFireExporter">
                <property name="serviceFactory">
                        <ref bean="xfire.xmlbeansServiceFactory"/>
                </property>
                <property name="serviceBean">
                        <ref bean="taxonAPI"/>
                </property>
                <property name="serviceInterface">
                        <value>org.gbif.taxonapi.TaxonAPI</value>
                </property>
                <property name="style" value="wrapped" />
                <property name="use" value="literal" />
        </bean>


Thanks

Tim




-----Original Message-----
From: Dan Diephouse [mailto:[EMAIL PROTECTED] Sent: Friday, March 24, 2006 10:46 PM
To: [email protected]
Subject: Re: [xfire-dev] XMLBeans Client

Can you show how you are creating your service on the server side (whether that be java code or services.xml or spring...)
Thanks,
- Dan

Tim Robertson wrote:

Thanks Dan,

I made the change but noticed the following:

When I make the single change from
Service serviceModel = new ObjectServiceFactory().create(TaxonAPI.class);
To
Service serviceModel = new
XmlBeansServiceFactory().create(TaxonAPI.class);

It stops making valid requests and issues an empty body:
<?xml version='1.0' encoding='UTF-8'?><soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><soap:Body
/></soap:Envelope>

Whereas the ObjectServiceFactory issues:
<?xml version='1.0' encoding='UTF-8'?><soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><soap:Body><GetRootTC
o
ncepts xmlns="http://taxonapi.gbif.org"; /></soap:Body></soap:Envelope>

It's doc/lit/wrapped and this is for a method taking no args.  A method
taking args does receive the <in0
xmlns="http://taxonapi.gbif.org";><string>1</string></in0> but it's not in
the wrapped "method name" tag, so returns error.

Does this mean the XmlBeansServiceFactory doesn't like the wrapped?

Thanks

Tim





--
Dan Diephouse
Envoi Solutions
http://envoisolutions.com
http://netzooid.com/blog

Reply via email to