- PR -

WARでの絶対パス取得について

1
投稿者投稿内容
もんも
常連さん
会議室デビュー日: 2002/10/01
投稿数: 24
投稿日時: 2003-02-21 16:38
いつもお世話になっております。
もんもと申します。

私は現在、サーブレットの開発をおります。

warファイルの中のサーブレットから
warの外にある設定ファイルを参照して
設定内容によってサーブレットの動作を変えたいと
思っています。

warにしたときにwarの外にあるファイルを参照する方法を
ご存知ないでしょうか?

またはwarファイルのローカルの絶対パスを
知ることはできないでしょうか?

[環境]
Windows2000
Weblogic7.0

[getServletPathの結果]
HttpServletRequest#getServletPath: /servlet/sampleservlet

[Weblogic7で warの中にあるファイルに対しての参照結果]
ServletContext#getRealPath("/config.ini"): null
ServletContext#getResource("/config.ini"): zip:C:/bea/user_projects/sample/myserver/stage/_appsdir_sample_war/sample.war!/config.ini
ServletContext#getResourceAsStream("/config.ini"): java.util.zip.ZipFile$ZipFileInputStream@3b101d

[Weblogic7で warの外にあるファイルに対しての参照結果]
ServletContext#getRealPath("../config.ini"): null
ServletContext#getResource("../config.ini"): null
ServletContext#getResourceAsStream("../config.ini"): null

[Weblogic7で アプリケーションルートパスを取得しようとした結果]
ServletContext#getRealPath("/"): null
ServletContext#getResource("/"): null
ServletContext#getResourceAsStream("/"): null

※結果はprintlnで出力しています。

[TOMCAT 4.1.12での結果]
ServletContext#getRealPath("/config.ini"): C:\jakarta-tomcat-4.1.12\webapps\sample\config.ini
ServletContext#getResource("/config.ini"): jndi:/localhost/sample/config.ini
ServletContext#getResourceAsStream("/config.ini"): java.io.ByteArrayInputStream@546dbc

ServletContext#getRealPath("../config.ini"): C:\jakarta-tomcat-4.1.12\webapps\sample\..\config.ini
ServletContext#getResource("../config.ini"): null
ServletContext#getResourceAsStream("../config.ini"): null

ServletContext#getRealPath("/"): C:\jakarta-tomcat-4.1.12\webapps\sample\
ServletContext#getResource("/"): jndi:/localhost/sample/
ServletContext#getResourceAsStream("/"): null

[フォルダ構成]
C:\bea\user_projects\sample\applications\sample.war
C:\bea\user_projects\sample\applications\config.ini

sample
 ├config.ini
 └WEB-INF
   ├web.xml
   └classes
     └sampleservlet.class


以上、方法をご存知の方がいらっしゃいましたら
よろしくお願いいたします。
もんも
常連さん
会議室デビュー日: 2002/10/01
投稿数: 24
投稿日時: 2003-02-21 17:42
もんもです。
検証用に作成したサンプルです。

-------------------------------------------
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class sampleservler extends HttpServlet {
protected void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html; charset=Shift_JIS");
PrintWriter out = res.getWriter();
out.println("<HTML>");
out.println("<B>HttpServletRequest#getServletPath:</B>" + req.getServletPath() + "<BR>");
out.println("<BR>");
out.println("<B>/config.ini</B>" + "<BR>");
out.println("<B>getRealPath:</B>" + super.getServletContext().getRealPath("/config.ini") + "<BR>");
out.println("<B>getResource:</B>" + super.getServletContext().getResource("/config.ini") + "<BR>");
out.println("<B>getResourceAsStream:</B>" + super.getServletContext().getResourceAsStream("/config.ini") + "<BR>");
out.println("<BR>");
out.println("<B>../config.ini</B>" + "<BR>");
out.println("<B>getRealPath:</B>" + super.getServletContext().getRealPath("../config.ini") + "<BR>");
out.println("<B>getResource:</B>" + super.getServletContext().getResource("../config.ini") + "<BR>");
out.println("<B>getResourceAsStream:</B>" + super.getServletContext().getResourceAsStream("../config.ini") + "<BR>");
out.println("<BR>");
out.println("<B>/</B>" + "<BR>");
out.println("<B>getRealPath:</B>" + super.getServletContext().getRealPath("/") + "<BR>");
out.println("<B>getResource:</B>" + super.getServletContext().getResource("/") + "<BR>");
out.println("<B>getResourceAsStream:</B>" + super.getServletContext().getResourceAsStream("/") + "<BR>");
out.println("<BR>");
java.net.URL url = this.getClass().getResource("/");
String mPath = url.getFile();
out.println("<B>mPath:</B>" + mPath + "<BR>");
out.println("</HTML>");
}
}
1

スキルアップ/キャリアアップ(JOB@IT)