Java 在Openshift Tomcat 6-JBoss EWS 1.0上获取WEB-INF的路径

Java 在Openshift Tomcat 6-JBoss EWS 1.0上获取WEB-INF的路径,java,tomcat,jboss,openshift,Java,Tomcat,Jboss,Openshift,我以前在Tomcat-5.0.28及更早版本上使用以下内容获取上下文路径: 字符串context\u path=context.getRealPath(“/WEB-INF/”); 这样可以将路径返回到该文件夹。 但在OpenShift(Tomcat6-JBoss EWS 1.0)上,这种情况会再次出现 /var/lib/openshift/53.*context_id_here*..18/jbossews/null 空值应为: work/Catalina/localhost/_/WEB-INF

我以前在Tomcat-5.0.28及更早版本上使用以下内容获取上下文路径: 字符串context\u path=context.getRealPath(“/WEB-INF/”); 这样可以将路径返回到该文件夹。 但在OpenShift(Tomcat6-JBoss EWS 1.0)上,这种情况会再次出现

/var/lib/openshift/53.*context_id_here*..18/jbossews/null
空值应为:

work/Catalina/localhost/_/WEB-INF
如何使用JBOSS/Tomcat获取OpenShift上WEB-INF文件夹的路径

一点背景信息:当我在自己的Tomcat服务器上运行这个struts webapp时,我在webapps目录中部署了一个appname.war文件,并等待它展开(因为我在server.xml文件中设置了该选项)。然后,我将一个文件夹移动到webapps/appname/文件夹,其中包含我需要读取和写入的xml文件,以使我的应用程序正常工作。在OpenShift上,我使用jar xvf appname.war手动提取war文件(因为这是默认值,我不知道如何更改它),然后将文件文件夹(在git添加和推送之后,从与我文件夹中的war文件相同的目录)移动到work/Catalina/localhost/2;/WEB-INF/
在尝试使用上述路径时,这会导致NullPointerException。

我认为您应该使用getServletContext或getRealPath之类的工具,并从web根目录读取它,而不是尝试在物理磁盘上查找文件。这样,您的war文件可以在任何地方运行而不会出现问题。试着查找这两个,看看其中一个是否适合您的用例。

corey112358,我已经使用了这些调用。getRealPath前面的代码行是:
ServletContext=getServlet().getServletContext();字符串context_path=context.getRealPath(File.separator+“WEB-INF”+File.separator)“getServletContext().getRealPath(”)-如果从.war存档中提供内容,则此方法将不起作用。getServletContext()将为空。”如果使用jar命令解包war,是否也是如此?此OpenShift盒带中没有可更改设置的server.xml文件(我可以找到)。盒带目录中没有
.OpenShift/config/server.xml
文件,因此不确定如何指定解包war。此外,在创建了一个解决方案,用正确的路径替换空值并推送了一个新的war文件后,应用程序现在在其第一页上导致了ClassCastException。但是,在本地项目文件的这个位置上有一个server.xml文件。为什么不推送到服务器上?此外,文件中没有要设置为true的autoDeploy或unpackWARs元素。是时候阅读Tomcat 6了。在Tomcat7中,似乎根本不可能解包war文件。