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