2014-01-13 62 views
0

我使用網絡片段(servlet 3規範),因此可以加載例如通過ServletContext.getResourceAsStream(「access.xml」)在我的WAR的/ WEB-INF/lib /庫中的META-INF/resources/access.xml文件。ServletContext.getRealPath()是否適用於Web碎片?

對ServletContext.getRealPath(「access.xml」)執行相同操作無效(=> null)。

該規範規定:

The getRealPath method takes a String argument and returns a String representation of a file on the local file system to which a path corresponds. Resources inside the META-INF/resources directory of JAR file must be considered only if the container has unpacked them from their containing JAR file when a call to getRealPath() is made, and in this case MUST return the unpacked location.

我的容器(Tomcat)的沒有解開罐子,這似乎是這個問題? Tomcat如何解開罐子。打包WAR時,我應該拆開罐子嗎?

回答

0

是的,getResourcesAsStream()總是有效。但getRealPath()不。

答案:不要試圖將getRealPath()與web片段一起使用。

0

所以這取決於你想要做什麼。如果您試圖在包含的庫依賴項中獲取文件的位置,那麼我不確定。如果你想要閱讀access.xml文件的內容,那麼你可以使用

new InputStreamReader(context.getResourcesAsStream("access.xml")); 

,然後用InputStreamReader合作,以獲取該文件的內容。

相關問題