Configuration GWT的服务器端配置

Configuration GWT的服务器端配置,configuration,gwt,Configuration,Gwt,试图避免在这里重新发明轮子。我有一个准备部署的GoogleWebToolkit页面,但是与我通信的webservice在部署的服务器上的相对地址与我的本地测试机器不同 因此,我正在寻找一种简单的方法来部署一些易于编辑的配置文件,我可以将基本设置放在服务器端。关于如何做到这一点,我有一些想法,但这些想法似乎有点不切实际,在我看来,这类问题一定已经有了解决方案(毕竟,每服务器设置是一件非常常见的事情!) 有什么想法吗 编辑:由于这似乎没有引起太多的注意,让我概括一下我的初步想法:在任何其他逻辑之前,

试图避免在这里重新发明轮子。我有一个准备部署的GoogleWebToolkit页面,但是与我通信的webservice在部署的服务器上的相对地址与我的本地测试机器不同

因此,我正在寻找一种简单的方法来部署一些易于编辑的配置文件,我可以将基本设置放在服务器端。关于如何做到这一点,我有一些想法,但这些想法似乎有点不切实际,在我看来,这类问题一定已经有了解决方案(毕竟,每服务器设置是一件非常常见的事情!)

有什么想法吗

编辑:由于这似乎没有引起太多的注意,让我概括一下我的初步想法:在任何其他逻辑之前,先存储一个静态文件,该文件位于我使用AJAX调用查询的GWT文件的本地。当文件返回时,我解析出数据并将它们存储为全局可访问的变量,然后允许页面构建逻辑运行。看起来很笨重,在加载之前等待AJAX返回也有很大的缺点,但它可以工作。还有更好的建议吗?(请?)

我的解决方案: 我自己找到了一个解决方案,但它非常特定于我的具体场景,所以我不知道它对一般用户有多大用处。无论如何,我都会把它贴在这里,以防有人发现它有用

我正在处理的页面实际上是嵌入在ASP.net站点中的GWT控件。利用这一点以及我对GWT Dictionary类的发现,我构建了一个“设置”系统,如下所示:

首先,在ASP.net Web.Config文件中设置我想要的设置(在本例中是Web服务的地址)

<appSettings>
    <add key="serviceUrl" value="http://mySite.com/myService.asmx"/>
</appSettings>

从那里,我可以在代码中的任意位置调用AppConfig.serviceUrl以获取设置。。。唷!是的,这是一个很长很复杂的方法,但对我来说很有效。亚历山大给出的答案中似乎最符合我的要求,所以悬赏归他,但感谢所有参与我棘手的小问题的人

最简单的方法似乎是将此配置信息存储在
服务器
代码可以访问的地方,即您的
serviceinpl

对此,您有多个选项,通常是:

  • 设置环境变量
  • 设置系统属性
  • 在类路径中放置属性文件
  • 查找JNDIBean

请随时纠正我的错误,但您似乎不需要运行时服务器端配置。如果您确实需要这种灵活性,或者希望对所有部署使用单个.zip,则可以使用-(请参阅“添加过期或缓存控制标头”一节)-far future Expires标头中给出的技术。这意味着AJAX请求将被浏览器大量缓存,并且只会在第一个请求上造成轻微的减速

与其这样做,我实际上建议使用编译时标志和GWT提供的属性系统。为了简化这项工作,我制作了一个名为。使用它可以使访问每个部署配置变得非常简单。添加以下类:

public interface MyConfiguration extends AutoConfiguration {
    public String getFoobar();
}
要访问GWT代码中的值,请添加以下简单帮助程序:

private MyConfiguration getMyConfiguration() {
    return (MyConfiguration) GWT.create(MyConfiguration.class);
}
创建几个不同的.gwt.xml文件,每个部署服务器一个。然后通过使用父.gwt.xml文件最小化任何重复。有关此主题的更多信息,请阅读

总之,将以下代码段添加到per deployment.gwt.xml中(并确保添加所需的继承行):



希望能有所帮助:)

我对你的要求有点困惑

如果您希望编译一次,并在不同的服务器上使用不同的选项运行GWT应用程序,并在GUI构建期间在客户端使用这些选项,那么有很多选项

使用以下方法将信息输入您的程序:

  • 环境变量
  • 系统属性
通过以下方式将信息发送到客户端:

  • 对文件的AJAX调用(如您所指定)
  • 从JSP而不是静态HTML提供GUI。让JSP将信息嵌入JS变量中,GUI可以使用JSNI调用访问该变量。这节省了你往返的时间

你的第二个链接成功了:)我认为第一个链接的格式很有趣,但它表达了要点。我会研究这个方法…哇。。。这是一个相当复杂的例子。我不确定该看哪一部分。我知道PropertyOracle是我通过发电机得到的东西,但发电机对我有什么作用,我将如何使用它?我通常很擅长阅读这些东西,但我觉得在这种情况下我缺乏很多背景知识(无论如何,我需要这个项目,所以我现在就深入研究它。@Alexander:github链接不再起作用了(useraccount被删除了?)@LaurensRietveld抱歉,直到现在才收到回复,新链接是:我已经玩了很长时间了,但可能需要一些主要更新才能使用最新版本。啊,看起来有人已经为故事添加了正确的链接。神奇!
public interface MyConfiguration extends AutoConfiguration {
    public String getFoobar();
}
private MyConfiguration getMyConfiguration() {
    return (MyConfiguration) GWT.create(MyConfiguration.class);
}
<set-configuration-property name="foobar" value="whee1234" />