我搜索一些使用BlazeDS和具有动态BlazeDS端点配置的BlazeDS服务器创建web应用程序的帮助。
首先,我将试图解释我的现状。
我有一个Flex 3.2应用程序,它提供了应用程序的GUI。在ActionScript中,我使用BlazeDS调用Java方法。为了访问BlazeDS,我使用了一个Config类,它提供了如下所示的端点(它是一个构造函数):
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调用远程方法,如下所示:
{
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的配置仍然很好奇,而不进行重建。
发布于 2014-09-02 18:30:36
下面是我的一个老示例烈火DS服务,它与您所做的基本相同。它只是需要正确创建的字符串。如果端点地址错误,则相应地捕获错误。
由于Flexmojos,我的项目目前可能无法构建..。我还不能测试这个。
由于它没有正确阅读您的问题,我误解了您:您可以将配置文件放在SWF旁边,并通过URLLoader加载它,或者通过FlashVars传递它。这应该给您动态传递端点的自由。
https://stackoverflow.com/questions/25625937
复制相似问题