Concurrent / Parallel remote object calls from same browser app
Hello Everyone,
I was wondering how remote requests made to blazeds get served by application servers, when it comes to serving multiple (parallel) remote requests coming from the same application in the same browser.
Let us say that once you land on an application, you can fire-off 10 independent remote calls.
Will they all be served by the same request thread in the application server one after another?
I suspect this because the browser will really only maintain one duplex tcp/ip channel with the blazeds and therefore multiple requests should really just race to the server and get served one after another sequentially based on whichever gets their first.
This is just what I suspect but I would like to find out from experts on the forum.
Thanks,
- Pulkit
"suspend the main thread, pending a remote call.." No. Can't
be done.
..."pass arguments into the resultHandler..." Yes, this is
done using the AsyncToken. (ACT pattern)
The send() methods returns an AsyncToken object. You can use
this dynamic object to add almost anything you want to the token,
including strings, and functions (google the term "closure").
As I am still not comfortable with anonymous functions, I
like to pass strings. I pass an identifier, which I can use in a
switch statement to determine the next step. Sometimes I pass a
"nextStep" string to define finer grain conditionality.
I use a single dataService object and result handler function
for all calls.
Tracy
Similar Messages
-
Completely different AMF request packets for same remote service call from Flex to PHP using ZendAMF
I was trying to debug why one of the remote-services in our Flex application was failing randomly. What I found was interesting. Completely different AMF request packets were sent for same remote service call from Flex to PHP.
When the service call succeeds the AMF request packet looks like the following:
POST /video/flex/bin-debug/gateway.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Cookie: PHPSESSID=j6u30i8uu6c3cvp8f4kipcpf05
Referer: http://localhost/video/flex/bin-debug/main.swf/[[DYNAMIC]]/5
Content-type: application/x-amf
C ontent-length: 305
Flex Message (flex.messaging.messages.RemotingMessage) operation = getMemberFromEvent clientId = 2F997CD0-7D08-8D09-1A9B-0000422676C8 destination = MembereventService messageId = B46AB58D-2241-83F0-41E4-9FE745565492 timestamp = 0 timeToLive = 0 body = [ 280 ] hdr(DSId) = nil
And when the service fails the AMF request packet looks like this:
ServiceRequest: getMemberFromEvent; RemoteService; getMemberFromEvent
(mx.messaging.messages::RemotingMessage)#0
body = (Array)#1
[0] 250
clientId = "1AA4FAAB-AEA5-8109-4B0D-000002B3A9A1"
destination = "MembereventService"
headers = (Object)#2
DSEndpoint = (null)
DSId = "nil"
messageId = "2F92E6C0-FE92-A09B-B150-9FE2F28D9738"
operation = "getMemberFromEvent"
source = "MembereventService"
timestamp = 0
timeToLive = 0
Also, following is the error message on Flex when the service fails:
{Fault code=Channel.Call.Failed, Fault string=error, Fault detail=NetConnection.Call.Failed: HTTP: Failed, Destination=MembereventService}
We are using Swiz as the micro-architecture for Flex development and Zend AMF for remoting between Flex and PHP.
Any ideas what is wrong here, what is causing Flex to send different request packets for the same service & what I can do to fix it?Hi, I know that your post is almost 5 years ago, but have you found the solution to this issue?
Thanks. -
Two remote objects calls on the same php class
Hi to all,
I've encountered a strange issue while developing with remote objects.
I've a mxml component with an init() method inside which is called by a menu.
When the init() method is called it makes 7 remote object calls which are bound to some components' dataprovider.
Among this calls I've got 2 remote object which refer to the same remote class. This because I have to call the class twice and the bind the result to two different combobox. Below you find the code:
<mx:RemoteObject id="myFile" source="myRemoteClass" destination="amfphp" showBusyCursor="true" makeObjectsBindable="true" fault="traceFault(event)"/>
<mx:RemoteObject id="myXls" source="myRemoteClass" destination="amfphp" showBusyCursor="true" makeObjectsBindable="true" fault="traceFault(event)"/>
in the init function I make this calls:
myFile.listDir("dir_1")
myXls.listDir("dir_2")
then in the mxml code I bound the result of myFile to combobox1 and the result of myXls on combobox2.
The problem arise when I call the myXls' listDir method. When I call it I receive the following error:
code:
Client.Error.DeliveryInDoubt
Message:
Channel disconnected
Detail:
Channel disconnected before an acknowledgement was received
The strange thing is that not only the myXls object returns this error, but also all the other 6 remote object return the same error above.
I'm not sure, but I guess that the error could be caused by the two remote object which call the same php remote class. If I comment one of the two calls everything works fine.
Do you have any suggestion about?
Thanks!!
Bye
LukeHi Jan.
1) We have the 2 VO, each with 3 rows to fill in data. What I mean is that when i just fill in all the fields for the first row of the first VO, and the value of one of these fields is bigger than 50, then after the exception is thrown and the message is displayed, the fields for the first VO are duplicated and shown in the second VO as if the user had inserted them.
2) We tried yesterday the validateEntity and a Method and Atributte Validator approaches after reading that white paper with the same results.
The validation is correctly done using any of the those methods.
I will try to reproduce this issue with the HR schema.
Thanks in advance once again. -
Weblogic 10.3.0 issues with remote object calls.
All:
I was wondering if anyone has experienced any issues with Weblogic 10.3.0 dropping initial remote object calls over AMF Secure Channel. Here are the issues we are experiencing.
1. FLEX applications fail consistently on the first remote object call made across the AMF Secure Channel. Resulting in the request not returning from the application server; which has had varying affects on the different applications including missing data, application freeze and general degrading of the user experience.
2. FLEX applications require a browser/application refresh once the application has been inactive for a certain period of time. In our experiences the behavior occurs after 30 minutes of inactivity.
I've deployed this same code to Weblogic 10.3.3 and the behaviors go away. Are there any patches to 10.3.0 that might take care of this issue that we are not aware of?
Thanks for you help,
MikeHello,
I found the problem. But I needed change the target of all my datasources until discover that one of my datasource didn´t answer and no errors was trigged.
My server was waiting this datasource, and not get started. -
When submit remote object call getting error Client.Error.DeliveryInDoubt
Hello,
We are having very weird error DeliveryInDoubt from blazeds.
[ERROR] failed to call the remote service !!![FaultEvent fault=[RPC Fault faultString="Channel disconnected" faultCode="Client.Error.DeliveryInDoubt" faultDetail="Channel disconnected before an acknowledgement was received"] messageId="98F7B030-0FE0-0B88-300C-EC422D055E21" type="fault" bubbles=false cancelable=true eventPhase=2
Error does not happen every time, but rather from time to time but happens on all client machines.
Environment:
blazeds v3.
Flex application with Remote Object.
Browser IE7.
Object that passed to blazeds is complex and might have 100 items.But number of items does not seem affect error occurences.
Short description for the object passed to blazeds remote object call for processing:
Remote Object call takes an argument ArrayCollection of SyncRequest objects (_requestSyncList)
var syncRequest:SyncRequest = new SyncRequest();
var syncObject:Object = new Object();
syncObject[requestBuilder.direction] = requestBuilder.jobMap;
syncRequest.syncJobs = syncObject;
_requestSyncList.addItem(syncRequest);
requestBuilder.jobMap is an object that have different artifacts.
jobMap[obj.artifact] = myColl;
myColl is ArrayCollection of artifact of SyncJob
Here is the definition of SyncJob
public class SyncJob
public var jobName:String;
[ArrayElementType("com.farmers.docprocessing.remotesync.vo.JobParameter")]
public var jobParams:ArrayCollection;
Not sure what causing that issue and how to debug it.
Please advice.
Thank youNot without you psoting some code.
Possible problem: Difference between object type being returned, vs the type of the reference (i.e., the method that returns an object should have a return type of the interface name). -
Exporting two remote objects on the same port
Hi,
I would like to export two remote objects on the same host, same port and bind them with different service names.
There is no problem when I do that from the same Java program.
But when I export and bind an object from a Java program 1, I cannot do the same with the second (and similar) Java program 2. This is the stack trace of my Exception:
java.rmi.server.ExportException: Port already in use: 50040; nested exception is:
java.net.BindException: Address already in use: JVM_Bind
at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:243)
at sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:178)
at sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:382)
at sun.rmi.transport.LiveRef.exportObject(LiveRef.java:116)
at sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:145)
at sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:129)
at java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.java:275)
at java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.java:178)
at java.rmi.server.UnicastRemoteObject.<init>(UnicastRemoteObject.java:75)Can some one help pleaseIt should work in any version of Java as long as the server socket factories are null or equal according to Object.equals() or its override in the SSF.equals() method if any. Which needs to be present and needs to take the form:
public boolean equals(Object object)
return object != null && object.getClass() == this.getClass();
}with further tests if the server socket factories have additional state. -
EventListeners for multiple remote object calls
Hi all,
I have a Flex component that is displaying content from multiple (specifically two) remote object calls. I can call both remote methods, get the results back, pass them off to their respective ItemRenderers, etc. with no trouble. What I need, though, is a way to determine if I get no results back from either function call, to dispatch an event to trigger the next view state, and I don't know how to do that. Something like:
protected function ticketConfigurationStateChangeHandler(event:Event):void
if(getPackagePromptsResult.lastResult.length == 0 && getTicketPromptsResult.lastResult.length == 0)
this.dispatchEvent(new Event("ticketConfigurationStateChange"));
protected function ticketPrompts_creationCompleteHandler(event:FlexEvent):void
getTicketPromptsResult.token = registrationAPI.getTicketPrompts();
getTicketPromptsResult.addEventListener(ResultEvent.RESULT, showTicketConfiguration);
protected function packagePrompts_creationCompleteHandler(event:FlexEvent):void
getPackagePromptsResult.token = registrationAPI.getPackageCPrompts();
getPackagePromptsResult.addEventListener(ResultEvent.RESULT, showPackageConfiguration);
Any suggestions would be greatly appreciated...I know I need the event listeners to be able to get lastResult.length (and have it not be null) but I don't know how to set them up so I can automatically pass the user through the component and onto the next one if there are no results returned without having the user click a button or something similar on an otherwise blank component.
Thanks in advance!
~ AmandaHi all,
I have a Flex component that is displaying content from multiple (specifically two) remote object calls. I can call both remote methods, get the results back, pass them off to their respective ItemRenderers, etc. with no trouble. What I need, though, is a way to determine if I get no results back from either function call, to dispatch an event to trigger the next view state, and I don't know how to do that. Something like:
protected function ticketConfigurationStateChangeHandler(event:Event):void
if(getPackagePromptsResult.lastResult.length == 0 && getTicketPromptsResult.lastResult.length == 0)
this.dispatchEvent(new Event("ticketConfigurationStateChange"));
protected function ticketPrompts_creationCompleteHandler(event:FlexEvent):void
getTicketPromptsResult.token = registrationAPI.getTicketPrompts();
getTicketPromptsResult.addEventListener(ResultEvent.RESULT, showTicketConfiguration);
protected function packagePrompts_creationCompleteHandler(event:FlexEvent):void
getPackagePromptsResult.token = registrationAPI.getPackageCPrompts();
getPackagePromptsResult.addEventListener(ResultEvent.RESULT, showPackageConfiguration);
Any suggestions would be greatly appreciated...I know I need the event listeners to be able to get lastResult.length (and have it not be null) but I don't know how to set them up so I can automatically pass the user through the component and onto the next one if there are no results returned without having the user click a button or something similar on an otherwise blank component.
Thanks in advance!
~ Amanda -
Simultaneous remote object calls in one http request?
I am noticing when I have two remote object calls happen at the same time they are being bundled into one http request. This is causing problems in my application becuase the result is not coming back until both have finished.
So basically I have to calls that happen at the sametime. One does not take anytime and the other is a long running task. I will not get the result for the first until the long running task completes.
Has anyone else seen this?
Any help would be appreciated."suspend the main thread, pending a remote call.." No. Can't
be done.
..."pass arguments into the resultHandler..." Yes, this is
done using the AsyncToken. (ACT pattern)
The send() methods returns an AsyncToken object. You can use
this dynamic object to add almost anything you want to the token,
including strings, and functions (google the term "closure").
As I am still not comfortable with anonymous functions, I
like to pass strings. I pass an identifier, which I can use in a
switch statement to determine the next step. Sometimes I pass a
"nextStep" string to define finer grain conditionality.
I use a single dataService object and result handler function
for all calls.
Tracy -
I'm using same icloud and same apple ID on two iphones. Now i get calls from same number on both iphones at the same time. How to turn off that?
Apple ID's are not device specific, so when you changed it on the iPad 2 it changed it on the iPhone 4 as well, since it's the same account still. What you need to do is create a second Apple ID (so you'll have two accounts, one for iPhone 4 and a seperate one for iPad 2).
To create a new Apple ID on your iPad 2:
1) Go into Settings > Store.
2) If you are already signed in, tap your Apple ID on the screen and you will be given a few options, one of which is to sign out of your account.
3) After you sign out, now click the "Sign in" button.
4) Tap "Create New Apple ID" and follow the instructions on-screen. -
TS3406 Twice call from same number if not done anything, the screen is locked
Iso 7.0.4 - Twice call from same number (within 3 minutes) if not done anything immediately after the first call, the screen is locked (the added photo of screen). Now no way to access the phone of home screen or something else.
iso 7.0.4 - Twice call from same number (within 3 minutes) if not done anything immediately after the first missed call, the screen is locked after second missed call bizzarly. Now no way to access the home screen or something else on the screen by any touch (Back seen on the screen also does not get touched) except force power off and on. Please find the solution for me.
and shot) m same number if not done anything, the screen is locked.Ok, well I had the network support guy down, when I mentioned an "OD Server" he went into Directory Access and put some details in that seem to have fixed the problem! So thanks for that...
Unfortunately, it looks like some of the other machines in the room might need binding, but at least the network team is aware of it.
Whereabouts would I look for ARD crash logs on the affected iMac? I tried locking/unlocking the screen again after the other issue was fixed and had the same problem. Its almost instant - as soon as you hit "lock" the status immediately switches to "ARD Not Active". -
Call to a remote object in the same JVM
Hi,
I want to implement a logging mechanism in my system. I'm planning to
write an rmi object and make it a start up class.
I wud like to know whether the calls to this start up class made by the
ejb instances and from the servlet engine in the same JVM, wud be rmi calls
or wud they be simple method calls.
Does weblogic detect the calls from the objects of the same jvm and
optimise them, or wud they be rmi calls only.
btw, i'm using weblogic 5.1
thx,
ManoharTry:
initialNamingContext.rebind("single",
weblogic.rmi.server.UnicastRemoteObjcet.exportObject(obj)
"M. Manohar" wrote:
Hi Eduardo,
thx for ur reply.
I wud like to know how to make this "binding a stub".
wat i'm using is binding an object only.
Instantiating an object which implements the remote interface and binding
it to the JNDI tree by,
initialNamingContext.rebind("single", obj);
and ofcourse defining it as a start up class in the weblogic.properties
file.
Can u pls explain how to do "binding a stub"
thx,
Manohar
Eduardo Ceballos wrote in message <[email protected]>...
Presuming that the start up class binds itself into the jndi tree, then itonly depends on what you bind: binding a stub results in the RMI runtime
overhead; binding the object itself, results in the simpler function call
overhead.
"M. Manohar" wrote:
Hi,
I want to implement a logging mechanism in my system. I'm planning to
write an rmi object and make it a start up class.
I wud like to know whether the calls to this start up class made by the
ejb instances and from the servlet engine in the same JVM, wud be rmi
calls
or wud they be simple method calls.
Does weblogic detect the calls from the objects of the same jvm and
optimise them, or wud they be rmi calls only.
btw, i'm using weblogic 5.1
thx,
Manohar -
Daisy-chaining remote object calls
If you want to get data from a series of CFCs using remote
object, and each call depends on data received from the previous
call, you have to daisy-chain the functions making the calls,
otherwise there is no way to guarantee that the data is available
in time (in practice it is never available in time) because the
main thread races on regardless.
Now if you want to refresh parts of the data, or you want to
get a different set of data from one or more of the same CFCs, you
either can use the same functions and set up a different set of
daisy-chains with multiple boolean tests to see which chain of
links should be being followed ( and this ends up something akin to
a four-dimensional Hampton Court maze), or you have to duplicate
the remote calls over and over again in different sets of functions
and resultHandlers. Either way you end up with a horrible mess.
Is there any way to write a class that can suspend the main
thread, pending a remote call listener sending a resume main thread
event.
The other way that would work (though this would not be as
good) is to change addEventListener, so that you can pass arguments
into the resultHandler.
Does anyone have any ideas that could lead to a solution to
this problem? It's giving me gray hair.
Doug"suspend the main thread, pending a remote call.." No. Can't
be done.
..."pass arguments into the resultHandler..." Yes, this is
done using the AsyncToken. (ACT pattern)
The send() methods returns an AsyncToken object. You can use
this dynamic object to add almost anything you want to the token,
including strings, and functions (google the term "closure").
As I am still not comfortable with anonymous functions, I
like to pass strings. I pass an identifier, which I can use in a
switch statement to determine the next step. Sometimes I pass a
"nextStep" string to define finer grain conditionality.
I use a single dataService object and result handler function
for all calls.
Tracy -
How to output HTML when called from a browser
We are trying to replace a small web app with a bpel app so it has to return HTML. I keep getting XML of the HTML as output from this simple app. It doesn't interpret the html. The bpel uses a simple assign that puts an HTML string into the "body" message then passes it to the "reply".
I have found out how to call this from the browser by changing "orabpel" in the url to "httpbinding" and then adding the "operation" onto the endpoint.
from: http://server:7777/orabpel/default/ws1/1.0
to: http://server:7777/httpbinding/default/ws1/processIs it possible to output html back to the browser and have the bpel look like a web page? Setting the mimetype of the output message type to "text/html" seems to have no effect at all.
Here is my wsdl:
<?xml version="1.0"?>
<definitions name="HTTPGetService"
targetNamespace="http://services.otn.com"
xmlns:tns="http://services.otn.com"
xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/">
<message name="HTTPGetServiceRequestMessage">
<part name="Region" type="xsd:string"/>
<part name="EffectiveDate" type="xsd:string"/>
<part name="EndDate" type="xsd:string"/>
<part name="acc1" type="xsd:string"/>
<part name="acc2" type="xsd:string"/>
</message>
<message name="HTTPGetServiceResponseMessage">
<part name="body" type="xsd:string"/>
</message>
<!-- portType implemented by the HTTPGetService BPEL process -->
<portType name="HTTPGetService">
<operation name="process">
<input message="tns:HTTPGetServiceRequestMessage"/>
<output message="tns:HTTPGetServiceResponseMessage"/>
</operation>
</portType>
<binding name="HTTPGet" type="tns:HTTPGetService">
<http:binding verb="GET"/>
<operation name="process">
<http:operation location="/process"/>
<input>
<http:urlEncoded/>
</input>
<output>
<http:urlEncoded/>
<mime:content type="text/html" part="body"/>
</output>
</operation>
</binding>Hi,
Open up admin console. Expand "Servers" node to view servers in domain.
Right click on a server (or select Logging/ General tab) and select "view
server log".
Regards,
Jon -
My IPhone 6 128GB with current software using AT&T is dropping 5-10 calls a day. I am calling from an office with good signal strength and in the same location as i did with my 5S which almost never had dropped calls. Is this a hardware or software issue? Is this a common issue with the new IPhones?
Hi jackneedshelp,
Thanks for visiting Apple Support Communities.
If calls are not going through on your iPhone 6, I recommend going through the troubleshooting method found at this link:
iPhone: Troubleshooting issues making or receiving calls - Apple Support
These steps can help identify and resolve the symptom that might be causing the connection issue.
All the best,
Jeremy -
Need FM which tells whether request received(object call) from R3 OR Portal
Hi All,
I need to differentiate some logic in a method based on whether it is called from R/3 OR Portal. I think there is a function module which tells whether the request is from Portal or not.
Thanks in advance
Regards,
Sudhakar.Hi Sudhakar,
Not aware of any such FM. But this is what you can do.
Any action form portal usually will call an RFC. In that RFC you can use SET parameter (SAP memory). And in your method you can check for that parameter to determine if it was called from portal.
Regards
Krishna Kishor Kammaje
Maybe you are looking for
-
I can't print my PDF form after filling it out. Only the form prints and not the text I put in.
-
Code to traverse through wpfgrid and click on the wpfimage for the corresponding in Coded UI
Hi, I have a wpf application which has wpftable having columns as name, type, created date, modified date and an image. (On click on this image, edit and delete button will be displayed for each row). I am trying to do edit and delete operations for
-
I need to change parameter "Allow primary windows on top" witout using style manager but using either command line solaris functions or if there are no such functions in solaris change some configuration files. I'd like to know whether this functions
-
Toggle Visio layers visibility in SharePoint 2013 services
Hi, We have a Visio diagram representing system topology. Systems are mapped to different processes that can be visualized with Active X control buttons and some VB to toggle layers visibility. Works great in Visio. Doesn't work in SharePoint. I am
-
Disk space when migrating from aperture
Hi, I am a current Aperture user and I plan to migrate all my photos to the Photos app. I am aware of some of the limitations of the Photos app and I am ok with that. My question is I have multiple libraries with the biggest being 90GB. I also onl