首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >部署应用程序跳过资源文件

部署应用程序跳过资源文件
EN

Stack Overflow用户
提问于 2017-08-10 13:31:23
回答 2查看 48关注 0票数 1

我把我的头撞到了墙上.我有一个(到目前为止相当简单的) google应用引擎项目。在运行时,我希望读取一些XML文件(资源文件,而不是可服务的-静态文件)进行处理。在做了一些研究之后,我决定通过servlet上下文读取资源文件(类似于下面的内容)。在dev服务器上工作得很好。

InputStream inputStream1 = servletContext.getResourceAsStream("/“+ pathToXmlFile);

问题:在云中不起作用。首先,我认为加载资源的方式是错误的,但我注意到所讨论的XML文件似乎根本没有上传。它目前设在这里:

src/main/webapp/data/stuff.xml和src/main/webapp/webapp/data/stuff.xml

(我不知道在哪里放置XML文件,所以我将它复制到两个位置。)部署日志显示了如何跳过文件:

2017-08-10 13:13:42,451调试根跳过上传数据/stuff.xml

2017-08-10 13:13:42,461调试根跳上传WEB-INF/data/stuff.xml

我尝试了很多事情,但都没有成功,我试着部署了这个文件。我试过的事情:

  • 清除临时暂存目录
  • 手动清理生成
  • 重命名的目录/文件
  • 将文件包括在类目录中。
  • 在appengine-web.xml文件中播放资源文件部分(使用各种语法删除它)
  • 从云中删除该应用程序的旧版本
  • 重启Eclipse

FYI,appengine-web.xml的当前内容

代码语言:javascript
复制
<resource-files>
  <include path="/data/*.xml" />
  <include path="data/*.xml" />
</resource-files>

(不确定是否需要斜杠.)

请注意,部署确实适用于已更改的/新的.class文件,因此我对Java类的更改上传得很好。不知何故,部署机制不认识到XML文件也必须上载。

Windows,Eclipse 4.7,Java 8,云工具1.2.0.201706082053

任何帮助都值得赞赏,尤其是如果有人知道部署机制是如何决定部署哪些文件的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-10 13:47:29

试试这个:

代码语言:javascript
复制
<resource-files>
  <include path="/data/**.xml" />
</resource-files>

这应该包括data/及其子目录中的所有xml文件。

他们的包含和排除语法的文档,我相信你知道,是相当少。我很肯定你想要双星号,更肯定的是你想要前面的斜杠。我正试图找到更多的信息,现在,如果我这样做,将张贴一个链接。

票数 1
EN

Stack Overflow用户

发布于 2017-08-10 15:17:40

谢谢布兰登,**成功了。FYI,设置如下:

代码语言:javascript
复制
<resource-files>
  <include path="/data/**.xml" />
</resource-files>

<static-files>
  <exclude path="/data/**.xml" />
</static-files>

仅仅使用一个*并不足以满足“任何XML文件”的需要,它必须是**。作为资源文件条目的副作用,XML文件现在突然也可以作为静态文件使用,可以通过浏览器访问。因此,静态文件中的排除部分防止了这种情况的暴露。不知道这样做是否过于优雅或最简单/最干净的方法,但它有效.

FYI,“数据”目录直接包含在"webapp“下面,要访问资源,代码是: servletContext.getResourceAsStream("/data/stuff.xml");。

注意,为了让XML文件上传,我还必须手动“触摸”XML文件。

再次感谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45615204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档