cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Benson Margulies (JIRA)" <>
Subject [jira] Commented: (CXF-1713) Generated Javascript does not handle simultaneous soap requests correctly
Date Wed, 23 Jul 2008 01:59:31 GMT


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.


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

View raw message