You can use a remote object to configure server components from a Flex client at run time. In this case, you write a Java class that calls methods directly on components, and you expose that class as a remote object (Remoting Service destination) that you can call from a RemoteObject in a Flex client application. The component APIs you use are identical to those you use in a bootstrap service, but you do not extend the AbstractBootstrapService class.
The following example shows a Java class that you could expose as a remote object to modify a Message Service destination from a Flex client application:
package runtimeconfig.remoteobjects;
/*
* The purpose of this class is to dynamically change a destination that
* was created at startup.
*/
import flex.messaging.MessageBroker;
import flex.messaging.MessageDestination;
import flex.messaging.config.NetworkSettings;
import flex.messaging.config.ServerSettings;
import flex.messaging.config.ThrottleSettings;
import flex.messaging.services.MessageService;
public class ROMessageDestination
{
public ROMessageDestination()
{
}
public String modifyDestination(String id)
{
MessageBroker broker = MessageBroker.getMessageBroker(null);
//Get the service
MessageService service = (MessageService) broker.getService(
"message-service");
MessageDestination msgDest =
(MessageDestination)service.createDestination(id);
NetworkSettings ns = new NetworkSettings();
ns.setSessionTimeout(30);
ns.setSharedBackend(true);
...
msgDest.start();
return "Destination " + id + " successfully modified";
}
}
The following example shows an MXML file that uses a RemoteObject component to call the modifyDestination() method of an ROMessageDestination instance:
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="run()">
<mx:RemoteObject destination="ROMessageDestination" id="ro"
fault="handleFault(event)"
result="handleResult(event)"/>
<mx:Script>
<![CDATA[
import mx.rpc.events.*;
import mx.rpc.remoting.*;
import mx.messaging.*;
import mx.messaging.channels.*;
public var faultstring:String = "";
public var noFault:Boolean = true;
public var result:Object = new Object();
public var destToModify:String = "MessageDest_runtime";
private function handleResult(event:ResultEvent):void {
result = event.result;
output.text += "-> remoting result: " + event.result + "\n";
}
private function handleFault(event:FaultEvent):void {
//noFault = false;
faultstring = event.fault.faultString;
output.text += "-> remoting fault: " + event.fault.faultString +
"\n";
}
private function run():void {
ro.modifyDestination(destToModify);
}
]]>
</mx:Script>
<mx:TextArea id="output" height="200" percentWidth="80" />
</mx:Application>
Send me an e-mail when comments are added to this page | Comment Report
Current page: http://livedocs.adobe.com/blazeds/1/blazeds_devguide/runtimeconfig_4.html