tomcatインストール後のアプリの配置

このQ&Aのポイント
  • tomcat+Apache+cocoon でのシステムを製作中です。
  • ログイン画面での認証成功後、画面遷移が発生したときにURL部分に「null」が含まれてしまいます。
  • 原因としては、server.xmlへの追加項目やApacheのconf関連設定が考えられます。
回答を見る
  • ベストアンサー

tomcatインストール後のアプリの配置

初めて投稿させていただきます。 現在、tomcat+Apache+cocoon でのシステムを製作しています。 機能としては、ログイン画面から認証が行えた後に、サーブレットを介して別画面に移動するというもので、そのメイン画面から各機能を実現するというものです。 ログイン画面での認証成功後、画面遷移が発生したときにURL部分に「null」が含まれてしまいます。 ログイン時には <http://localhost/TEST/jsp/login.jsp> を直接指定します。 ログイン後の移動先は <http://localhost/TEST/jsp/main.jsp> としたいところが <http://localhost/null/jsp/main.jsp> となります。 tomcatでの設定内容 server.xmlへの追加項目 ------------------------------------ <Context path="TEST" docBase="TEST" debug="0" reloadable="true" crossContext="true"> <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_TEST_log." suffix=".txt" timestamp="true"/> </Context> -------------------------- 考えられるのはここらへんだと思われますが、その他にURLにnullが含まれてしまう原因はないでしょうか。 Apache のconf関連設定についても確認済みです。 同様の現象に遭われた方または解決方法を知っている方よろしくお願いいたします。 ※ここに来るまでにHP上をいろいろ検索しましたが該当するような事例が無かったため投稿させていただきました。

  • Java
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • sire
  • ベストアンサー率62% (22/35)
回答No.3

すべての環境がわかりませんので、自分だったら、、という観点で書いてみます。 C:\TEST ├WEB-INF │└classes │  └TestServ.class └jsp    └login.jsp まず、サーバサイド(localhostですが)は以上のようになっていたとします。 そしてクライアントから http://localhost/TEST/jsp/login.jsp でアクセスできるようにしたいとします。 そうするとC:\TESTフォルダが URLではhttp://localhost/TEST/に対応しないといけませんよね。この対応があるので、 http://localhost/TEST/jsp と C:\TEST\jspも同じところを指せるわけで、http://localhost/TEST/がルートになります。 その設定は <Context path="TEST" docBase="C:\TEST" ...と行います。 (そうしないとlogin.jspも見えない気がするのですが。。(別途正常なContextが作られていて運よく動いているのかなぁ)) あとmain.jspへのフォワードは上の例で言うところのTestServみたいなサーブレットが行っているんですか?

masato01
質問者

お礼

毎回丁寧な回答ありがとうございます。 main.jspへは、ご指摘の通りサーブレットにて行っています。 DocBaseにパスを記載し、tomcatの再起動を行い動作確認をしたところ正常に動作するようになりました。 詳しい説明ありがとうございました。 当方に知識が無い事が最大の弱点であったため今回の件でいろいろ勉強させてもらいました。 丁寧な回答ありがとうございました。 以上

その他の回答 (2)

  • sire
  • ベストアンサー率62% (22/35)
回答No.2

サーブレットのコードの問題ではなさそうですね。 server.xmlで docBase="TEST" となっているのが気になるのですが、これは実際のパスを設定されているんですよね。 C:\TEST 見たいに。 http://localhost/TEST/jsp/login.jspが表示されるんでしたら、問題ないとは思うのですが、念のため。 次に疑ってかかるべきはweb.xmlで <servlet-mapping> <servlet-name>サーブレットの名前</servlet-name> <url-pattern>/TEST</url-pattern> </servlet-mapping> になっているかどうかだと思います。

masato01
質問者

お礼

再度ご回答ありがとうございます。 ご指摘の箇所は、”TEST”です。 docBaseに関しては、パスを指定しなければならないのでしょうか。 パス以外での指定は不可能でしょうか? またweb.xmlにかんしては、サーブレット名称を登録していません。それでも開発環境は動作するのです。 いろいろ回答ありがとうございます。

  • sire
  • ベストアンサー率62% (22/35)
回答No.1

こうした現象は初めてみました。 Tomcat等の設定の問題も考えられますが、 サーブレットから画面遷移されているようですので、 サーブレットからフォワードするコードがおかしいことはないでしょうか?

masato01
質問者

お礼

回答ありがとうございます。 私もサーブレットからのフォワードコードを疑っていましたが、開発環境マシンでは何の問題も無く動いています。 新たにtomcat等をインストールを行ったマシンで動作がおかしくなっている状況です。 このマシンには既にtomcatがインストールされていたためおかしくなっているのでしょうか・・・。 バージョンに関しては同一のものです。 ありがとうございました。

関連するQ&A

  • Tomcat Apache 新規アプリケーションの追加

    RedHat 7.2 apache_1.3.27 tomcat-4.1.24 jakarta-tomcat-connectors-jk2-2.0.1 を使用し新規にアプリケーションを作成しようと思っているのですが 新規に作成したディレクトリを認識させることができません apache/conf/workers2.propertiesに [uri:/新規作成ディレクトリ] [uri:/新規作成ディレクトリ/*] を追加して、 servlet.xmlにも <context path="/新規作成ディレクトリ docBase="新規作成ディレクトリ" debug="0" reloadable="true"crossContext=true" > </context>と追加しました localhost/新規ディレクトリ/test.html と指定しましても web上に Https Status 404 が出てしまい、 servletやHtmlが表示されません ちなみにデフォルトのexamples/だと表示されます。 workres2.propertiesに追記するのに不足があると思い、色々と試しているのですが うまくいきません。 どなたか知恵をかして頂けないでしょうか 宜しくお願い致します。

    • ベストアンサー
    • Java
  • Tomcat 4.1.18でのWebアプリ追加方法

    お世話になります。 RedHat8.0にj2sdk1.4.0_03とtomcat-4.1.18をインストールし サンプルの動作は確認できました。 その後 server.xmlへ ------------------------------- <Context path="/ogjsp" docbase="/home/og/webapps" debug="0" reloadable="true"> </Context> ------------------------------- を追記しTomcat再起動後 http://localhost:8080/ogjsp/hello.jsp を表示させようと しましたが http 404 がでてしまいます。 試しにtomcat-4.0.6をインストールして 同じように設定したところきちんと表示されました。 tomcat-4.1.18からなにか他に設定が必要なのでしょうか? ご存知の方がいましたらよろしくお願いします。

  • TOMCATでのログ出力

    「path="/ABC"」と「path="/XYZ"」でアクセスされた際に、log4Jのファイルとして 別ファイルに出力したいです。(DailyRollingAppenderを利用) TOMCATで、同一のアプリ/同一のlog4Jの設定ファイルを 以下の様にデプロイします。Server.xmlの記述は以下の様な形です。 -------------------- Server.xmlの記述 -------------------- <Context docBase="(アプリケーション)" path="/ABC" reloadable="true" debug="0" crossContext="true"> : </Context> <Context docBase="(アプリケーション)" path="/XYZ" reloadable="true" debug="0" crossContext="true"> : </Context> log4Jの設定で、これらを出しわける事はできないでしょうか? #TOMCAT起動時に、アプリ側で「ContextPath」を取得して、log4J #のファイル名を変更する方式で実現はできそうなのすが、あまりスマートな #方式とは思えませんので。

  • ApacheとTomcat連携後DocumentRootはどう設定しますか?

    Apache,Tomcatをmod_jk2で連携できたのですが、 /usr/local/tomcat4/webapps/test/index.jsp のページをhttp://www.***.com/test/ではなく、 http://www.***.com/で表示したいのですが、 どこで設定すればよいでしょうか? 以外にこれについて書かれているサイトがなく困っています。 server.xmlに以下を書いてTomcat,Apacheを再起動しても駄目でした。 <Context path="" docBase="test" debug="0" reloadable="true"/> なので、Apacheで設定するのかと思いhttpd.confに 以下を書いてみましたが駄目でした。 <IfModule mod_alias.c> Alias / "/usr/local/tomcat4/webapps/test" <Directory "/usr/local/tomcat4/webapps/test"> Options FollowSymLinks MultiViews </Directory> 環境はRedHat9です。よろしくおねがいします。

    • ベストアンサー
    • Java
  • クラスファイルの配置について

    初めまして。 質問したいことがあります。 私の環境は OS:RedHatLinux7.2 JDK:1.3.0_02 Tomcat:ver3.2.4 です。 servletの動作について (1)tomcat/WEB-INF/test/classes/hello.class ("HelloWorld"という文字列を表示するクラス)で  アドレス→http://localhost:8080/test/servlet/helloと入力すると正常に動 作しました。 次に (2)tomcat/WEB-INF/test/classes/sample/hello.class ("HelloWorld"という文字列を表示するクラス)で  アドレス→http://localhost:8080/test/servlet/sample/helloと入力すると Error 500 Internal Servlet Errorというエラーが発生しました。 server.xmlには <Context path="/test"    docBase="webapps/test"    crossContext="false"    debug="0"    reloadable="true" > </Context> を追加しているだけなのですが、Tomcatではクラスファイルは絶対にclassesディレクトリの直下に配置しなければならないのでしょうか? (2)のclasses-sample-hello.classというように、classesディレクトリとクラスファイルの間にディレクトリが存在すると駄目なのでしょうか? もし何かわかることがありましたらご教授御願い致します。

    • ベストアンサー
    • Java
  • Tomcat4.1.31でのserver.xmlの<Context>の追加について

    環境:OS:win2k Tomcat4.1.31+j2sdk1.4.2_05 eclipse3.0.1 E:\eclipse_project\MyProject以下で作業しています。 参考書籍:JavaWebプログラミング徹底入門(技術評論社) 環境変数などの設定もすませ、http://localhost:8080/index.jspも見れて、http://localhost:8080/examples/servlet/HelloWorldExampleなどのサーブレット・jspのサンプルなども全て正常に動きます。 server.xmlの<!-- Tomcat Root Context -->のすぐ下の行に <Context path="/rucho" reloadable="true" docBase="E:/eclipse_project/MyProject" debug="0" crossContext="true"/> と追加して再起動して、サンプルのクラスをコピーしても、 正常に表示されません。http404エラーが出ます。 他のサーブレットクラスや、本のサンプルをコピーしても同様です。 また、NO,1091223の件を参考にマネージャーから パス: /rucho ディレクトリのURL:file:E:/eclipse_project/MyProject としてもだめでした。 tomcat自体を入れ直してみたりもしましたが、だめでした。 E:/eclipse_project/MyProject/jspにindex.jspを置くと問題なく表示されます。 さらに、本に付録として付いていたTomcat4.0.6を入れて、 server.xmlに全く同じContextタグを追加したら、 今度は何の問題もなく意図通りの設定が反映されて動作しました。 一体何が悪いのか、どなたご教授願えないでしょうか?

    • ベストアンサー
    • Java
  • 困ってます

    自分は今TomcatでサーブレットとJSPの勉強をしています。 サーブレット(hello.class)はTomcat-conf-server.xmlに <Context path="/test"    docBase="webapps/test" crossContext="false" debug="0" reloadable="true" > </Context> を追加したことにより http://localhost:8080/test/servlet/hello で動作は確認しました("Helloworld"の表示のみ) JSP(hello.jsp)は Error: 500 Internal Servlet Error:が表示されて実行できません。 ちなみにhello.jspはtestディレクトリの直下に保存しています。 ・hello.jspのスクリプト <%@page contentType="text/html;" %> <html> <head> <title>JSPTEST</title> </head> <body> <% out.println("HELLO WORLD!"); %> </body> </html> ※ちなみにcontentType="text/html;charset=Shift_JIS"とすると  ページが見つからないというエラーになりました。 ・JSPファイルを表示するアドレス http://localhost:8080/test/hello.jsp 開発環境は RedHatLinux7.2 Java2 SDK 1.3.0 Jakarata Tomcat 3.2.4 で、 環境変数は JAVA_HOME=/usr/java/jdk1.3.0_02 TOMCAT_HOME=/usr/src/jakarta/tomcat PATH=$PATH:$JAVA_HOME/bin:$TOMCAT_HOME/lib/servlet.jar CLASSPATH=. です 何か分かる事がありましたらご教授御願い致します。

    • ベストアンサー
    • Java
  • Apache2+Tomcatで443のみアクセスできません

    Apache2+Tomcat4.1.30で、javaの業務用アプリを動かしています。 443アクセスにしたいのですが httpd.confに記述をせず、ssl.confのみに記述をしても 80でアクセスできてしまいます。 server.xmlのHost nameに記述があることで アクセスが出来てしまっている気がするのですが どうにかして443アクセスのみにすることは出来ませんでしょうか? 下記のように記述してあります。 (ドメインはexample.comに変更してあります) ssl.conf <VirtualHost xxx.xxx.xxx.xxx:443> ServerAdmin webmaster@example.com ServerName www.example.com DocumentRoot /usr/local/example ErrorLog /var/log/httpd/www.example.com-error_log CustomLog /var/log/httpd/www.example.com-access_log common CustomLog /var/log/httpd/www.example.com-referer_log referer CustomLog /var/log/httpd/www.example.com-agent_log agent </VirtualHost> server.xml <Host name="www.example.com" debug="0" appBase="/usr/local/" unpackWARs="true" autoDeploy="true"> <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="example_log." suffix=".txt" timestamp="true"/> <Context path="" docBase="example" debug="0" reloadable="true" trusted="false" crossContext="false"> <Logger className="org.apache.catalina.logger.FileLogger" prefix="example.com_log." suffix=".txt" timestamp="true"/> </Context> </Host>

  • TomcatのJDBC連携について

    TomcatのJDBC連携について javax.servlet.ServletException: Cannot create JDBC driver of class '' for connect URL 'null' というエラーが消えず、知恵をお貸しください。 他にも同様のケースについて調べては見たのですが解決しません。 ■環境 Windows XP SP3 Eclipse3.6(Pleiades All in One 3.6.0.20100623) apache-tomcat-5.5.29 mysql-essential-5.1.48 ■設定 ■server.xml に下記を追加 <Context docBase="Test" path="/test" reloadable="true" source="org.eclipse.jst.j2ee.server:Test"> </Context> ■Tomcat 5.5/conf/Catalina/localhost/Test.xml に下記を記載 <Context docBase="${catalina.home}/server/webapps/test" privileged="true" antiResourceLocking="false" antiJARLocking="false"> <Resource name="jdbc/MySQL_JDBC" auth="Container" type="javax.sql.DataSource" factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=sjis" username="**" password="**" maxActive="20" maxIdle="30" maxWait="1800"/> </Context> ■Webアプリケーション配下の web.xmlに下記を追加 <resource-ref> <res-ref-name>jdbc/MySQL_JDBC</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> ■JSPソースに下記を記載 jdbc.jsp <% InitialContext initCon = new InitialContext(); DataSource ds = (DataSource) initCon.lookup("java:comp/env/jdbc/MySQL_JDBC"); Connection con = ds.getConnection(); Statement stmt = con.createStatement(); ResultSet result = stmt.executeQuery("select * from mytable;"); while (result.next()) { 表示処理 } con.close(); initCon.close(); %> 別途作成した下記JSPではデータ取得はできています。 <% Class.forName("com.mysql.jdbc.Driver"); Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/test?" + "user=tester&password=tester&useUnicode=true&characterEncoding=Shift_JIS"); Statement st=conn.createStatement(); ResultSet res = st.executeQuery("select * from mytable");

    • ベストアンサー
    • Java
  • tomcat5.5 全コンテキスト共有のDBCP設定方法

    こんにちは。 Tomcat5.5のDBCP設定で悩んでいます。 調べた限りだとDBCP設定は、以下のように設定すると思います。 <Context path="/DBTest" docBase="DBTest" debug="5" reloadable="true" crossContext="true"> <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true"/> </Context> ただこの設定だと、webapps配下に配置する"DBTest"のみが対象となる 設定です。webapps配下に配置する全てのコンテキスト(アプリケーシ ョン)共有のDBCP設定をするにはどうしたらいいのでしょうか? 申し訳ありませんが、ご回答よろしく御願いします。