我有一个由Maven使用 gwt-maven-plugin 和 maven-war-plugin 构建的 .war 文件。在 .war 清单 META-INF / MANIFEST.MF 中,我有一些条目描述了依赖于Web应用程序的工件ID。我想阅读这些条目,以HTML形式向用户显示。如何在GWT中读取清单文件?在桌面应用程序中很简单:
Thread.currentThread().getContextClassLoader().getResourceAsStream("META-INF/MANIFEST.MF")
或
this.getClass().getResourceAsStream("META-INF/MANIFEST.MF")
但是我无法在GWT中做到这一点,因为JEM仿真库中没有方法。
我还尝试使用 RequestBuilder :
new RequestBuilder(RequestBuilder.GET, "META-INF/MANIFEST.MF")
.sendRequest("", new RequestCallback() {
@Override
public void onResponseReceived(Request req, Response resp) {
String text = resp.getText();
}
@Override
public void onError(Request res, Throwable throwable) {
result.put("Err","Err");
}
});
,但它也不起作用(错误404-未找到)。
答案 0 :(得分:3)
用户的网络浏览器无法读取META-INF或WEB-INF中的任何内容-这将使得下载战争方式的内部信息以及查找机密(包含密码或其他详细信息的配置文件)太容易了或获取源代码并对其进行反向工程。
要实现类似的目的,您需要编写一个提供该文件内容的servlet。这可能从项目中的两个示例行中的一个开始。
这实际上不是GWT问题-GWT应用是编译为JS而不是jar或war的,只是碰巧是保存在您的案例的.war存档中。