Servlet内でのPathの指定について
- Servlet内でのPath指定で悩んでいます。アクセスするとFileNotFoundエラーが発生します。
- Servlet実行時のPathはどこになるのでしょうか?
- classが置いてあるディレクトリがルートではないようです。
- ベストアンサー
Servlet内でのPath
Servlet内でのPath指定でちょっと悩んでいます。 XMLを読ませて処理させようとして Source inSource = new StreamSource(new File("./XmlDump.xml")); とかやっているんですが、いざアクセスすると java.io.FileNotFoundException: /usr/local/jakarta-tomcat-3.3.1/bin/./XmlDump.xsl などとエラーを吐いてしまいます。 Servlet実行時のPathはどこになるのでしょうか・・・? いままで、実行中のclassが置いてあるディレクトリ(この例では $TOMCAT_HOME/webapps/xxx/WEB-INF/class)がルートだと思っていたのですが・・・。
- pythian
- お礼率87% (370/422)
- Java
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
Windows2000+Tomcat3.2.4の場合ですが、次のようになります。 a. (new File("./XmlDump.xml")).getAbsolutePath() → $TOMCAT_HOME\bin\.\XmlDump.xml を返す。 b. (new File("/XmlDump.xml").getAbsolutePath() → C:\XmlDump.xml を返す。 c. getServletContext().getRealPath("./XmlDump.xml") → null を返す。 d. getServletContext().getRealPath("/XmlDump.xml") → $TOMCAT_HOME\webapps\xxx\XmlDump.xml を返す。 したがって、 (1) $TOMCAT_HOME/webapps/xxx をルートと考える。 (2) '/' から始まる相対URLを getRealPath() の引数に与え、パスを得る。 という方法があることになります。 ところで、私が以前作ったサーブレットでは次のようにしてSourceオブジェクトを得てみました。 URL url = getServletContext().getResource("/xsldir/xxx.xsl"); Source xslSource = new StreamSource(url.openStream());
関連するQ&A
- JSPにおけるimportのパス?
=========================== ■jakarta-tomcat-3.2.4 |_■webapps |_■login |_■bookmark | |_□list.jsp ← 其の2 | |_■Web-inf | |_■classes | |_■atmakit | |_□MyDBAccess.class ← 其の3 | |_□MyUtil.class ← 其の4 |_■Web-inf |_■classes |_□Servlet.class ← 其の1 =========================== 上記のようなディレクトリ構造のwebアプリケーションを作成中です。 其の1(Servlet.class)から其の2(list.jsp)を呼び出し、 その中で其の3(MyDBAccess.class)と其の4(MyUtil.class)をimportしたいのですが、 その場合の其の2(list.jsp)でのimportのパスはどのように指定したら良いのでしょうか? そもそもそんなこと可能なのでしょうか? 現在 import="java.sql.* ,atmarkit.MyDBAccess ,atmarkit.MyUtil" としてありますが、 ----------------------- org.apache.jasper.JasperException: Unable to compile class for JSPE:\jakarta-tomcat-3.2.4\work\localhost_8080%2Flogin\_0002fbookmark_0002flist_0002ejsplist_jsp_0.java:16: クラス atmarkit.MyDBAccess が import に見つかりません。 import atmarkit.MyDBAccess ; ^ E:\jakarta-tomcat-3.2.4\work\localhost_8080%2Flogin\_0002fbookmark_0002flist_0002ejsplist_jsp_0.java:17: クラス atmarkit.MyUtil が import に見つかりません。 import atmarkit.MyUtil; ^ ----------------------- というエラーが発生します。 これだけでは分からないかも知れませんが、必要な情報があれば仰ってください。 分かりにくい質問で申し訳ないですが、どなたかご教授下さい。
- 締切済み
- Java
- Tomcat Servletが動きません
『Javaへの道:Tomcat』のページを参考に同じようにやってるのですが、 JSPはうまくいくのですがServletがうまくいきません。 (長文になります) 参考ページと私の環境で違う点 Windows XP Home → XP Pro Tomcat 6 → Tomcat 7 JDK6.0 → JDK6.23 ポート8080 → 8081 以下のファイル、フォルダを作りました(参考ページそのままです)。 C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\javaroad\jspdir\HelloJsp.jsp C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\javaroad\WEB-IMF\classes\HelloServlet.class C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\javaroad\WEB-IMF\web.xml C:\Program Files\Apache Software Foundation\Tomcat 7.0\conf\Catalina\localhost\javaroad.xml --↓↓HelloJsp.jspここから↓↓-- <HTML> <BODY> from JSP source<br> <%= new java.util.Date() %> </BODY> </HTML> --↑↑HelloJsp.jspここまで↑↑-- --↓↓web.xmlここから↓↓-- <?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>Hello</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/Hello</url-pattern> </servlet-mapping> </web-app> --↑↑web.xmlここまで↑↑-- --↓↓javaroad.xmlここから↓↓-- <Context path="/javaroad" reloadable="false"/> --↑↑javaroad.xmlここまで↑↑-- JSPを起動 http://localhost:8081/javaroad/jspdir/HelloJsp.jsp → 正しく表示される Servletを起動 http://localhost:8081/javaroad/Hello → ステータス404 The requested resource (/javaroad/Hello) is not available. <気になる点> 1.Tomcatを起動するためStratボタン押しても1回では起動せず、2~3回で起動する。 1回目のときcommons-daemon.2011-01-15.logにこんなログが出る。 [2011-01-15 23:01:16] [error] Pid file 'C:\Program Files\Apache Software Foundation\Tomcat 7.0\logs\tomcat7.pid' exists [2011-01-15 23:01:16] [error] ServiceStart returned 1 2.servletクラスは正しくコンパイルできているのか 状況を詳しく説明しようとして長々と書いてしましたが Servletを表示するにはどうしたらいいでしょう? 足りない情報があれば追加します。
- ベストアンサー
- Java
- Tomcat4.1でServletが無いと言われるのです……
以前の時よりもっと初歩の段階で動かないのです・・・・・・。 例えば、sever.xmlでpathとdocBaseをtestにした場合、 webapps以下に、test, WEB-INF, classesとファイルを作りますよね。 それで、testフォルダにあるhtmlファイルの送信ボタンを押したら、 form action="/test/servlet/foo"として、method="POST"とした場合 『存在しません』といった内容のエラーがでるのは、何故でしょうか??? ほとほとTomcat4.1が使いこなせません。 どうか良きアドバイスを頂けるよう、お願いします。
- ベストアンサー
- Java
- servlet (resin) について
tomcatとresinって、そんなに違うのですか? resinでプログラムを動かしたいのですが、動いてくれません… tomcatの場合、webappsの下に自分の好きなディレクトリを作れば(test)その中のWEB-INF/classes にクラスファイル(TEST.class)を置けば、 http://localhost:8080/test/servlet/TEST で動きますが、resinも同じようにしようと思って、test/WEB-INF/classes/の下にTEST.java を置いて(コンパイルしてくれると聞いたのでJAVAファイルを置きました) http://localhost:8080/test/servlet/TEST を見ても、/test/servlet/TEST was not found on this server. と怒られました… どうすればいいのでしょう??
- 締切済み
- Java
- Servletの置き場所(ディレクトリ)
現在、Windows2000+Apache1.3.20+TomCATにてAPPサーバを構築したのですが、作成したServletやJSPはどこへ置けばいいのでしょうか? Apacheのドキュメントルートは DocumentRoot "D:/Program Files/Apache Group/Apache/htdocs" でTomCATは D:\Program Files\jakarta-tomcat-3.2.3\ の中にconfやbin,webappsなどすべてのファイル/フォルダが入っています。 どうやら、サンプルはwebappsに入っているようです。 Apacheを起動しなくても、8080ポートで接続すればTomCATの画面が現れるので、なぜApacheが必要なのかという疑問と、ServletやJSPの置き場所は?という疑問にぶつかってます。 どなたかよろしくお願いします。
- ベストアンサー
- Java
- TomcatでServletの配置場所を変更できますか?
Tomcatを使ってServletを開発しています。 普通ならば、d:\tomcat\webapps\test\WEB-INF\classes に開発したServletを配置しますが、 事情があって、別のドライブにServletを置きたいのです。 # 例 E:\test\classes\ その場合、どのようにすればよいのでしょうか? どなたか、アドバイスよろしくお願いします。
- 締切済み
- Java
- Javaサーブレットを読み込んでくれません…
現在、社内での新プロジェクトの為にJSPの研修を行っています。 開発環境 ・Windows2000 Service Pack 4 ・JDK 1.5.0_06 ・Tomcat 5.5.20 JDKとTomcatのインストールは正常に終了し、http://localhost:8080/は正常に見ることが出来ました。 その後、<Tomcat-Home>/webapps/ROOT/entryフォルダを作成し、 ・entry/WEB-INF/ ・entry/WEB-INF/classes/ 以上二つのフォルダを作成して、WEB-INFフォルダ直下にweb.xmlファイルを作成しています。 classesフォルダの中にHelloServlet.classを置き、web.xmlファイルの中身を書き換えてTomcatを再起動させてみたのですが、http://localhost:8080/entry/HelloServletとURLを打ってみても見ることが出来ません。 何か間違っているのか、設定不足なのか…教えていただければ幸いです、よろしくお願いいたします。 ************<web.xml>************ <web-app> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/HelloServlet</url-pattern> </servlet-mapping> *********************************
- ベストアンサー
- Java
- ServletのWebアプリケーションの追加方法
Servletド素人なのですが、なんとかtomcatをセットアップして悪戦苦闘しています。 ServletはWebアプリケーションという単位で動くと聞きまして、自分のホームにそれ専用のディレクトリを作ってみたのですが、うまくtomcatから認識されないんです。 /home/user/hoge とか作って、tomcatのserver.xml に <Context path="/hoge" docBase="/home/user/hoge" debug="0" reloadable="true" ></Context> と書いたのですが、いざtomcatをスタートさせると AutoWebApp: Loaded from config: DEFAULT:/hoge WorkDirSetup: Creating work dir /usr/local/jakarta-tomcat-3.3.1/work/DEFAULT/hoge となってしまい、自分のホームにならないんです。 仕方なくそこにファイルを置いて、http://localhost/hoge/ 等と打っても、全部404になってしまいました・・・。 もちろん、http://localhost/examples/ ではちゃんとtomcatのデフォルトが出てきます。 わかりますでしょうか・・・。
- ベストアンサー
- Java
- java servlet tomcat エラー
サーブレット用のクラスファイルがwebページ (http://localhost:8080/examples/servlet/HelloWorldServlet) で見ることができないんですがなんででしょうか? http://localhost:8080にはアクセスできるからtomcatは正常に起動してるんですが。 ちなみにファイル HelloWorldServlet.class はtomcat 6.0\webapps\examples\WEB-INF\classesに保存してあります。 エラー内容は下記のようになっています。 ーーーーーーーーーーーーーーーーーーーーーーーーーーー HTTPステータス 404 - /examples/servlet/HelloWorldServlet type ステータスレポート メッセージ /examples/servlet/HelloWorldServlet 説明 The requested resource (/examples/servlet/HelloWorldServlet) is not available. ーーーーーーーーーーーーーーーーーーーーーーーーーーー
- 締切済み
- ハードウェア・サーバー
- 作成したサーブレットが表示されません(Tomcat使用)
はじめまして。 本を見ながらサーブレットを作成、実行したところエラーに 検索するも知識が浅いために理解できず、行き詰ってしまいました。 解決法ご存知の方おられましたら、ご教示いただけますと幸いです。 ************ (略)Tomcat 5.5\webapps\kajsp\WEB-INF\classesの直下にhello_servlet1.classを置き実行したところ、以下のエラーが… ************ HTTPステータス 404 - /kajsp/hello_servlet1 ------------ ステータスレポート /kajsp/hello_servlet1 The requested resource (/kajsp/hello_servlet1) is not available. ------------ Apache Tomcat/5.5.20 ************ web.xmlファイルは以下のとおりです。WEB-INF直下に置きました。 ************ <?xml version="1.0" encoding="Windows-31J"?> <servlet> <servlet-name>hello_servlet1</servlet-name> <servlet-class>hello_servlet1</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello_servlet1</servlet-name> <url-pattern>hello_servlet1</url-pattern> </servlet-mapping> ************ http://localhost:8080/ は見る事ができるのですが、 http://localhost:8080/kajsp/hello_servlet1 ではエラーが出ます。 ************ 環境は Windows XP Home(SP2) JDK JRE:1.5.0_09 Tomcat:5.5 です。 初歩的な質問で申し訳ありませんが、よろしくお願い致します。
- ベストアンサー
- Java
お礼
ありがとうございます。 なんだか一筋縄ではいかないような印象ですね(^^; Javaプログラミングを始めたばかりなので、いろいろと試行錯誤してみます。