前言
部署于JBoss5中的Spring应用,现需要判断项目中的某一个文件是否存在。首先需要获取项目部署后的真实路径。在JBoss5中war包放于deploy目录中,启动JBoss后会将war包解压到一个tmp目录中的一个随机命名的文件夹中,这个随机命名的文件夹每次重新启动就会重新生成,所以要在项目中获取文件路径就需要动态的获取到JBoss解压war后的目录。
实践
项目的访问路径为:https://域名/develop/access
在代码中尝试获取真实的部署路径:
String path = this.getClass().getClassLoader().getResource("/").getPath();
logger.info("路径1为:"+path);
String path1 = Thread.currentThread().getContextClassLoader().getResource("/").getPath();
logger.info("路径2为:"+path1);
WebApplicationContext currentWebApplicationContext = ContextLoader.getCurrentWebApplicationContext();
ServletContext servletContext = currentWebApplicationContext.getServletContext();
logger.info("路径3为:"+servletContext.getRealPath("/"));
logger.info("路径4为:"+servletContext.getContextPath());
logger.info("路径5为:"+servletContext.getRealPath(""));
logger.info("路径6为:"+servletContext.getResource("/").getPath());
2021年12月10日大约 1 分钟