2017-01-20 34 views
1

我们有一个用java编写的GWT项目。我们有一个特定于环境的注销URL(https://example-dev.net/logoff.htmhttps://example-sit.net/logoff.htm,...)。在GWT项目中使用来自IBM WAS服务器的属性文件

com.example.shared.constants/LogoutUrl.java

import com.google.gwt.i18n.client.Constants; 

public interface LogoutUrl extends Constants { 
    String LOGOUT_URL(); 
} 

com。示例:当我们从包装我们的项目/ src文件夹里面如下所示的属性文件添加该属性也能正常工作.shared.constants/LogoutUrl.properties

LOGOUT_URL = https://example-env.net/logoff.htm 

这看起来并不像一个很好的做法,因为这需要在每个服务器的URL的变化和新的战争创造。我尝试在服务器(IBM WAS)上添加此属性文件,并使用java.util.Properties从代码中检索它。但在这种情况下GWT构建失败。我们正在使用ant build。请建议一种方法从我们的项目中分离此属性文件并从服务器中检索。

更新: 添加我怎么试着用外部属性文件,我们在应用服务器添加到配置部分:

InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("logouturl.properties"); 
          Properties prop = new Properties(); 
          try { 
           prop.load(inputStream); 
          } catch (Exception e) { 
           //LOGGER.error("Exception occurred while loading logouturl.properties file.", e); 
          } 
          String logoutUrl = prop.get("LOGOUT_URL").toString(); 
          Window.Location.replace(logoutUrl); 

但gwtc构建在这种情况下失败。

回答

1

你正在使用GWT的i18国际化支持Constants机制,它听起来像不应该被视为你的应用程序中的常量,而是一个可配置的值,它可能在每个服务器/环境中有所不同。这似乎不相容。 i18常量机制是针对“常量”的,它们可以根据语言环境而有所不同。听起来像你正在寻找的是一种为注销URL提供可配置值的方法,这与i18或“常量”几乎没有关系。

您可以通过为您的应用服务器使用JNDI变量或通过使其引用外部.properties文件(不需要绑定到i18 Constants类)来动态配置您的注销URL。

+0

我使用我们在应用程序服务器上添加的外部属性文件进行了配置。我更新了我的问题,即如何在代码中添加该属性文件。但gwtc构建失败。 – devlperMoose

+0

如果您粘贴的Java代码是您的GWT模块的一部分,则应该失败。请注意,GWT java代码只是编译为javascript的java代码。并不是所有的Java代码都可以编译成JavaScript,GWT在文档中解释说,只有一部分Oracle的Java库可以在GWT中使用,所以它可以编译成Javascript(java.util。*,java.lang *等)。我不认为InputStream是该子集的一部分 - [与Java语言和库的兼容性](http://www.gwtproject.org/doc/latest/DevGuideCodingBasics.html) – Lev

+0

您是否从服务器发送任何数据到你的客户端GWT代码已经?你使用GWT的RPC机制来做到这一点吗?如果是这样,您可以使用该机制根据需要发送配置的注销URL值吗?我们正在做一个类似的项目。我们在服务器上进行配置,每个环境都有所不同。当用户登录到我们的应用程序时,某些配置会发送到客户端GWT模块。 – Lev

相关问题