Hi James,

On Friday 10 August 2007 13:03, James Mao wrote:
> Well, i tried yesterday, i have the same results as you gave, the
> previous binding file is not correct, you can not put the wsdl location
> inside the schemaLocation.

Oh. That bit actually seemed to work, in the sense that changing the
 node to something like node="/xsd:schema/annotation/appinfo"
throws exceptions owing to an empty nodeset or some such, but throws no such 
errors if I actually added the annotation and appinfo elements to the schema.
Of course it didn't influence the generated WS interface at all.

> The interface really did not change, what changed is the type class, you
> can see there is String[], but it use the List indeed
> I also tried the jaxws ri, what i got is the same results.
>
> I guess you must use String[] here, so hope someone else can shed some
> lights here.

Well, I have about 5 services, each with around 10 or so String[] return
methods. I would prefer not to change the client and server code to use
Lists if I could avoid it, but will do what I have to do I guess.
I heard good things about MTOM for file transfer so I want to stick to a 
solution where its accessible. Not sure that jaxws ri supports it.


Am still looking for insight into the server side Exception throwing 
aspects, if anyone had any pointers?

Thanks 
Doug

> > If I explicitly modify the generated WSDL file as follows:
> >
> > <wsdl:types>
> > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
> >      xmlns:tns="urn:srv"
> >      attributeFormDefault="unqualified"
> >      elementFormDefault="unqualified"
> >      targetNamespace="urn:srv"
> >      xmlns:jxb="http://java.sun.com/xml/ns/jaxb";
> >      jxb:version="1.0" >
> >   <xs:annotation>
> >     <xs:appinfo>
> > <!--      <jxb:globalBindings collectionType="java.util.ArrayList"/> -->
> >       <jxb:globalBindings collectionType="indexed"/>
> >     </xs:appinfo>
> >   </xs:annotation>
> >
> > [snip]
> >
> > <xs:complexType name="getApplicationPushletIDsResponse">
> > <xs:sequence>
> > <xs:element maxOccurs="unbounded" minOccurs="0" name="return"
> > type="xs:string"/>
> > </xs:sequence>
> > </xs:complexType>
> >
> > [cut]
> >
> > then wsdl2java runs without any exceptions and I still end up with
> > java.util.List responses:
> >
> > @WebService(targetNamespace = "urn:srv", name = "PfC")
> > public interface PfC {
> >     @ResponseWrapper(targetNamespace = "urn:srv", className
> > = "au.net.mmsn.pfc.servlet.pfcws.GetApplicationPushletIDsResponse",
> > localName = "getApplicationPushletIDsResponse")
> >     @RequestWrapper(targetNamespace = "urn:srv", className
> > = "au.net.mmsn.pfc.servlet.pfcws.GetApplicationPushletIDs", localName
> > = "getApplicationPushletIDs")
> >     @WebResult(targetNamespace = "", name = "return")
> >     @WebMethod
> >     public java.util.List<java.lang.String> getApplicationPushletIDs();
> >
> >
> > My original prototype interface was:
> >
> > @WebService(name="PfC",
> >             targetNamespace="urn:srv",
> >             serviceName="PfCService",
> >             portName="PfC")
> > @SOAPBinding(style=Style.DOCUMENT, use=Use.LITERAL,
> >              parameterStyle = ParameterStyle.WRAPPED)
> > public interface PfC extends java.rmi.Remote {
> >     // primary pushlet url
> >     public java.lang.String   getPushletURL() throws
> > java.rmi.RemoteException; public java.lang.String[]
> > getApplicationPushletIDs() throws
> >              java.rmi.RemoteException;
> >     ...
> >
> >
> > The commandline was:
> > wsdl2java -verbose -server -compile -classdir
> > /home/timeout/ddb/MMSN/gridsphere-2.2.7/projects/pfc/build/classes -impl
> > -d /home/timeout/ddb/MMSN/gridsphere-2.2.7/projects/pfc/src -p
> > au.net.mmsn.pfc.servlet.pfcws PfC.wsdl
> > wsdl2java - 2.0-incubator
> >
> >
> > Changing the collectionType attribute to an ArrayList has no effect
> > iether.
> >
> >
> > Hope somone can see what I am doing wrong.
> > thanks
> > Doug
> >
> > On Thursday 09 August 2007 17:00, doug wrote:
> >> Hi list,
> >> I apologise in advance for my ignorance but I am trying to
> >> convert my Axis 1 SOAP client/services to CXF, and as a complete
> >> newbie to CXF and JAXB, am having quite a few difficulties.
> >>
> >> My latest issue is the same as a recent correspondent (Brett) in that my
> >> web service interface methods that ought to return arrays are being
> >> converted into java.util.Lists.
> >>
> >> Also some of my original java prototype interface methods had
> >>        throws RemoteException
> >> clauses which apparently do not propogate through the WSDL to the
> >> generated java source.
> >>
> >> On the first issue, James Mao replied to Brett:
> >> ---------------------------
> >> Yes, There are two ways
> >>
> >> Put the customization section into your schema in the wsdl,
> >>
> >>    <xsd:annotation>
> >>    <xsd:appinfo>
> >>        <jxb:globalBindings collectionType="indexed"/>
> >>    </xsd:appinfo>
> >>    </xsd:annotation>
> >>
> >>
> >> or change it to an external style, and feed the 'binding file' to the
> >>
> >>  > wsdl2java -b $YOUR_BINDNIG_FILE
> >>
> >> -----------------------------
> >>
> >> Trying to use the second method, I have a bindings.jxb file that
> >> looks like the following, where  ./PfC.wsdl is m
> >> java2wsdl generated file:
> >>
> >> <jxb:bindings jxb:version="1.0"
> >>       xmlns:jxb="http://java.sun.com/xml/ns/jaxb";
> >>       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl";
> >>       xmlns:xsd="http://www.w3.org/2001/XMLSchema"; >
> >>   <jxb:bindings schemaLocation="./PfC.wsdl" node="/xsd:schema">
> >>     <jxb:globalBindings collectionType="indexed">
> >>     </jxb:globalBindings>
> >>   </jxb:bindings>
> >> </jxb:bindings>
> >>
> >> Unfortunately it doesn't seem to work for me when I run
> >> wsdl2java -b bindings.jxb ...
> >> because, although it runs without throwing any exsceptions,
> >> the array return methods still return java.util.Lists
> >> As I mentioned, I am a complete novice to this, so would
> >> appreciate if someone could provide a more explicit answer
> >> (and also a pointer to how to solve the exception returning problem)
> >>
> >> Should I have explicitly annotated all the array return methods in my
> >> original java prototype interface somehow?
> >>
> >> Many thanks
> >> Doug
> >>
> >> P.S. running wsdl2java - 2.0-incubator

Reply via email to