Java 动态BlazeDS端点配置

Java 动态BlazeDS端点配置,java,actionscript-3,apache-flex,Java,Actionscript 3,Apache Flex,我在搜索一些帮助,以创建一个使用BlazeDS和Java服务器以及动态BlazeDS端点配置的web Flex应用程序 首先,我将试图解释我目前的情况 我有一个Flex3.2应用程序,它提供了应用程序的GUI。从ActionScript中,我使用BlazeDS调用Java方法。要访问BlazeDS,我使用一个提供端点的配置类,如下所示(它是一个构造函数): 该类的思想是根据请求URL确定端点。我使用委托类调用使用BlazeDS的远程方法,如下所示: { import com.adobe.cair

我在搜索一些帮助,以创建一个使用BlazeDS和Java服务器以及动态BlazeDS端点配置的web Flex应用程序

首先,我将试图解释我目前的情况

我有一个Flex3.2应用程序,它提供了应用程序的GUI。从ActionScript中,我使用BlazeDS调用Java方法。要访问BlazeDS,我使用一个提供端点的配置类,如下所示(它是一个构造函数):

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

{
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类配置中使用新的URL配置重新构建应用程序

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

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

总之,我正在寻找一种方法,如何从配置中获取BlazeDS URL,以便能够在不重建整个应用程序的情况下对其进行更改

谢谢你的建议

编辑:将问题修改为更实际的问题。我改进了根据请求URL动态确定URL的方法,因此现在即使对于代理服务器也是如此。然而,我对flex的配置仍然很好奇,不需要重新构建。

这里是我的一个老例子,它的功能与您的基本相同。它只是需要正确创建的字符串。如果端点地址错误,则相应地捕获错误

我的项目目前可能无法生成,因为Flexmojos。。。我还不能测试它


因为它没有正确地理解您的问题,所以我误解了您:您可以在SWF旁边放置一个配置文件,然后通过URLLoader加载它,或者通过FlashVars传递它。这样您就可以自由地动态通过端点。

谢谢您的示例。然而,我相信这并不能解决我的问题。代码中有一个硬编码的URL。因此,您总是连接到同一个URL。当您尝试将应用程序移动到另一台服务器时,必须重新生成应用程序以替换URL字符串。当我无法自动确定地址时,我也能够硬编码地址。然而,当硬编码时,我仍然需要重建应用程序,以便能够部署到新的目标。哦,我一开始误解了你。检查我编辑的答案。好提示,弗洛里安。所以我只需在WAR中放置一个配置文件,并使用URLLoader,就可以在ActionScript中访问该文件,而不必知道服务器的URL?你能举个例子吗?谢谢。以这个网站为例,似乎最终达到了我所需要的效果!令人惊叹的!很抱歉,我没有正确阅读你的问题。。。这本可以节省一些时间。我终于找到了一种动态检测正确URL地址的方法。然而,如果可能的话,我仍然对在不需要重建的情况下改变flex配置的方法感兴趣。
{
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);
    }

}
}