Expand my Community achievements bar.

Dive into Adobe Summit 2024! Explore curated list of AEM sessions & labs, register, connect with experts, ask questions, engage, and share insights. Don't miss the excitement.

Flex AMF channel problem only with few IE8 installation

Avatar

Level 1

Hi,

My application is using Flex and remote object to communicate to Java. Its working with IE7 and any other browser and also its working in most installation of IE8. But at two PC, its giving AMF channel problem as shwon below with IE8. On these two PC, if I install IE7, then its working but with IE8, its not working.

Flex.FaultEvent.[RPC Fault faultString="Send failed" faultCode="Client.Error.MessageSend" faultDetail="Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Status 200: url: 'http://localhost:8600/messagebroker/amf'"]

ReferenceError: Error #1069: Property message not found on mx.messaging.events.ChannelFaultEvent and there is no default value.
at Main/processUILoadedErrors()
at Main/___Main_Operation5_fault()

at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.rpc::AbstractOperation/http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler()
at mx.rpc::Responder/fault()
at mx.rpc::AsyncRequest/fault()
at mx.messaging::ChannelSet/faultPendingSends()
at mx.messaging::ChannelSet/channelFaultHandler()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.messaging::Channel/connectFailed()
at mx.messaging.channels::PollingChannel/connectFailed()
at mx.messaging.channels::AMFChannel/statusHandler()

I appriciate your help, please let me know if you have any idea or suggestion.

Thanks,

Chandresh

10 Replies

Avatar

Level 1

Me too. (Remote Object AMF Channel (php SabreAMF))

Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Status 200:

Only IE8 .

Any one Can help me?

Avatar

Level 1

I'm getting what looks like the same error as well, on a single PC running IE 8 (IE 7 is fine, other PCs with IE 8 are fine, Firefox is fine), only using RemoteObject to communicate with a ColdFusion CFC.

I've been unable to identify anything about the PC that might cause this problem, and Google shows only people asking what might cause this problem.

Avatar

Level 2

Thanks for the feedback. I'm running on IE 7 and have the prob. It seems strange that it works with some classes and not others, which would suggest a prob with the class definition ( the RO vs. the VO ), but I don't see any discrepancies.

~e

Avatar

Level 1

At first I thought it was an IE problem (I did have an error in IE and not in Firefox), but it turned out that it was partially a caching issue: there was something about the Flex app that I'd fixed later, or something about swf and CFCs being out of sync, that was causing the error. I added cfheader tags to the CF page housing the swf (instead of the default HTML, that doesn't work for me because I need to pass the swf properties at runtime) and that took care of my IE 7 issue.

<cfheader name="Expires" value="#GetHttpTimeString(DateAdd('d', -1, Now()))#">
<cfheader name="Cache-Control" value="no-cache, no-store">
<cfheader name="Pragma" value="no-cache">

One thing I read about that could produce this error outside of IE 8 was that you might have to specify the gateway: it was, at one point in my app, looking for http://localhost/flex2gateway, even though other errors now are coming from http://x.x.x.x/flex2gateway. (We're running the standalone installation of CF 8.) I don't know if that's going to help you or not.

But we kept getting the problem in IE 8, and I confirmed with the user that he had the updated swf (even deleted it myself and refreshed the page). Got another laptop, loaded IE 8, default settings, and it ran fine.

I'm almost wondering if I'll have to specify the endpoint in my RemoteObjects myself ... I thought I'd tried that once before with no luck, although that may have been caused partly by the caching issue.

[edit] So no, it's not the wrong endpoint in my case - I checked the error detail this time and it's definitely looking for the correct endpoint.

Avatar

Level 2

I think I stumbled on a solution:

from: http://flexdiary.blogspot.com/2008/11/thoughts-on-remoting.html

"I think the real reason the serialization wasn't working was the last thing I discovered, which is that you have to have a dummy variable typed as your custom class in the same class as the RemoteObject that you're using to retrieve the values. This makes sure that the class definition gets compiled into the class where it can be used."

If I add a Dummy Variable in my Flex ProductVO:

public var dummy:CaseVO;

public var cases:ArrayCollection = new ArrayCollection();

then the returned RO gets properly deserialized.

~e

Avatar

Level 1

Guys,

I believe the problem is narrowed down to Vista  & some installations of IE8. I have a user who getting this error after he installed IE8 on his vista machine. When he runs the app from any other browser (Safari or Firefox) there is no problem. I've posted a Charles session at

http://bugs.adobe.com/jira/browse/SDK-21005 . Make sure you vote on this there.

-Luis

Avatar

Level 1

Hi,

I had the same problem and in my opinion I found out a flexible solution which is working well with all browsers. This solution is tested for: Flex 3.4, flash player 10,0,32,18 and the latest Blaze DS in august 2009. But should work even in other configurations.

First you should definetly take a look at this post in order to understand deeply the problem: click here

Abstract of the solution:

Define channelSet with two channels: amfChannel as a default one and httpChannel as second one. Then delegate to Flex to handle for you when your browser has troubles with AMF (like some IE8) and Flex will switch automatically to httpChannel if necessary.

Analyze the log file first to be sure that the solution is what you need:

In the following log file you can see the same classical "HTTP: Status 200" problem which is the root of all troubles. The channelSet initially adds

two channels amfChannel and httpChannel. Then a method myFirstMethod(myFirstParameter) has been invoked over the remoteObject.

As you see the default channel amfChannel fails and Flex is trying with the httpChannel and then succeeds.

The PROVE: IE8 having troubles with AMF and switching to HTTP, log file:

14:03:52.375 INFO  Channel : 'amfChannel' channel endpoint set to http://localhost:8080/backend/messagebroker/amfpolling
14:03:52.375 INFO  Channel : 'httpChannel' channel endpoint set to http://localhost:8080/backend/messagebroker/http
14:03:52.390 INFO  Producer : 'E095D162-76F4-61C5-EA47-15227D7881AA' producer set destination to 'be-destination-oe'.
14:03:52.390 DEBUG 1_ServiceDelegate : CALL service=setUser args=0001...
14:03:52.390 INFO  Producer : 'E095D162-76F4-61C5-EA47-15227D7881AA' producer sending message '96918781-BFB2-2346-9CFE-15227D88AA0A'
14:03:52.390 DEBUG Channel : 'amfChannel' pinging endpoint.
14:03:52.578 DEBUG Channel : 'amfChannel' channel got status. (Object)#0
  code = "NetConnection.Call.Failed"
  description = "HTTP: Status 200"
  details = "http://localhost:8080/backend/messagebroker/amfpolling"
  level = "error"
14:03:52.578 INFO  Channel : 'amfChannel' channel polling stopped.
14:03:52.578 ERROR Channel : 'amfChannel' channel connect failed.
14:03:52.578 WARN  Producer : 'E095D162-76F4-61C5-EA47-15227D7881AA' producer channel faulted with Channel.Connect.Failed NetConnection.Call.Failed: HTTP: Status 200: url: 'http://localhost:8080/backend/messagebroker/amfpolling'
14:03:52.640 INFO  Channel : 'httpChannel' channel is connected.
14:03:52.640 DEBUG Channel : 'httpChannel' channel sending message:
(mx.messaging.messages::RemotingMessage)#0
  body = (Array)#1
    [0] "myFirstParameter"
  clientId = (null)
  destination = "be-destination-oe"
  headers = (Object)#2
  messageId = "96918781-BFB2-2346-9CFE-15227D88AA0A"
  operation = "myFirstMethod"
  source = (null)
  timestamp = 0
  timeToLive = 0
14:03:52.656 INFO  Producer : 'E095D162-76F4-61C5-EA47-15227D7881AA' producer connected.
14:03:52.687 INFO  Producer : 'E095D162-76F4-61C5-EA47-15227D7881AA' producer acknowledge of '96918781-BFB2-2346-9CFE-15227D88AA0A'.

Solution in details

1) Server side

1.1. remote-config.xml

  * be sure to define amf & http channel in the tag <default-channels>

  * destination with id = "backend-destination"

1.2. proxy-config.xml -> be sure to define amf & http channel in the tag <default-channels>

1.3. message-config.xml -> be sure to define amf & http channel in the tag <default-channels>

1.4. service-config.xml -> you should have uncommented both channels - amf & http

2) Client side

2.1. RemoteObjectFactory:

package andrewstoev.flex.services
{
    import mx.messaging.Channel;
    import mx.messaging.ChannelSet;
    import mx.messaging.channels.AMFChannel;
    import mx.messaging.channels.HTTPChannel;
    import mx.rpc.remoting.mxml.RemoteObject;
   
    public class RemoteObjectFactory
    {       
        private static var AMF_CHANNEL:String = "AMF";
        private static var HTTP_CHANNEL:String = "HTTP";
       
        private static var AMF_ENDPOINT:String = "http://localhost:8080/backend/messagebroker/amfpolling";
        private static var HTTP_ENDPOINT:String = "http://localhost:8080/backend/messagebroker/http";
               
        private function createChannel(channelType:String):Channel{
            switch(channelType){
                case AMF_CHANNEL: return new AMFChannel("amfChannel", AMF_ENDPOINT);
                case HTTP_CHANNEL: return new HTTPChannel("httpChannel", HTTP_ENDPOINT);
                default: return null;
            }
        }
       
        private function createChannelSet():ChannelSet{
            var amfChannel:Channel = createChannel(AMF_CHANNEL);
            var httpChannel:Channel = createChannel(HTTP_CHANNEL);
           
            var channelSet:ChannelSet = new ChannelSet();
            channelSet.addChannel(amfChannel);
            channelSet.addChannel(httpChannel);
            return channelSet;
        }
       
        public function createRemoteObject():RemoteObject
        {       
            var channelSet:ChannelSet = createChannelSet();
                               
            var ro:RemoteObject = new RemoteObject();
            ro.endpoint=AMF_ENDPOINT;
            ro.channelSet=channelSet;
            ro.destination="backend-destination";
            return ro;
        }       
    }
}

2.2. How to use it

var ro:RemoteObject = new RemoteObjectFactory().createRemoteObject();

ro.myFirstMethod(myFirstParameter);

Cheers

Avatar

Level 1

Hey all

Had the same problem with flash builder 4.5 and Google Chrome.

I spend 2 and a half days debugging and figuring out the problem.

First i thought that i was the large amount of data that i was loading thru zend amf but suddenly it got resolved by changing the browser.

changed to latest firefox and it all started working correctly. Also works with IE 7.

Did some more ground work with workmates and we found out that Chrome is failing in different areas. in flash, in joomla in different places....nobody knows why but the problems might get solved or not once the Chrome updates itself.

That suxs!

Avatar

Former Community Member

Hi Andrew,

We are facing the similar issue with IE9.

Error:

id:0.code:Client.Error.MessageSend.detail:Channel.Connect.Failed error

NetConnection.Call.Failed:HTTP:Failed:url:'http://localhost:8080/remotin

g/messagebroker/amf'

Can you please suggest a solution for this.

Thanks,

dbcs.