You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by "Pathuri, Hanu" <hp...@qualcomm.com> on 2008/12/11 18:00:05 UTC

Infinite Loop

Hi,

We have a web service (say A) deployed in Tomcat/Axis-2 environment. It nee= ds to access another web service (B) for which we have java api based jaxws=  framework.
The developers of B publishes a java jar file for clients to use the B web = service. This API makes use of JAXWS API.


When A is deployed on Tomcat using eclipse, A can access B with out any iss= ues.


However, When A calls B we seem to getting into infinte loop.

Can some one guide us how to troubleshoot or offer advice on what to look f= or?

Best Regards
Hanu
-----Original Message-----
From: Rodrigo Asensio [mailto:rasensio@gmail.com] 
Sent: Thursday, December 11, 2008 8:46 AM
To: axis-user@ws.apache.org
Subject: Re: Problem with a simple Object[] in RPCServiceClient

nop, I said....

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."

regards and thanks


Rodrigo Asensio
rasensio@gmail.com
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 <ra...@gmail.com> 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
> rasensio@gmail.com
> 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 <de...@opensource.lk> 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
>>> rasensio@gmail.com
>>> 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 <de...@opensource.lk> 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
>>>>> rasensio@gmail.com
>>>>> 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
>>>>> <de...@opensource.lk> 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
>>>>>>> rasensio@gmail.com
>>>>>>> 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
>>
>>
>