weblogic get ServletConttext().getRealPath(/)
1690 ワード
http://1185734295.iteye.com/blog/2073459
問題の説明:tomcatサーバーとwebspareサーバーでは、このような方法でサーバーの完全なパスを得ることができます。
でもweblogicに移転したら、得られなくなります。帰ってきたのはnullです。
理由:weblogicはwarパッケージとしてリリースされていますが、realPathはありませんので、get Servlet Contect().getRealPath(/)で絶対パスを得ることができません。
解決方法:コードを修正して相対パスを得る:
コードを
提案:
もしあなたが使っているのがget Resource()なら、myeclipseやeclipseを使ってプロジェクトをwarに圧縮してからあなたの部署の仕事に影響はありません。
使ってもいいです
問題の説明:tomcatサーバーとwebspareサーバーでは、このような方法でサーバーの完全なパスを得ることができます。
でもweblogicに移転したら、得られなくなります。帰ってきたのはnullです。
理由:weblogicはwarパッケージとしてリリースされていますが、realPathはありませんので、get Servlet Contect().getRealPath(/)で絶対パスを得ることができません。
解決方法:コードを修正して相対パスを得る:
コードを
getServletContext().getRealPath("/")
変更getServletContext().getResource("/")
この問題を解決できます。提案:
URL url = request.getSession().getServletContext().getResource("/");
String path = request.getSession().getServletContext().getRealPath("/")
get RealPath()が取得したのは絶対パスで、getResource()が取得したのは相対パスです。開発者にとっては相対パスを使用しています。絶対パスを使用しているので、一旦サーバやシステムを変更すると、経路やクラスのローディングエラーが発生します。典型的な場合、windowsの下にC、Dディスクの点数があります。ただし、Linuxシステムではディスクの区別がなくなりますので、getsResource()を使うことをおすすめします。もしあなたが使っているのがget Resource()なら、myeclipseやeclipseを使ってプロジェクトをwarに圧縮してからあなたの部署の仕事に影響はありません。
String path=this.getClass().getClassLoader().getResource("/").getPath();
上のこれはweb-inf/clasesの中の経路を取得しました。使ってもいいです
ServletContext.getResourceAsStream("/WEB-INF/config/db.config")
メソッドですString tmpFolderPath = request.getSession().getServletContext().getResource("/phototemp/photo").getFile();
注意this.get Servlet Contect()はTomcatで使用できますが、WebLogicでは使用できません。WebLogicでは次のような方法で代替できます。request.getSession().getServletContext()