gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 06:39:45 25 4
gpt4 key购买 nike

我正在寻找一种方法,允许我(以某种方式)将服务器名称、服务器端口和 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com