• 締切済み

Apache2+JK2でjniを使用するとサーバーエラー(500)

Tomcat4.1.24+Apache2+JK2を使ってPort 80でも JSP/Servletにアクセス出来るようにはなったのです が、JNIを使った通信がなかなかうまくいきません。例 えば、http://localhost/roller/にアクセスすると、 500 Internal Server Errorが返ってきます。どのよう にしたら解決できるのでしょうか?お願いします。 #workers2.properties [channel.jni:jni] [config:] TOMCAT_HOME=C:/Program Files/Apache Group/Tomcat 4.1 # Java バーチャルマシンのパラメータの定義 [vm:] info=Parameters used to load a JVM in the server process OPT=-Djava.class.path=${TOMCAT_HOME}/lib/tomcat-jni.jar;${TOMCAT_HOME}/lib/tomcat.jar OPT=-Dtomcat.home=${TOMCAT_HOME} OPT=-Dcatalina.home=${TOMCAT_HOME} OPT=-Xmx128M # JNI ワーカの起動時ハンドラ [worker.jni:onStartup] info=Command to be executed by the VM on startup. This one will start tomcat. class=org/apache/jk/apr/TomcatStarter ARG=start stdout=${serverRoot}/logs/stdout.log stderr=${serverRoot}/logs/stderr.log # JNI ワーカの終了時ハンドラ [worker.jni:onShutdown] info=Command to be executed by the VM on shutdown. This one will stop tomcat. class=org/apache/jk/apr/TomcatStarter ARG=stop # Tomcat の examples Web アプリケーションを Web サーバ URI 空間にマップ(関連付け) [uri:/examples/*] [uri:/roller/*] ====Apacheのerror.log========== [[Tue Jul 22 16:02:32 2003] [error] mod_jk.handler() Error connecting to tomcat 120000

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

みんなの回答

回答No.1

(1) -Djava.class.pathは ${TOMCAT_HOME}/bin/tomcat-jni.jar;${TOMCAT_HOME}/server/lib/commons-logging.jar で試してみて下さい。(ファイルの存在を確認して下さい) (2) jk2.propertiesに以下の2行が必要です。 channelJni.disabled = 0 apr.jniModeSo=inprocess (3) Apache起動時、Tomcatが起動完了するまでに結構時間がかかると思います。stderr.logの最終行が 2003/07/22 19:33:03 org.apache.jk.server.JkMain start 情報: Jk running ID=0 time=0/490 config=~ のようになってからアクセスしてみて下さい。

northcurlcurl
質問者

補足

FlossenEngel様、アドバイスありがとうございました。 どやらTomcatにアクセスする事は出来る様になったので すが、今度は更に難解そうな問題に直面しています。 http://localhost/aloha/というページにアクセスした ところ、stderr.logに次のようなエラーが出てきまし た。 java.io.IOException: CreateProcess: javac.exe -classpath "C:\Program Files\Apache Group\Tomcat 4.1\bin\tomcat-jni.jar;C:\Program Files\Apache Group\Tomcat 4.1\server\lib\commons-logging.jar;D:\Study\Programming\Java\TomcatExamples\aloha project\aloha 0.4\WEB-INF\classes;D:\Study\Programming\Java\TomcatExamples\aloha project\aloha 0.4\WEB-INF\lib\commons-beanutils.jar;D:\Study\Programming\Java\TomcatExamples\aloha project\aloha 0.4\WEB-INF\lib\commons-collections.jar;D:\Study\Programming\Java\TomcatExamples\aloha project\aloha 0.4\WEB-INF\lib\commons-dbcp.jar;D:\Study\Programming\Java\TomcatExamples\aloha project\aloha 0.4\WEB-INF\lib\commons-digester.jar;D:\Study\Programming\Java\TomcatExamples\aloha project\aloha 0.4\WEB-INF\lib\commons-logging.jar;D:\Study\Programming\Java\TomcatExamples\aloha project\aloha 0.4\WEB-INF\lib\commons-pool.jar;D:\Study\Programming\Java\TomcatExamples\aloha project\aloha 0.4\WEB-INF\lib\crimson.jar;D:\Study\Programming\Java\TomcatExamples\aloha project\aloha 0.4\WEB-INF\lib\jaxp.jar;D:\Study\Program? Googleで検索してみたところ、どうやらclasspathのパ ラメータが長すぎるようなのです。こんなことはTomcat に直接Port 8080でアクセスしていた時は起きませんで した。どのようにすればこの問題を回避することが出来 るのでしょうか?もしご存知でしたら再度アドバイスを お願いします。

関連するQ&A

  • mod_jkがうまく動かない

    mod_jk がうまく動かずに困っています。 Apache : 2.0.53 Tomcat : 4.1.31 mod_jk : jk1.2 Tomcat単体(8080接続)では問題なく動きます。 mod_jkの設定は以前4.1.12を構築したのを真似して作りました。 LoadModule jk_module modules/mod_jk.so <IfModule mod_jk.c> JkWorkersFile /usr/local/tomcat/conf/workers.properties JkLogFile /usr/local/apache2/logs/mod_jk.log JkLogLevel debug JkMount /*.jsp ajp13 JkMount /examples/servlet/* ajp13 </IfModule> Alias /examples "/usr/local/tomcat/webapps/examples" <Location "/examples/"> Options Indexes FollowSymLinks MultiViews </Location> <Location "/examples/WEB-INF/"> AllowOverride None deny from all </Location> mod_jk.log に下記表示され、Internal Server Error になってしまいます。 [jk_uri_worker_map.c (445)]: Into jk_uri_worker_map_t::map_uri_to_worker [jk_uri_worker_map.c (459)]: Attempting to map URI '/examples/servlet/HelloWorldExample' [jk_uri_worker_map.c (483)]: jk_uri_worker_map_t::map_uri_to_worker, Found a context match ajp13 -> /examples/servlet/ [mod_jk.c (1683)]: Into handler r->proxyreq=0 r->handler=jakarta-servlet r->notes=1213808 worker=ajp13 [jk_worker.c (90)]: Into wc_get_worker_for_name ajp13 [jk_worker.c (94)]: wc_get_worker_for_name, done did not find a worker 「not find a worker」というのが何を指しているかわかりますか? 他、確認すべき場所等ありましたら連絡ください。

  • Tomcat5.5.23とApache2.2.4とmod_jk

    似た質問が過去にあったのですが上手く出来なかったので質問させて頂きます。 環境は OS:Solaris9 Apache:2.2.4 Tomcat:5.5.23 mod_jk:1.2.21 Apache単体では http://localhost It worksと表示され問題ないと思います。 Tomcat単体では http://localhost:8080 トップページ表示され問題ないと思います。 http://localhost:8080/jsp-examples/ ではJSP Sampleページが出力され、連携出来ていると他サイトで書かれておりましたので問題ないと思います。 問題の http://192.168.10.25:8080/servlets-examples/ でHTTP Status 404 が出力されて表示できません。 [Apacheのhttp.confに以下を付け足しました] LoadModule jk_module modules/mod_jk.so <IfModule mod_jk.c> JkWorkersFile /usr/local/apache/conf/workers.properties JkLogFile /usr/local/apache/logs/mod_jk.log JkLogLevel warn JkMount /jsp-examples/* worker1 JkMount /servlets-examples/* worker1 </IfModule> [workers.propertiesファイルを作成しました] worker.list=worker1 worker.worker1.type=ajp13 worker.worker1.host=localhost worker.worker1.port=8009 worker.worker1.lbfactor=50 わかる方がおりましたらご指導下さい。 よろしくお願い致します。

  • apacheとサーバについて

    apacheとtomcat、サーバ接続についてくわしいかたお願いします。 環境: Windows vista Apache2.0.61 Tomcat5.5.25 で tomcatとapacheは単独でうごきますし、 mod_jkを使い、apacheとtomcatを連携させました。 その際のhttpd.confには以下を追記しました。 末尾 <IfModule mod_jk.c> JkWorkersFile "C:\Program Files\Apache Group\Apache2\conf\workers.properties" JkLogFile logs\mod_jk.log JkLogLevel warn JkMount /*.jsp worker1   →(1) JkMount /servlet/* worker1     →(2) JkMount /examples/* worker1    →(3) JkMount /tomcat-docs/* worker1   →(4) </IfModule> において(4)は自分で作成(追加)しhttp://localhost/tomcat-docs/でみることができました。 しかし(3)においてはexampleに対応するファイルがtomcatに入ってなかったため、見れないのはわかります。 ここで(1)ですがこれはjspファイルを見れるようにするという意味ですよね? ということは もし、自分で○×.jspというファイルをlocalhostで見たい場合は httpd.confに JkMount /○×/* worker1と追加すればみれるということでしょうか? 追記して確認したところwebページがみつかりませんとの表示があります。 また、localhostでなく外部から○×.jspに接続されることを考えた場合、http://localhost/○×.jsp/のlocalhostに自分のIPアドレスを入れてあげれば外部からもみることができますよね? 質問ばかり&拙い文章ですいません。 なお○×.jspは C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\rootsの直下に入っています。 httpd.confと、サーバ接続の編集があいまいになっています。

  • Apacheとtomcatの連携で発生するエラー

    いつもお世話になっております。 Apacheとtomcatの連携を行っているのですが、 以下の手順を実施後にmod_jk.logを確認すると以下のエラーが発生します。 解決方法が分かりませんので、ご存知の方がおられましたら 解決方法を教えて頂けますでしょうか。 【mod_jk.logの内容】 [Thu Mar 24 20:20:03 2011] [13241:3086329616] [error] init_jk::mod_jk.c (2781): Initializing shm:/etc/httpd/logs/jk-runtime-status.13241 errno=13. Load balancing workers will not function properly. [Thu Mar 24 20:20:03 2011] [13241:3086329616] [info] init_jk::mod_jk.c (2825): mod_jk/1.2.26 initialized [Thu Mar 24 20:20:03 2011] [13242:3086329616] [error] init_jk::mod_jk.c (2781): Initializing shm:/etc/httpd/logs/jk-runtime-status.13242 errno=13. Load balancing workers will not function properly. [Thu Mar 24 20:20:03 2011] [13242:3086329616] [info] init_jk::mod_jk.c (2825): mod_jk/1.2.26 initialized 【手順】 1)CentOS release 5.5にTomact(4.1.30)をインストール 2)tomcat-connectors-1.2.26-srcをインストール 3)/etc/httpd/conf.d/に以下のファイルを作成  a)workers.properties   (内容)   worker.list=worker_xxx   worker.worker_xxx_1.type=ajp13   worker.worker_xxx_1.host=localhost   worker.worker_xxx_1.port=8009   worker.worker_xxx.type=lb   worker.worker_xxx.balance_workers=worker_xxx_1  b)jk.conf   LoadModule jk_module modules/mod_jk.so   JkWorkersFile /etc/httpd/conf.d/workers.properties   JkLogFile /var/log/httpd/mod_jk.log   JkLogLevel info   JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "   JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories   JkRequestLogFormat "%w %V %T"   JkMount /xxx* worker_xxx 4)/etc/init.d/tomcat4 start 5)/etc/init.d/httpd start (補足) ・OS:CentOS release 5.5 ・apache:Apache/2.2.3 以上です。 よろしくお願いいたします。

  • apacheとtomcatの連携

    運用中にApacheとTomcatの連携が出来なくなり、ApacheからTomcatにアクセス出来なくなります。 ApacheとTomcatを再起動すると、またいつも通りにアクセスが出来るようになります。 環境は以下の通りです。 OS:Red Hat Enterprise Linux 3 Java:j2sdk-1_4_2_08 Apache:httpd-2.0.54 Tomcat:jakarta-tomcat-5.0.28 アクセスが出来なくなった時のApacheのエラーログには 下記のように表示されます。 [notice] Apache/2.0.54 (Unix) mod_jk2/2.0.4 configured -- resuming normal operations [error] channelApr.open() attempt to connect to 10.1.1.55:8009 (10.1.1.55) failed 111 [error] ajp13.connect() failed ajp13:localhost:8009 [error] ajp13.service() failed to connect endpoint errno=9 Bad file descriptor [error] ajp13.service() Error forwarding ajp13:localhost:8009 1 1 [error] lb.service() worker failed 120000 for ajp13:localhost:8009 [error] lb_worker.service() all workers in error or disabled state [error] mod_jk2.handler() Error connecting to tomcat 120000, status 503 エラーログを調べたのですが、SELinuxがONになっているとアクセスが出来なく なったりするみたいですが、SELinuxはインストールされていません。 もし、解る方がいらっしゃいましたらすいませんが、よろしくお願い致します。

  • Apache1.3.27とTomcat4.0.6LEの連携

    Apache1.3.27とTomcat4.0.6LEの連携 お世話になります。 Windows XP SP3でApache1.3.27とTomcat4.0.6LEを連携しようとしています。 1.mod_jk.soをmoduleへ配置 2.apacheのconfフォルダにmod_jk.confファイルを作成 ↓内容 LoadModule jk_module modules/mod_jk.so <IfModule mod_jk.c> JkWorkersFile "【Apacheインストールフォルダ】/conf/workers.properties" JkLogFile logs/mod_jk.log/ JkLogLevel warn JkMount /*.jsp worker1 JkMount /servlet/* worker1 JkMount /examples/* worker1 </IfModule> 3.apacheのconfフォルダのhttpd.confの最後に以下を追加記述 Include "【Apacheインストールフォルダ】/conf/mod_jk.conf" 4.apacheのconfフォルダにworkers.propertiesを作成し以下を記述 worker.list=worker1 worker.worker1.port=8009 worker.worker1.host=localhost worker.worker1.type=ajp13 worker.worker1.lbfactor=1 5.Tomcatを起動しApacheを起動するとDosプロンプトにて The Apache service has already been started. Note the error or messages above, and press the <ESC> key to exit. ・・・ と表示され起動できません。 apacheに対して適切なコネクタのバージョンやその設定方法等を知っている方、 何卒ご教示お願いします。

  • apache tomcatの連携でのエラーメッセージ

    こんにちは、いつもお世話になっております。 「tomcat apache の連携ができていないのでしょうか」 という質問(受付中)をしているものです。 tomcat apache の連携で試行錯誤していたら 新たに疑問が出てきたので質問させていただきます。 APACHE_HOME/modulesにmod_jk2.soを配置し APACHE_HOME/conf\httpd.confの最後の行に 「LoadModule jk2_module modules/mod_jk2.so」 と記述する。 そしてapacheを起動すると以下のようなエラーが出ます。 「Syntax error on line "LoadModuleを記述した行番号" of APACHE_HOME/conf/httpd.conf: Cannot load APACHE_HOME/modules/mod_jk2.so into server: ....」 原因は何なのでしょうか、どなたか教えていただけないでしょうか よろしくお願いします。

  • Apache-Tomcatを連携させる方法

    Tomcat4.1.30とApache2.0.55の連携についての質問になります。 連携させたいのですがどうしても上手くいきません。 環境 OS:Red Hat Enterprise Linux 5 Tomcat:Ver4.1.30 Apache:Ver2.0.55 JAVA :Ver1.4.2.10 になります。 不足情報がありましたら追記しますので仰ってください。 環境作成 1.Apache、Java、Tomcatをインストールしました  (1)Apacheインストール手順  # tar zxvf httpd-2.0.55.tar.tar  # cd httpd-2.0.55  # ./configure --enable-module=so --prefix=/usr/local/apache  # make  # make install  (2)Javaインストール手順  # sh j2sdk-1_4_2_10-linux-i586-rpm.bin  # rpm –ivh j2sdk-1_4_2_10- fcs-linux-i586.rpm  (3)Tomcatインストール手順  # tar zxvf jakarta-tomcat-4.1.31.tar.gz 2.次にApache-tomcatを連携させるmod_jkをコンパイルしました  (1)手順  # tar zxvf jakarta-tomcat-connectors-current-src.tar.gz  # sh buildconf.sh  # ./configure --with-apxs=/usr/local/apache/bin/apxs --with-tomcat41=/usr/local/tomcat --with-java-home=/usr/java/j2sdk1.4.2_10  # make 3.apacheの設定にmod_jkを認識させるため下記ファイルを編集しました。  (1)httpd.confに以下内容を追記  途中に追記  # LoadModule jk_module module /mod_jk.so  # <IfModule mod_jk.c> #  JkWorkersFile conf/workers.properties  #  JkLogFile logs/mod_jk.log  #  JkLogLevel warn  #  JkMount /examples/* ajp13  #</IfModule>  最終行に追記  #  Alias /examples "/usr/local/tomcat/webapps/examples"  #  <Location "/examples/">  #   Options Indexes FollowSymLinks  #  </Location>  #  <Location "/examples/WEB-INF/">  #   AllowOverride None deny from all  #  </Location>  (2)workers.propertiesに以下内容を編集・追記  編集  #  worker.list=ajp13  # worker.ajp13.port=8009  # worker.ajp13.host=localhost  # worker.ajp13.type=ajp13      最終行に追記  #  [uri:/aquatech/servlet/*]  # [uri:/aquatech/*.jsp]   上記内容のように変更致しました。 以前作成したサーバは、これだけの手順でTomcatとApacheの連携はできています。 しかし、今回のサーバはなぜかエラーが発生しました。 エラーログ /usr/local/apache/logs/mod_jk.logより抜粋 [Fri Feb 06 18:09:47 2009] [error] ajp_validate::jk_ajp_common.c (1815): can't resolve tomcat address localhost [Fri Feb 06 18:09:47 2009] [error] ajp_validate::jk_ajp_common.c (1818): invalid host andport localhost 8009 [Fri Feb 06 18:09:47 2009] [error] wc_create_worker::jk_worker.c (158): validate failed for ajp13 [Fri Feb 06 18:09:47 2009] [error] build_worker_map::jk_worker.c (256): failed to create worker ajp13 これにより、ポート8080接続(http://localhost:8080/examples/index.jsp)は表示されますが、 80接続(http://localhost/examples/index.jsp)では、500 Internal Server Errorの画面が表示されます。 3.(1)に追記した、mod_jk.soのLoadModule郡を全てコメントにすると、 エラーログは発生されず、80接続(http://localhost/examples/index.jsp)を表示すると、 jspファイルのソース中身が丸出しになった状態で表示されました。 また、http://localhost/examplesへ移動すると、 tomcatのwebappsの中にあるexamplesディレクトリ構造が表示されてしまいました。 tomcatもapacheも起動はしていますが、mod_jk.soの認識がされてないと 考えているのですが、結局解決策が全くわからない状態です。 どなたか、ご教示願いますでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Java
  • TomcatとApacheの連携

    TomcatとApacheの連携がうまくいかないので質問させてもらいました。 環境:Tomcat4.0.3 Apache1.3 jsdk1.4.0 windows ME ディレクトリ構成: C:\Program Files\Apache Tomcat 4.0 C:\Apache C:\j2sdk1.4.0 実行した手順としては、mod_jk_1.3.28.dllをC:\Apache\modules にコピーし 下記の設定を実施。 C:\Apache\conf\mod_jk.conf C:\Program Files\Apache Tomcat 4.0\conf\workers.properties modjk_confの内容: LoadModule jk_module modules/mod_jk_1.3.28.dll AddModule mod_jk.c JkWorkersFile C:/Program Files/Apache Tomcat 4.0/conf/workers.properties JkLogFile C:/Program Files/Apache Tomcat 4.0/logs/mod_jk.log JkLogLevel error JkOptions +ForwardKeySize JkMount /examples/* ajp13 JkMount /examples ajp13 JkMount /admin/* ajp13 JkMount /admin ajp13 JkMount /manager/* ajp13 JkMount /manager ajp13 workers.propertiesの内容: worker.list=ajp13 worker.ajp13.port=8009 worker.ajp13.host=localhost worker.ajp13.type=ajp13 C:\Apache\conf\httpd.confの一番下の行にC:\Apache\conf\httpd.confを追加。 Tomcat起動、Apache起動をすると下記のエラーメッセ-ジが出力されます。 Syntax error on line 2 of c:/apache/conf/mod_jk.conf: Cannot load c:/apache/modules/mod_jk_1.3.28.dll into server: (31) システムに接続 されたデバイスが機能していません。というエラーが表示されています。 どこか設定でおかしいところがあるのでしょうか困っているのでぜひお願いします。

    • ベストアンサー
    • Java
  • Tomcat5.0.30とApache2.2.3の連携方法について

    Tomcat5.0.30とApache2.2.3を入れて、連携させたいのですがどうしても上手くいきません。 環境は OS:Windows XP Tomcat:Ver5.0.30 Apache:Ver2.2.3 です。 不足情報がありましたら仰って下さい。 Tomcat単体では左上にマークとVerが表示され、Apache単体ではIt works!と表示されます。 http://archive.apache.org/dist/tomcat/tomcat-4/archive/v4.0.1/bin/win32/webapp-module-1.0-tc40-windows.zip 上記URLからwebappをDLして、Apacheのmodulesフォルダに入れて、httpd.confの最後に " LoadModule webapp_module modules/mod_webapp.so WebAppConnection conn warp localhost:8080 WebAppDeploy examples conn /examples " の3行を追加してみたのですが上手くいかず http://www.apache.org/dist/tomcat/tomcat-connectors/jk2/binaries/win32/jakarta-tomcat-connectors-jk2.0.4-win32-apache2.0.49.zip こちらからmod_jk2.soをDLして入れ、workers2.propertiesファイルを新規製作し " [status:] [uri:/jkstatus/*] group=status: [shm:] disabled=1 [channel.socket:] [ajp13:] [uri:/servlets-examples/*] [uri:/examples/*] " とし、Apache/confフォルダに入れてみたのですが連携できていません。 httpd.confには LoadModule jk2_module modules/mod_jk2.so を最後に追加しました。 一応、ファイルを追加したり修正したりしたときは、Tomcat/Apache共に再起動をさせています。 どうしたらいいのでしょうか? また、httpd.confに行を追加するときは最初に"#"をつけているのですが、その他のファイルにもつけなくてはいけないのでしょうか? 教えていただけないでしょうか。 宜しくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう