Tomcat上に置かれたWebアプリに外部ファイルを読ませる

参考:www.dollpaper.com

外部ファイルの内容によって挙動が変わるスタブを作ってたのでこんなんが必要になった。
結構はまったけどやることは簡単。

java.net.URLをインポートする。

import java.net.URL;

んで以下のように。

URL resourceUrl = this.getClass().getClassLoader().getResource("hoge.xml");
String path = resourceUrl.toString();

1行目はwebapps/appname/WEB-INF/classes直下にあるhoge.xmlファイルを見る。
パスの取得はtoStringメソッドを使う。

他にもServletContextで取得する方法があったが、Servletクラスでしか使えなさそう。
最初はこればっかり出てきて「違うんや。。。そうじゃないんや。。。」ってなった。
Servletでの起動時外部ファイル読み込み方法 | 陸トトの忘れぬ為の備忘録
ファイルのパスの取得について - Java 解決済 | 教えて!goo
WEB-INF下のファイルの読み込み | ごった煮 - tips about programming and building a server

今まではeclipse上で動けば良かったからこういうのはちゃんと考えたことなくて結構新鮮だった。
スタブではあるけどwebサービスが一通り作れて楽しかった。