Java:无论应用程序服务器

时间:2015-11-19 15:34:26

标签: java weblogic wildfly

我正在寻找访问资源文件(例如一堆.xml文件)的“最佳实践”方式以及它们所在的文件夹结构,无论使用何种应用程序服务器。

现在我正在使用Wildfly 8服务器,我通过获取应用程序的真实路径然后使用src/main/resources/xxxx以及Paths.get(resourcePath)来访问所有Files.walk(Paths.get(folderPath)),如果我想访问文件夹的文件

但是,当我尝试部署到Weblogic 12c时,我遇到了一个问题,因为此应用服务器实际上将WEB-INF/classes下的所有内容都包含在内,并创建了一个.jar文件并将其添加到WEB-INF/lib。我仍然可以使用classLoader.getResource(resourcePath)访问单一资源但由于某些原因,当我尝试创建new File(Paths.get(resourcePath)或使用Files.walk(Paths.get(folderPath))时,它似乎无法正常工作。它抛出一个异常,说文件不存在,我猜是因为它是无法访问的,因为它被打包在一个jar文件中。

我可能会使用classLoader.getResource(resourcePath)来访问我的所有资源,但不幸的是,在我的情况下,我无法知道在编译时可用的资源。我特别需要能够浏览选定文件夹的文件和子文件夹,但我没有找到在应用服务器或所有应用服务器上执行此操作的常用方法。

如果解决方案使用新的File api而不是创建一堆FileReader,那么

奖励积分,但我也很满意。

1 个答案:

答案 0 :(得分:1)

您可以将XML文件放在/WEB-INF/xml文件夹中,然后使用ServletContext获取该位置的FilePath

变式1:

致电servletContext.getResourceUrl("/WEB-INF/xml")获取URL并将此网址转换为FilePath。但是,根据服务器,这可能会返回非文件资源URL,例如一个jndi:/网址。

变式2:

致电servletContext.getRealPath("/WEB-INF/xml")获取文件字符串,并将此网址转换为FilePath