首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态BlazeDS端点配置

动态BlazeDS端点配置
EN

Stack Overflow用户
提问于 2014-09-02 14:32:42
回答 1查看 228关注 0票数 0

我搜索一些使用BlazeDS和具有动态BlazeDS端点配置的BlazeDS服务器创建web应用程序的帮助。

首先,我将试图解释我的现状。

我有一个Flex 3.2应用程序,它提供了应用程序的GUI。在ActionScript中,我使用BlazeDS调用Java方法。为了访问BlazeDS,我使用了一个Config类,它提供了如下所示的端点(它是一个构造函数):

代码语言:javascript
复制
public function Config(): void {

    if (_serviceUrl == null) {
        try {
            var browser: IBrowserManager = BrowserManager.getInstance();
            browser.init();
            var url: String = browser.url; 
            var host: String = mx.utils.URLUtil.getServerName(url);
            var port: uint = mx.utils.URLUtil.getPort(url);
            var parts: Array = url.split('/');
            if (parts[2] == '') {
                url = DEFAULT_URL;
                Alert.show("Unable to determine server location, using default URL: " + DEFAULT_URL, "Connection error");
            }
            else {
                url = parts[0] + '//' + parts[2] + '/' + parts[3] + '/messagebroker/amf';

            }
            _serviceUrl = url;
        } catch (e: Error) {

            Alert.show("Exception while trying to determine server location, using default URL: " + DEFAULT_URL, "Connection exception");
            _serviceUrl = DEFAULT_URL;
        }
    }

}

该类的思想是从请求URL中确定端点。我使用一个委托类来使用BlazeDS调用远程方法,如下所示:

代码语言:javascript
复制
{
import com.adobe.cairngorm.business.ServiceLocator;

import mx.rpc.IResponder;
import mx.rpc.remoting.RemoteObject;

public class AbstractRemoteDelegate
{
    public function AbstractRemoteDelegate(responder:IResponder,serviceName:String) 
    {
        _responder=responder;
        _locator=ServiceLocator.getInstance();
        _service=_locator.getRemoteObject(serviceName);
        _service.showBusyCursor=true;
        _service.endpoint = Config.instance.serviceUrl;

    }

    private var _responder:IResponder;
    private var _locator:ServiceLocator;
    private var _service:RemoteObject;

    protected function send(operationName:String,... args:Array) : void {           
        _service.getOperation(operationName).send.apply(_service.getOperation(operationName),args).addResponder(_responder);
    }

}
}

这种方法实际上很好。但是,我遇到了不能使用动态确定的URL的情况。在这种情况下,我需要Config.as文件中一个硬编码的URL。这就是问题所在。当尝试将应用程序部署到另一个服务器时,我总是需要在ActionScript类Config中使用新的URL配置重新构建应用程序。

因此,我搜索一种为Flex应用程序定义静态配置以连接到BlazeDS服务器的方法。以及在不重新构建应用程序的情况下更改这种配置的方法,这样我就可以让客户自己重新配置和移动Flex应用程序。

我考虑过使用配置文件,但是Flex在客户端运行,没有配置文件!我考虑过使用数据库配置,但客户端没有任何数据库!

总之,我正在寻找一种方法,如何从配置中获得BlazeDS URL,使其能够改变它而不重建整个应用程序。

谢谢你提出的任何有用的建议。

编辑:修改问题,使之更加实际。我改进了从请求URL动态确定URL的方法,因此它现在甚至适用于代理服务器。然而,我对flex的配置仍然很好奇,而不进行重建。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-02 18:30:36

下面是我的一个老示例烈火DS服务,它与您所做的基本相同。它只是需要正确创建的字符串。如果端点地址错误,则相应地捕获错误。

由于Flexmojos,我的项目目前可能无法构建..。我还不能测试这个。

由于它没有正确阅读您的问题,我误解了您:您可以将配置文件放在SWF旁边,并通过URLLoader加载它,或者通过FlashVars传递它。这应该给您动态传递端点的自由。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25625937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档