尝试避免重复造轮子。我有一个Google Web Toolkit页面要部署,但是我要通信的Web服务在部署服务器上的相对地址与我的本地测试机器不同。
因此,我正在寻找一种简单的方法来部署,使用某种易于编辑的配置文件,在其中可以放置基本设置的服务器端。我有几个想法,但它们似乎有些hacky,并且我认为必须已经有解决这种问题的解决方案(毕竟,每个服务器的设置都是非常常见的事情!)
有什么好的建议吗?
编辑:由于这似乎没有引起太多关注,让我概述一下我的初步想法:存储一个静态文件,本地查询GWT文件时进行AJAX调用。当文件返回时,我解析出数据并将其存储为全局可访问的变量,然后允许页面构建逻辑运行。看起来很笨重,并且存在等待AJAX返回之前的任何加载的巨大缺点,但它可以工作。有更好的建议吗? (请?)
我的解决方案: 我自己找到了一个解决方案,但它非常特定于我的确切情况,所以我不知道对一般用户有多大用处。无论如何,我会在这里发布它,以防万一有人发现它有用。
我正在工作的页面实际上是嵌入在ASP.net网站中的GWT控件。利用这一点和我的GWT字典类的发现,我制作了一个像这样的“设置”系统:
首先,在ASP.net Web.Config文件中设置我想要的设置(在本例中为指向Web服务的地址)
在嵌入GWT控件的ASP页面中,我添加了一个“静态”Javascript对象,其中包含我需要的配置设置:
最后,在GWT中,我创建了一个静态的“AppConfig”类,像这样暴露了这个设置:
因此,我正在寻找一种简单的方法来部署,使用某种易于编辑的配置文件,在其中可以放置基本设置的服务器端。我有几个想法,但它们似乎有些hacky,并且我认为必须已经有解决这种问题的解决方案(毕竟,每个服务器的设置都是非常常见的事情!)
有什么好的建议吗?
编辑:由于这似乎没有引起太多关注,让我概述一下我的初步想法:存储一个静态文件,本地查询GWT文件时进行AJAX调用。当文件返回时,我解析出数据并将其存储为全局可访问的变量,然后允许页面构建逻辑运行。看起来很笨重,并且存在等待AJAX返回之前的任何加载的巨大缺点,但它可以工作。有更好的建议吗? (请?)
我的解决方案: 我自己找到了一个解决方案,但它非常特定于我的确切情况,所以我不知道对一般用户有多大用处。无论如何,我会在这里发布它,以防万一有人发现它有用。
我正在工作的页面实际上是嵌入在ASP.net网站中的GWT控件。利用这一点和我的GWT字典类的发现,我制作了一个像这样的“设置”系统:
首先,在ASP.net Web.Config文件中设置我想要的设置(在本例中为指向Web服务的地址)
<appSettings>
<add key="serviceUrl" value="http://mySite.com/myService.asmx"/>
</appSettings>
在嵌入GWT控件的ASP页面中,我添加了一个“静态”Javascript对象,其中包含我需要的配置设置:
<head runat="server">
<title>Picklist Manager</title>
<script type="text/javascript" language="javascript">
var AppConfig = {
serviceUrl: "<%= ConfigurationManager.AppSettings["serviceUrl"] %>"
};
</script>
<script type="text/javascript" language="javascript" src="gwtcontrol.nocache.js"></script> <!-- Include my GWT control -->
</head>
最后,在GWT中,我创建了一个静态的“AppConfig”类,像这样暴露了这个设置:
public class AppConfig {
public static String serviceUrl = "defaultUrl";
public static void Initialize() {
Dictionary appConfig = Dictionary.getDictionary("AppConfig");
if(appConfig == null) { return; }
servicePath = appConfig.get("serviceUrl");
}
}
从那里,我可以在代码的任何地方调用AppConfig.serviceUrl来获取设置...哇!所以,是的,这是一种漫长而复杂的方式,但它对我有效。在给出的答案中,亚历山大的答案似乎最符合我的要求,所以奖励给了他,但感谢每个人在我的棘手问题上提供帮助!