java - Flex/Java Web 应用程序的外部化客户端 ChannelSet 配置

标签 java apache-flex web-applications configuration blazeds

我正在寻找一种方法,允许我(以某种方式)动态地将服务器名称、服务器端口和 Web 上下文传递到我的 Flex 客户端,以便它可以创建一个 ChannelSet 供其 RemoteObjects 使用。当然,我的 Java 服务器端代码可以轻松使用这三个属性,因此我只需要一种将它们传递给客户端的方法。

默认情况下,Adobe says您应该根据服务器配置文件“services-config.xml”编译 Flex 应用程序。这是一种非常不灵活的做法,Spring says应该避免(我同意)。

一个popular approach就是利用Flex的http服务下载一个XML配置文件。我喜欢这个想法,但我不想硬编码 XML 文件并将其保存在我的 WAR 文件中。有没有办法从 Java 代码动态生成它?

我的另一个想法是以某种方式使用 flashvars 将属性从包含的 HTML 页面传递到 SWF 文件。但同样,我不想将它们硬编码到 HTML 页面中。有没有办法(也许用Javascript?)在页面加载时动态设置这些值?

最佳答案

我就是这样做的。我希望您会发现它有用:

public static function getRemoteObject(destination:String, channelName:String,
    showBusyCursor:Boolean=true):RemoteObject{
    var remoteService:RemoteObject=new RemoteObject(destination);
    var channelSet:ChannelSet=new ChannelSet();
    var url:String = Application(Application.application).url;
    var secure:Boolean = URLUtil.isHttpsURL(url);
    var protocol:String = URLUtil.getProtocol(url);
    var amf:AMFChannel;
    if (secure){
        amf = new SecureAMFChannel(channelName, protocol +
            "://{server.name}:{server.port}" +
            (Application.application as Application).parameters.contextRoot +
            "/graniteamf/amf");
    }else{
        amf = new AMFChannel(channelName, protocol +
            "://{server.name}:{server.port}" +
            (Application.application as Application).parameters.contextRoot
            + "/graniteamf/amf");
    }
    channelSet.addChannel(amf);
    remoteService.channelSet=channelSet;
    remoteService.showBusyCursor=showBusyCursor;
    return remoteService;
}

因此,您可以看到,您需要提供的唯一内容是目标 - 必须在服务器端 XML 和 contextRoot 中配置 - 作为 flashVar 传递。在我的例子中(通过 JSP)作为 flashVar 传递看起来像这样:

String flashVariables = "contextRoot=" + request.getContextPath() +
    "&locale=" + request.getLocale().getLanguage(); 

关于java - Flex/Java Web 应用程序的外部化客户端 ChannelSet 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4405226/

相关文章:

css - mx :panel 上的 Flex 3 css 样式

java - 如何判断 Java SSLSocket 是否有可用数据?

java - 无法在 Pig 中处理 Xml

Java,局部变量无故增加其值

web-applications - ios8 safari 独立 Web 应用程序在单击选择时崩溃

django - 学习 Django 1.5 的最佳方式是什么?

iphone - iPhone/iPad 网络应用程序的禁用格式检测不起作用

java - java中的复选框数组

apache-flex - 尝试在 Flex4/AS3 中将矩形绘制到自定义容器

apache-flex - Flex 4 中的垂直选项卡