[ https://issues.apache.org/jira/browse/CXF-1713?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12615861#action_12615861 ]
Benson Margulies commented on CXF-1713: --------------------------------------- As promised, I added an example of how to keep multiple requests sorted out. If you fetch from svn, you can find it here. distribution/src/main/release/samples/js_browser_client_simple/staticContent/HelloWorld.html Here's the fun part: For each transaction, it creates a new JavaScript closure that arranges to deposit the response in the desired place. var receiveFirstResponse = function(response) { sayHiResponse(response, responseSpan1); }; Greeter.sayHi(receiveFirstResponse, sayHiError); var receiveSecondResponse = function(response) { sayHiResponse(response, responseSpan2); }; Greeter.sayHi(receiveSecondResponse, sayHiError); > 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 > Fix For: 2.1.2 > > > 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.