我们有一个用java编写的GWT项目。我们有一个特定于环境的注销URL(https://example-dev.net/logoff.htm,https://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构建在这种情况下失败。
我使用我们在应用程序服务器上添加的外部属性文件进行了配置。我更新了我的问题,即如何在代码中添加该属性文件。但gwtc构建失败。 – devlperMoose
如果您粘贴的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
您是否从服务器发送任何数据到你的客户端GWT代码已经?你使用GWT的RPC机制来做到这一点吗?如果是这样,您可以使用该机制根据需要发送配置的注销URL值吗?我们正在做一个类似的项目。我们在服务器上进行配置,每个环境都有所不同。当用户登录到我们的应用程序时,某些配置会发送到客户端GWT模块。 – Lev