Oh, good. I though you were using Axis2 at the server side too .
> Finally It was solved. how ?
>
> the ws was done in coldfusion 7 who uses axis1 and there are some
> problems with doc-literal and soap encoding. Server side changed the
> wsdl and now I can retrieve arrays[] with the same code. Thanks for
> helping.
> R
>
>
> Rodrigo Asensio
> [EMAIL PROTECTED]
> http://www.rodrigoasensio.com
> "To err is human, but to really screw up requires the root password."
>
>
>
> On Wed, Dec 10, 2008 at 2:55 PM, Rodrigo Asensio <[EMAIL PROTECTED]> wrote:
>   
>> Here is the code. Also I'm trying to generate the clients with adb or
>> xmlbeans and I'm getting
>> [ERROR] Part 'fault' of fault message
>> '{http://icu_test.dev}CFCInvocationException' must be defined with
>> 'element=QName' and not 'type=QName'
>>
>> this is a coldfusion axis1 ws. I found that "according to the
>> specification, fault and header message parts must be defined as
>> document/literal, even if the body is defined as RPC style."
>>
>>
>> Struct_cards
>> ------------------
>>
>> public class struct_cards {
>>        protected java.lang.String card_delegate;
>>        protected java.lang.String card_expire_date;
>>        protected java.lang.String card_id;
>>        protected java.lang.String card_lfd;
>>        protected java.lang.String card_name;
>>        protected java.lang.String card_type;
>>        protected java.lang.String usrfld1;
>>
>>        public struct_cards() {}
>>
>>        public struct_cards(String card_delegate, String card_expire_date,
>> String card_id, String card_lfd, String card_name,
>>                        String card_type, String usrfld1) {
>>                this.card_delegate = card_delegate;
>>                this.card_expire_date = card_expire_date;
>>                this.card_id = card_id;
>>                this.card_lfd = card_lfd;
>>                this.card_name = card_name;
>>                this.card_type = card_type;
>>                this.usrfld1 = usrfld1;
>>        }
>>
>>        public String getCard_delegate() {
>>                return card_delegate;
>>        }
>>
>>        public void setCard_delegate(String card_delegate) {
>>                this.card_delegate = card_delegate;
>>        }
>>
>>        public String getCard_expire_date() {
>>                return card_expire_date;
>>        }
>>
>>        public void setCard_expire_date(String card_expire_date) {
>>                this.card_expire_date = card_expire_date;
>>        }
>>
>>        public String getCard_id() {
>>                return card_id;
>>        }
>>
>>        public void setCard_id(String card_id) {
>>                this.card_id = card_id;
>>        }
>>
>>        public String getCard_lfd() {
>>                return card_lfd;
>>        }
>>
>>        public void setCard_lfd(String card_lfd) {
>>                this.card_lfd = card_lfd;
>>        }
>>
>>        public String getCard_name() {
>>                return card_name;
>>        }
>>
>>        public void setCard_name(String card_name) {
>>                this.card_name = card_name;
>>        }
>>
>>        public String getCard_type() {
>>                return card_type;
>>        }
>>
>>        public void setCard_type(String card_type) {
>>                this.card_type = card_type;
>>        }
>>
>>        public String getUsrfld1() {
>>                return usrfld1;
>>        }
>>
>>        public void setUsrfld1(String usrfld1) {
>>                this.usrfld1 = usrfld1;
>>        }
>> }
>>
>>
>> invoke method
>> ----------------------
>>
>>        public Object[] invoke() throws Exception {
>>                Object[] params = new Object() {"someid"};
>>
>>                RPCServiceClient serviceClient = new RPCServiceClient();
>>                Options options = serviceClient.getOptions();
>>                EndpointReference targetEPR = new EndpointReference(URL);
>>                options.setTo(targetEPR);
>>                options.setTimeOutInMilliSeconds(TIMEOUT);
>>
>>                QName actionQ = new QName(NAMESPACE, "get_cards");
>> //              Class[] returnTypes = new Class[] { returnTypeClass };
>>
>>                ArrayList resobj = new ArrayList();
>>                resobj.add(struct_cards[].class);
>>                Class[] ax = (Class[])resobj.toArray(new 
>> Class[resobj.size()]);
>>        //     Class[] returnTypes = new Class[]{struct_cards.class};
>>                Object[] results = serviceClient.invokeBlocking(actionQ, 
>> params, ax);
>>                return results;
>>        }
>>
>>
>>
>>
>>
>> Rodrigo Asensio
>> [EMAIL PROTECTED]
>> http://www.rodrigoasensio.com
>> "To err is human, but to really screw up requires the root password."
>>
>>
>>
>> On Wed, Dec 10, 2008 at 2:47 PM, Deepal Jayasinghe <[EMAIL PROTECTED]> wrote:
>>     
>>> Can you please send me your service code, then I will give you the exact
>>> solution.
>>>
>>> Deepal
>>>
>>> Rodrigo Asensio wrote:
>>>       
>>>> the most accurate test for my case should be the testCompanyArray()
>>>> where it converts doing something like this
>>>>
>>>> ArrayList resobj = new ArrayList();
>>>> resobj.add(Struct_cards[].class);
>>>> (Class[])resobj.toArray(new Class[resobj.size()])
>>>>
>>>> but the result is the same...  below I'm posting the wsdl and extra
>>>> info that might help (me  :))
>>>>
>>>> results       Object[1]  (id=83)
>>>>       [0]     Struct_cards  (id=84)
>>>>               card_delegate   null
>>>>               card_expire_date        null
>>>>               card_id null
>>>>               card_lfd        null
>>>>               card_name       null
>>>>               card_type       null
>>>>               usrfld1 null
>>>>
>>>> ws created by Macromedia ColdFusion MX version 7,0,2,142559
>>>> <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
>>>> <complexType name="Struct_cards">
>>>> −
>>>> <sequence>
>>>> <element name="card_delegate" nillable="true" type="xsd:string"/>
>>>> <element name="card_expire_date" nillable="true" type="xsd:string"/>
>>>> <element name="card_id" nillable="true" type="xsd:string"/>
>>>> <element name="card_lfd" nillable="true" type="xsd:string"/>
>>>> <element name="card_name" nillable="true" type="xsd:string"/>
>>>> <element name="card_type" nillable="true" type="xsd:string"/>
>>>> <element name="usrfld1" nillable="true" type="xsd:string"/>
>>>> </sequence>
>>>> </complexType>
>>>> −
>>>> <complexType name="ArrayOfStruct_cards">
>>>> −
>>>> <complexContent>
>>>> −
>>>> <restriction base="soapenc:Array">
>>>> <attribute ref="soapenc:arrayType" wsdl:arrayType="impl:Struct_cards[]"/>
>>>> </restriction>
>>>> </complexContent>
>>>> </complexType>
>>>>
>>>>
>>>>
>>>>
>>>> Rodrigo Asensio
>>>> [EMAIL PROTECTED]
>>>> http://www.rodrigoasensio.com
>>>> "To err is human, but to really screw up requires the root password."
>>>>
>>>>
>>>>
>>>> On Wed, Dec 10, 2008 at 2:11 PM, Deepal Jayasinghe <[EMAIL PROTECTED]> 
>>>> wrote:
>>>>
>>>>         
>>>>> Have a look at following class , it does what you want to do
>>>>>
>>>>> https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java
>>>>>
>>>>>
>>>>>           
>>>>>> Class[] returnTypes = new Class[]{(Struct_cards[])}
>>>>>> this don't compile because the objects inside the array must be Class
>>>>>> type, and I already tried that one
>>>>>>
>>>>>> Class[] returnTypes = new Class[]{Struct_cards[].class}
>>>>>>
>>>>>>
>>>>>> Rodrigo Asensio
>>>>>> [EMAIL PROTECTED]
>>>>>> http://www.rodrigoasensio.com
>>>>>> "To err is human, but to really screw up requires the root password."
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Wed, Dec 10, 2008 at 12:50 PM, Deepal Jayasinghe
>>>>>> <[EMAIL PROTECTED]> wrote:
>>>>>>
>>>>>>
>>>>>>             
>>>>>>>> Can't return a simple Object[]
>>>>>>>>
>>>>>>>> axis2 141
>>>>>>>>
>>>>>>>> client code:
>>>>>>>> ----------------
>>>>>>>>
>>>>>>>>               RPCServiceClient serviceClient = new RPCServiceClient();
>>>>>>>>               Options options = serviceClient.getOptions();
>>>>>>>>               EndpointReference targetEPR = new EndpointReference(URL);
>>>>>>>>               options.setTo(targetEPR);
>>>>>>>>               options.setTimeOutInMilliSeconds(TIMEOUT);
>>>>>>>>
>>>>>>>>               QName actionQ = new QName(NAMESPACE, action);
>>>>>>>>               Class[] returnTypes = new Class[] { Struct_cards.class 
>>>>>>>> };   //
>>>>>>>>
>>>>>>>>
>>>>>>>>                 
>>>>>>> Class[] returnTypes = new Class[]{(Struct_cards[])}
>>>>>>>
>>>>>>> would work.
>>>>>>>
>>>>>>>
>>>>>>>               
>>>>>>>> also
>>>>>>>> tried  Struct_cards[].class
>>>>>>>>               Object[] results = serviceClient.invokeBlocking(actionQ, 
>>>>>>>> params, returnTypes);
>>>>>>>>
>>>>>>>> It returns an array of 1 element Struct_cards with all its values
>>>>>>>> empty, below the XML response and the bean code.
>>>>>>>> I saw that might be a problem of axis2 converting simple object
>>>>>>>> arrays, but I didn't found any proof. Any help will be appreciated.
>>>>>>>>
>>>>>>>>
>>>>>>>> xml returns :
>>>>>>>> -----------------
>>>>>>>>
>>>>>>>> <get_cardsResponse
>>>>>>>> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
>>>>>>>> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";>
>>>>>>>>    <get_cardsReturn
>>>>>>>> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
>>>>>>>> xmlns:ns1="http://icu_test.dev";
>>>>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>>>>>>> soapenc:arrayType="ns1:struct_cards[2]" xsi:type="soapenc:Array">
>>>>>>>>     <get_cardsReturn xsi:type="ns1:struct_cards">
>>>>>>>>      <card_delegate xsi:type="xsd:string">X</card_delegate>
>>>>>>>>      <card_expire_date xsi:type="xsd:string">XXXX</card_expire_date>
>>>>>>>>      <card_id xsi:type="xsd:string">XXXXXXXXXXXXX</card_id>
>>>>>>>>      <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
>>>>>>>>      <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
>>>>>>>>      <card_type xsi:type="xsd:string">1</card_type>
>>>>>>>>      <usrfld1 xsi:type="xsd:string"></usrfld1>
>>>>>>>>     </get_cardsReturn>
>>>>>>>>     <get_cardsReturn xsi:type="ns1:struct_cards">
>>>>>>>>      <card_delegate xsi:type="xsd:string">x</card_delegate>
>>>>>>>>      <card_expire_date xsi:type="xsd:string">xxxxx</card_expire_date>
>>>>>>>>      <card_id xsi:type="xsd:string">xxxxxxxxxxxxxxxxxxxxxxxxx</card_id>
>>>>>>>>      <card_lfd xsi:type="xsd:string">xxxx</card_lfd>
>>>>>>>>      <card_name xsi:type="xsd:string">Rodrigo Asensio</card_name>
>>>>>>>>      <card_type xsi:type="xsd:string">1</card_type>
>>>>>>>>      <usrfld1 xsi:type="xsd:string"></usrfld1>
>>>>>>>>     </get_cardsReturn>
>>>>>>>>    </get_cardsReturn>
>>>>>>>>   </get_cardsResponse>
>>>>>>>>
>>>>>>>> bean code: (very basic)
>>>>>>>> ---------------
>>>>>>>>
>>>>>>>> public class Struct_cards {
>>>>>>>>       protected java.lang.String card_delegate;
>>>>>>>>       protected java.lang.String card_expire_date;
>>>>>>>>       protected java.lang.String card_id;
>>>>>>>>       protected java.lang.String card_lfd;
>>>>>>>>       protected java.lang.String card_name;
>>>>>>>>       protected java.lang.String card_type;
>>>>>>>>       protected java.lang.String usrfld1;
>>>>>>>>
>>>>>>>>       public Struct_cards() {}
>>>>>>>>
>>>>>>>>       public Struct_cards(String card_delegate, String 
>>>>>>>> card_expire_date,
>>>>>>>> String card_id, String card_lfd, String card_name,
>>>>>>>>                       String card_type, String usrfld1) {
>>>>>>>>               this.card_delegate = card_delegate;
>>>>>>>>               this.card_expire_date = card_expire_date;
>>>>>>>>               this.card_id = card_id;
>>>>>>>>               this.card_lfd = card_lfd;
>>>>>>>>               this.card_name = card_name;
>>>>>>>>               this.card_type = card_type;
>>>>>>>>               this.usrfld1 = usrfld1;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public String getCard_delegate() {
>>>>>>>>               return card_delegate;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public void setCard_delegate(String card_delegate) {
>>>>>>>>               this.card_delegate = card_delegate;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public String getCard_expire_date() {
>>>>>>>>               return card_expire_date;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public void setCard_expire_date(String card_expire_date) {
>>>>>>>>               this.card_expire_date = card_expire_date;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public String getCard_id() {
>>>>>>>>               return card_id;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public void setCard_id(String card_id) {
>>>>>>>>               this.card_id = card_id;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public String getCard_lfd() {
>>>>>>>>               return card_lfd;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public void setCard_lfd(String card_lfd) {
>>>>>>>>               this.card_lfd = card_lfd;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public String getCard_name() {
>>>>>>>>               return card_name;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public void setCard_name(String card_name) {
>>>>>>>>               this.card_name = card_name;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public String getCard_type() {
>>>>>>>>               return card_type;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public void setCard_type(String card_type) {
>>>>>>>>               this.card_type = card_type;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public String getUsrfld1() {
>>>>>>>>               return usrfld1;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public void setUsrfld1(String usrfld1) {
>>>>>>>>               this.usrfld1 = usrfld1;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Rodrigo Asensio
>>>>>>>> [EMAIL PROTECTED]
>>>>>>>> http://www.rodrigoasensio.com
>>>>>>>> "To err is human, but to really screw up requires the root password."
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>                 
>>>>>>> --
>>>>>>> Thank you!
>>>>>>>
>>>>>>>
>>>>>>> http://blogs.deepal.org
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>               
>>>>> --
>>>>> Thank you!
>>>>>
>>>>>
>>>>> http://blogs.deepal.org
>>>>>
>>>>>
>>>>>
>>>>>           
>>>>         
>>> --
>>> Thank you!
>>>
>>>
>>> http://blogs.deepal.org
>>>
>>>
>>>       
>
>   

-- 
Thank you!


http://blogs.deepal.org

Reply via email to