tomcat サーバーにファイルをロードする方法を知っている人はいますか? 使用している: Maven、JSF 2、Spring 3、Tomcat 7
次のプロジェクト構造があります。
page.xmlファイルを読み込みたい!
サーバーのserver.xmlのGlobalNamingResourceに環境変数を設定することを考えました。しかし、WebApp でこの変数にアクセスするにはどうすればよいでしょうか?
または、ContextClassLoader を使用することもできますが、そのファイルをロードしたい場合は、常に null が返されます。
問題は、FacesContext.getCurrentInstance(); を呼び出すと null が返されるため、FacesContext を使用できないことです。
現在、パスを機能させるには、パスをハードコーディングする必要がありました。しかし、Eclipse でテストする場合、またはサーバーにデプロイする場合は、常にこのパスを変更する必要があります。
@PostConstruct
public void loadMenu() {
List<Page> pageCollection = new ArrayList<Page>();
Page page = null;
File xmlFile = new File(
"C:\\Program Files\\Apache Software Foundation\\Tomcat 7.0\\webapps\\rainstar2-webapp\\WEB-INF\\classes\\at\\beko\\rainstar2\\page.xml");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder db = dbf.newDocumentBuilder();
Document xmlDoc = db.parse(xmlFile);
xmlDoc.getDocumentElement().normalize();
NodeList pages = xmlDoc.getElementsByTagName("page");
int size = pages.getLength();
Node pageNode = null;
for (int i = 0; i < size; i++) {
pageNode = pages.item(i);
NamedNodeMap attr = pageNode.getAttributes();
page = new Page();
page.setLabel(attr.getNamedItem("key").getNodeValue()
.toString());
page.setRedirect(Boolean.valueOf(attr.getNamedItem("redirect")
.getNodeValue().toString()));
page.setNavigationName(attr.getNamedItem("url").getNodeValue()
.toString());
page.addRole(attr.getNamedItem("role").getNodeValue()
.toString());
pageCollection.add(page);
}
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}