2012-01-03 3 views
1

私は入力ストリームをjavaのtomcatのwebinfフォルダの下に置いておきたいのですか?javaのtomcatのweb-infフォルダの下にあるinputstreamとして設定ファイルが必要です。私はJavaのTomcatのweb-infフォルダにある設定ファイルにinputstreamを取得する方法は?

にコードの下に
InputStream xwikicfgis = FIPSSOAuthServiceImpl.class.getClassLoader().getResourceAsStream("config.cfg"); 

を試してみましたが、そのは、WEB-INF/classesフォルダ下のファイルを検索しようとしているが、私のファイルは、WEB-INFフォルダの直下に位置しています。私はどのようにWeb-inf/classesフォルダの代わりにweb-infへのパスを指すようになっていませんか?

答えて

5

任意のサーブレットからservletConfig.getServletContext()。getResourceAsStream( "/ WEB-INF/filename")を使用して取得できます。

+0

もし私が完全なパス(com.myclass.Testのようなパッケージを含むことを意味する)を与えるべきである、またはテストのようなファイルの単純な名前をuder web-inf/classesフォルダにあるjavaクラスファイルに入力ストリームを得る必要があるなら。私のもう一つの理解は、libフォルダの権利の下で見つからない場合は、最初にクラス内のフォルダを検索しますか? –

+0

クラスdirのディレクトリ構造に従ってください(アーカイブを展開して内部を見てください)。 N.B. Windowsでも(バックスラッシュではなく) "/"区切り文字を使用してください。 – Artem

+0

Thaks Artem。最後に、このサーブレット設定はサーブレットクラスで利用可能です。サーブレットではない他のJavaクラスでそれを行う必要がある場合はどうすればいいですか? –

3

使用javax.servlet.ServletContext.getRealPath(String)を

String webappBase = getServletContext().getRealPath("/"); 

は、あなたのWebアプリケーションのドキュメントをベースにあなたを指します呼び出しは、これはの親であるWEB-INF

その後、あなたの入力ストリームを取得するために

InputStream is = new FileInputStream(webappBase + File.separator + "WEB-INF" + 
              File.separator + "config.cfg"); 

を使用することができます

+0

アプリケーションのアーカイブがデプロイ後にアンパックされない場合(たとえば、Weblogic ASを使用する場合)、getRealPath()は機能しません。 – Artem

+0

@Artem - お役立ち情報 – A4L

0

それとも、使用することができます。

System.getenv("CATALINA_HOME") + "/webapps/your project name/foo.cfg 

TomcatがCATALINA_HOMEなしで動作することはできませんので、我々は、追加の設定ファイルや他の何かせずにそれを使用することができますし、あなたがあなたと一緒に巨大なのServletContextを行う必要はありません。

関連する問題