Tomcat 如何在SpringWS中获取应用程序上下文路径?
我正在使用SpringWS创建一个Web服务。在我的项目中,我创建了一个Tomcat 如何在SpringWS中获取应用程序上下文路径?,tomcat,spring-ws,Tomcat,Spring Ws,我正在使用SpringWS创建一个Web服务。在我的项目中,我创建了一个Helper类来读取位于/src/main/resource文件夹中的示例响应和请求xml文件 在“本地”单元测试webservice应用程序时,我使用System.getProperty(“user.dir”)获取应用程序上下文文件夹。以下是我在Helper类中创建的一个方法,用于帮助我检索资源文件夹中感兴趣的文件 public static File getFileFromResources(String filena
Helper
类来读取位于/src/main/resource
文件夹中的示例响应和请求xml文件
在“本地”单元测试webservice应用程序时,我使用System.getProperty(“user.dir”)
获取应用程序上下文文件夹。以下是我在Helper
类中创建的一个方法,用于帮助我检索资源文件夹中感兴趣的文件
public static File getFileFromResources(String filename) {
System.out.println("Getting file from resource folder");
File request = null;
String curDir = System.getProperty("user.dir");
String contextpath = "C:\\src\\main\\resources\\";
request = new File(curDir + contextpath + filename);
return request;
}
但是,在将编译好的WAR文件“发布”到ApacheTomcat目录的。/webapps
文件夹后,我意识到System.getProperty(“user.dir”)
不再返回我的应用程序上下文路径。相反,它返回ApacheTomcat根目录,如图所示
C:\Program Files\Apache软件基金会\Tomcat 6.0\src\main\resources\SampleClientFile
我似乎找不到有关获取我的Web服务的根文件夹的任何信息。我在Spring web应用程序上看到了一些示例,在这些示例中,我可以使用以下内容检索上下文路径:
request.getSession().getServletContext().getContextPath()
但在本例中,我使用的是一个SpringWeb应用程序,其中请求中有一个servlet上下文。但是SpringWS,我的入口点是一个端点。如何获取webservice应用程序的上下文路径
我希望有一个类似的上下文路径
C:\Program Files\Apache软件基金会\Tomcat 6.0\webapps\clientWebService\WEB-INF\classes
有人能提出一个实现这一目标的方法吗 您可以从
RequestContextHolder
获取当前请求:
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
有点笨重,但可能是您最好的选择。我不认为有任何保证可以保证您的应用程序实际位于文件夹中,或者允许您的代码浏览文件系统的任意部分。某些应用程序服务器可能不会分解war文件,而应用程序的位置实际上位于归档文件本身内部 但是,您可以加载应用程序本身中的任何资源,而不管它位于何处。例如,ServletContext允许您通过javax.servlet.ServletContext#getResourceAsStream来实现这一点。您还可以在那里找到应用程序的上下文路径(如请求路径) 您可以通过在bean中实现org.springframework.web.context.ServletContextAware来访问servlet上下文