- ベストアンサー
サーブレットのクラスパス追加について
Tomcatを用いたWebアプリケーション作成についてご質問させてください。 Webアプリケーション実行時に読み込まれるクラスパスを任意に追加することは可能でしょうか。標準では{CONTEXT_ROOT}/WEB-INF/classesと{CONTEXT_ROOT}/WEB-INF/libにあるクラスがサーブレット上で実行されるクラスとして読み込まれますよね。これ以外に任意のディレクトリをクラスパスとして追加し、そのディレクトリにあるクラスをサーブレット上で実行したいのですが、可能でしょうか。 環境変数にクラスパスを設定してみたり、{TOMCAT_HOME}/bin/setclaspass.shにクラスパスを追加してみたりもしたのですが、結果は両方ともNoClassFoundExceptionでした。 ご教示お願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
一般的にアプリケーションサーバでは、アプリケーションサーバ自体が使用するクラスローダと、Webアプリケーションが使用するクラスローダを明確に分けている場合が多いです。 また、アプリケーションサーバ起動時に指定するclasspath指定はアプリケーションサーバ自体が使用するクラスへのパスを指定するのが普通です。 Tomcatでは、複数のWebアプリケーション間で共通で使用するクラスの格納先が指定されているようです。ただし、Tomcat3.x系と、4.x系以上とでは違いがあるようです。 詳しくは、以下のドキュメントを参考にしてください。 Tomcat3.x系 http://jakarta.apache.org/tomcat/tomcat-3.3-doc/tomcat-ug.html#configuring_classes Tomcat4.x系 http://jakarta.apache.org/tomcat/tomcat-4.1-doc/class-loader-howto.html Tomcat5.x系 http://jakarta.apache.org/tomcat/tomcat-5.0-doc/class-loader-howto.html
その他の回答 (3)
- pcbeginner
- ベストアンサー率46% (261/560)
#2です。 失礼しました。 >TOMCAT_HOME}/bin/setclaspass.shにクラスパスを追加… 自分の回答は↑の部分に思いっきり書いてありましたね。 熟読せずに回答してしまい申し訳ありませんでした。 m(_ _)m
お礼
ご回答いただきありがとうございます。Tomcatを起動する為のシェルスクリプトにはクラスパスを指定したのですけどダメでした。もうちょっと色々がんばってみようと思います。
- pcbeginner
- ベストアンサー率46% (261/560)
(Tomcatの起動についてそこまで詳しくないので、憶測です。) Tomcatを起動するときにJavaVMを起動しているはずなので、そのsh?ファイルか何かで java -cp ~ とか jre -cp ~ とかやってるとしたらそこにクラスパスを付け加えてみては? (って憶測ですので、そんなshファイルないかもです。)
- tachiwa
- ベストアンサー率34% (25/73)
私は {JAVA_HOME}/jre/lib/ext ディレクトリにclassファイルをjarにまとめて貼り付けています。
お礼
ご回答いただきありがとうございます。ご提示いただいた方法を試してみたいと思います。
お礼
ご回答ありがとうございます。ご提示いただいたURLで調べてみようと思います。