[ 
https://issues.apache.org/jira/browse/CXF-1713?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12615745#action_12615745
 ] 

Christine commented on CXF-1713:
--------------------------------

Whatever solution you come up with, the js client will have to decide where to 
put the response based on the response it gets from the server. I mean, you 
send request A and request B shortly after one another, and you don't know 
which one will receive a response first. When the first response comes in, you 
have to identify it from the message or the envelope or whatever you have that 
comes back. I don't know enough about web services to be of any help here, I 
guess.
Why exactly can't you pick the function name from the message? I saw that the 
original function name is in the response header, there should be a point after 
receiving the message and before handing it to the user response function, 
where you can set the proper response function name.

> Generated Javascript does not handle simultaneous soap requests correctly
> -------------------------------------------------------------------------
>
>                 Key: CXF-1713
>                 URL: https://issues.apache.org/jira/browse/CXF-1713
>             Project: CXF
>          Issue Type: Bug
>          Components: JavaScript Client
>         Environment: linux64 ubuntu firefox 3.0
>            Reporter: Christine
>            Assignee: Benson Margulies
>            Priority: Minor
>
> I use the js client code as dynamically provided by cxf. My js client, which 
> is modeled after the helloworld example, generates two soap requests. The 
> second request is issued before the first has completed. What happens is that 
> the response to the first request gets handled by the response handler of the 
> second request. this is my code (I have added an additional "sayIt" to demo 
> the issue)
> function saySomething(formObj)
> {
>       saveText = formObj.textField.value;
>       formObj.textField.value = "";
>       userId=readCookie();
>       if (userId == null || userId.length < 20)
>       {
>          register(userId);
>          sayIt(userId, "hi");
>       } else {
>          sayIt(userId, saveText);
>       }
> }
> The response to the "register(userid)" is handled by the response function 
> for the SayIt function. I have solved the problem in my code by making the 
> sayIt wait until the responst to the register has been processed.
> What I think that happens is the following. The cxf js code sets the response 
> functions in function soap__say_op:
>     this._onsuccess = successCallback;
>     this._onerror = errorCallback;
> When a response comes in, the onsuccess or onerror function is used that has 
> last been set. What should happen is that the name of the response function 
> is taken from the xml response, 
> xmlresponse.firstchild.firstchild.firstchild.localname. There is a  function 
> org_apache_cxf_deserialize_anyType that does seem to take the tag name from 
> the xml, but this is not used in the response handling that I have seen.
> My js client runs in FireFox 3.0 on Ubuntu linux 64 bits. I have tested on 
> IE7 on Windows XP with the same results. I use cxf 2.1.1.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to