2012-12-03 63 views
0

我想開在web-inf/xsd/output.xsd XSD文件這就是我要做的打開XSD文件/ XSD

URL url = portletContext.getResource("WEB-INF/xsd/output.xsd");

的getResource返回URL但對我來說我得到NullPointerException,我需要提供這個到newFile來打開文件。

File newFile = new File("");

我很困惑如何得到這個工作。

UPDATE

請我的英語承受。我得到了這個工作。我有一個問題,我有另一個文件*.xsl將被用來生成PDF文件。打開後我無法刪除此文件,如果文件保持打開狀態,對JVM會產生什麼影響我的意思是> 100個用戶試圖創建PDF,即*.xsl文件將被打開100次,在將來的應用程序中將被嚴重使用用戶,GC是否會自動清除所有打開的文件描述符?

+0

看起來您已經接受了答案,但我擔心您爲什麼要手動打開portlet中的文件。這通常表現不佳。 –

+0

@NickRoth我想爲對象生成一個pdf文件。我創建了一個xsd和xslt文件,它可以編組對象並呈現pdf輸出。這是一個錯誤的方法?請讓我知道最好的方法 – user525146

+0

如果我正確理解你,你會動態生成相同的文件一遍又一遍?爲什麼不預先生成該文件並提供該文件?總的來說,在處理請求時打開文件並不是一個很好的性能實踐。如果你在init()期間打開一個文件,那麼它應該沒問題。我不知道你需要滿足的所有要求,所以目前我不能提出更好的選擇,但要注意文件IO在應用程序上的性能開銷。 –

回答

1

javax.portlet.PortletContext的API文檔它描述了:

...路徑必須以斜線(/)開始並且被解釋爲相對於當前上下文根(其通常是在WebContent或web目錄您的Web應用程序) 此方法允許portlet容器爲任何來源的portlet提供資源。資源可以位於本地或遠程文件系統,數據庫或.war文件中。