NetBeans6.1からTomcat6.0.16を呼び出すと「JSPのクラスをコンパイルできません」と怒られる
NetBeansを使い、設定しているTomcatでJSPを実行しようとすると以下のエラーがでた。
org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: An error occurred at line: 22 in the generated java file The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory Stacktrace: org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:423) org.apache.jasper.compiler.Compiler.compile(Compiler.java:316) org.apache.jasper.compiler.Compiler.compile(Compiler.java:294) org.apache.jasper.compiler.Compiler.compile(Compiler.java:281) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
JSPのクラスをコンパイルできません(長文です)を見る限り、Tomcatのプラグインとかは、独自にTomcatを起動させるので、tools.jarへのパスが通らないらしい。
そこで、Tomcatのlibフォルダにtools.jarを入れて、NetBeansのツール>サーバからクラスを確認すると一覧にtools.jarが表示されていた。だが失敗。
VMの引数に「-classpath C:\Program Files\Java\jdk1.6.0_06\lib」とかやっても失敗。
GlassFishで動かしてみると成功。
どういうこっちゃ。
Tomcat 6.0.16ことはじめ
Servlet2.5とJSP2.1に対応。JavaEE5準拠。
フォルダ構成 /bin・・・実行ファイル。bootstrap.jar、tomcat-juli.jarもあった。 /conf・・・設定ファイル。 catalina.policy・・・Java SecurityManagerによって実装されているセキュリティポリシーを設定する場所らしい catalina.properties・・・システムプロパティ設定ファイル?shared.loader、common.loader、server.loaderなどを指定することもできる。Tomcat5のsharedやcommonやserverといったフォルダはなくなっている。 context.xml・・・このファイルのコンテンツはWebアプリケーション毎に読み込まれる logging.properties・・・ログの設定 server.xml・・・Tomcatの設定 /lib・・・ライブラリファイル /logs・・・ログフォルダ /temp・・・一時フォルダ /webapps・・・Webアプリケーション置き場 ROOT・・・ manager・・・ host-manager・・・ examples・・・ docs・・・ /work
Tomcat5.5で全アプリに適用されるFilterを作ってみる
全アプリケーションで共通のFilterを作る。これはサーバ全体で同じFilterが動作するということになる。
Tomcatのクラスローダなどがでてきて結構大変だった。
Filterを作る
これは普通に作ればいい。javax.servlet.Filterをextendsして作った。
public class CommonFilter implements Filter {
public void destroy() {
// TODO 自動生成されたメソッド・スタブ
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
System.out.println(“[DEBUG]doFilter start”);
System.out.println(“[DEBUG]doFilter execute”);
System.out.println(“[DEBUG]doFilter end”);
arg2.doFilter(arg0, arg1);
}
public void init(FilterConfig arg0) throws ServletException {
System.out.println(“[DEBUG]doFilter init ” + arg0.getServletContext().getServletContextName());
}
} web.xmlに定義する
TOMCAT_HOME/conf/web.xmlにアプリケーション全体で使われるサーブレットやFilterの定義ができる。ssiのFilter近くに以下の記述を追加。
<filter>
<filter-name>CommonFilter</filter-name>
<filter-class>
testapp.CommonFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>CommonFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> jarファイルを配置する
TOMCAT_HOME/common/libに入れたら動く。
common/libに配置した場合
正常に起動した。
//stdout.log
[DEBUG]doFilter init Tomcat Manager Application
[DEBUG]doFilter init Tomcat Manager Application
[DEBUG]doFilter [...]
Tomcat5.5のログ
TOMCAT_HOME/logs
TOMCAT_HOME/logsに出力されるログを見てみると
admin.2007-12-11.log catalina.2007-12-11.log host-manager.2007-12-11.log jakarta_service_20071211.log localhost.2007-12-11.log manager.2007-12-11.log stderr_20071211.log stdout_20071211.log
が出力されることがわかった。そのたアクセスログも出せるみたい。
catalina、admin、localhost、manager、host-managerの設定はTOMCAT_HOME/conf/logging.propertiesに書かれている。
ログの種類 ログ 設定箇所 説明 admin.log conf/logging.properties Tomcat Web Server Administration Toolのログ catalina.log conf/logging.properties サーバの起動、停止、サービスの開始、停止情報 host-manager.log conf/logging.properties Tomcat Host Manager Web Appのログ jakarta_service.log なし サービスのログ localhost.log conf/logging.properties host(VirtualHostのようなもの)に限定したログ manager.log conf/logging.properties Tomcat Manager Web Appのログ stderr.log なし 標準エラー出力 stdout.log なし 標準出力
Tomcat5.5のAdministration Web Application
TomcatにはTomcat管理用Webアプリケーションを追加でインストールすることができる。
インストール
TomcatのダウンロードページからBinary Distributions>Administration Web ApplicationのZIPファイルをダウンロード。
解凍すると、「conf」「server」というフォルダがあるので、そのままTOMCAT_HOMEにコピーしてTomcatを再起動する。
Webアプリケーションの確認
「http://localhost:port/」にアクセスして、左メニューの「Tomcat Administration」をクリックする。するとログイン画面が表示されるので、インストール時に設定したユーザとパスワードでアクセスすればOK。
インストールされていないと、Tomcat Administrationをクリックしても
Tomcat’s administration web application is no longer installed by default. Download and install the “admin” package to use it.
と表示される。
画面キャプチャ
こんなかんじ
送信者 フジハラボ
Tomcat5.5メモ
The Apache Tomcat 5.5 Servlet/JSP Container The Apache Tomcat 5.5 Servlet/JSP Container(ja) 要件 J2EE1.4
Servlet2.4 JSP2.0 J2SE1.4以上 ライブラリ /common/lib/servlet-api.jar フォルダ構成 bin バイナリファイル置き場。Tomcatの起動停止などを行うための実行ファイルがある。 conf 設定ファイル置き場。 conf/server.xml Tomcatのメイン設定ファイル。 conf/web.xml サーバ全体で使われるweb.xml。 conf/logging.properties ログ設定。 conf/tomcat-users.xml Tomcatサーバで使われるユーザとロールの設定。 shared WEBアプリケーション全体で共通使用するクラスファイルやJARファイルを置く。JSFのLibなどを入れるとLoggingパッケージが競合?してしまうみたいなので注意。 server Tomcatで使用するクラスを配置する。読み込ませるには「servlets-」や「tomcat-」といったプレフィックスが必要? common commonフォルダにはTomcatとWebアプリケーションの両方が使用するクラスファイルやJARファイルを置く。 webappsフォルダ Warなどを置くフォルダ logs デフォルトのログフォルダ
Apache2.0.55とTomcatの連動
TomcatのWebサーバとしてApacheを利用するにはモジュールを組み込み、設定を行わなければならない。モジュールには「mod_jk」や「mod_jk2」などがある。
仕組み
連携時の動きは以下のようになる。
ユーザがあるアドレスにアクセス。普通ポートは80番。 80番で待ち受けていたapacheは、まずそのアドレスがconf/workers2.propertiesのなかで設定されているアドレスと一致するか調べる。一致していたら処理をtomcatに渡し、一致していなかったらapacheだけで処理する。 apacheがtomcatに処理を渡した場合は、tomcatはそのアドレスがconf/web.xmlや、webapps以下のフォルダのWEB-INF/web.xmlを調べて、一致するものを探す。一致したら、指定してあるservletを実行する。
つまり、サーブレットを動かしたい場合は、動かしたいファイルがおいてあるフォルダのweb.xmlに、servletのクラス名とアクセスのされ
る呼び出し名の組を書きこんでおき、さらにその呼び出し名をworkers2.propertiesに設定するという感じとなる。
くわしくはjk2などのドキュメントがjakartaで翻訳されているのでそちらを。
手順 mod_jkの場合
Apache.orgのダウンロードページを表示する。
「JK 1.2 Binary Releases」からmod_jkをダウンロードする。
Apache2をインストールしたディレクトリにある「modules」フォルダに「mod_jk-apache-2.0.XX.so」をコピーする。
コピーした.soファイルを「mod_jk.so」にリネームする。
他の解説サイトでは「.dll」などになっている場合もあるが、Linux用のモジュールファイルである「.so」拡張子になっていても気にしなくていい。
httpd.confにコピーしたモジュールの設定を記述する。
LoadModule jk_module modules/mod_jk.so Apache2.0.55とTomcat5.5の連携ではmod_jkは使えない模様。 httpd.confの最終行に記述しないと動かないApacheもあるらしい mod_jk2の場合
Apache.orgのダウンロードページを表示する。
「JK 2 Binary Releases」からmod_jkをダウンロードする。
Apache2をインストールしたディレクトリにある「modules」フォルダに「mod_jk2.so」をコピーする。
httpd.confにコピーしたモジュールの設定を記述する。
LoadModule jk2_module modules/mod_jk2.so httpd.confの最終行に記述しないと動かないApacheもあるらしい workers2.properties
workers2.propertiesを作成し、Apache2の「conf」フォルダに配置する。
// workers2.properties
[status:]
[uri:/jkstatus/*]
group=status:
[shm:]
disabled=1
[channel.socket:localhost:8009]
[ajp13:]
[uri:/servlets-examples/*] 確認
Tomcat > Apacheの順番で起動する。
ApacheのHTTPポートが80の場合、以下のアドレスにブラウザよりアクセスする。
http://localhost:80/servlets-examples/
これでTomcat内のWebアプリである「servlets-examples」が表示されればOK。ApacheのポートでTomcatにアクセスできることがわかるはず。
TomcatのWebサーバ機能の停止
ApacheががんばってくれるのでTomcatの8080サービスを停止する。server.xmlの以下の部分をコメント化する。
<!–<Connector port=”8080″ maxHttpHeaderSize=”8192″
maxThreads=”150″ minSpareThreads=”25″ maxSpareThreads=”75″
enableLookups=”false” redirectPort=”8443″ acceptCount=”100″
connectionTimeout=”20000″ disableUploadTimeout=”true” />–>
<!– Note : To disable connection timeouts, set connectionTimeout value
to 0 –>
僕について
Dai Fujihara
A hero can be anyone.
藤原大はマネージャでありアジャイル実践者だ。そして、プロジェクトリーダー、チェンジ・エージェント、アジャイルコーチ、トレーナーでもある。彼はまたRedmine、Jenkinsといった開発を支援するツール環境の整備や、アジャイル開発を活用した創造的なソフトウェア開発の支援を行っている。さらに、趣味は沖縄離島巡りらしい。
ここ最近の人気
開発ツールを使うと「思いやり」が減る(前半) #swat… 1,018 view(s)
開発ツールを使うと「思いやり」が減る(後半) #swat… 494 view(s)
3年使ったRedmineの使い方について共有したい10の… 431 view(s)
チームとタワーを創造せよ!マシュマロチャレンジでチームビ… 315 view(s)
Javaで入力チェックに使える正規表現まとめ… 196 view(s)
Redmineプラグイン開発 – 史上最高のチームプラグ… 147 view(s)
LinkStationのようなNASを買ってもバックアッ… 120 view(s)
Redmineプラグイン開発 – パーキングロットチャー… 94 view(s)
DAOとかDTOとかVOとかEntityとか… 88 view(s)
log4j 1.2.14のAppender 86 view(s)
永久保存の本
Jonathan Rasmusson (著), 西村 直人 (翻訳), 角谷 信太郎 (翻訳)
アジャイルサムライ―それはソフトウェアを顧客に届ける猛々しきプロフェッショナルだ。本書では、圧倒的なアジャイルプロジェクトの姿を見せる。2011年爆発的にヒットしたアジャイル開発に情熱を持つエンジニアに届けたい本。
Mike Cohn (著), マイク コーン (著), 安井 力 (翻訳), 角谷 信太郎 (翻訳)
採用した現在のタイトルは、見積りや計画づくりといったプロセスを、アジャイルに進めなければならないと謳っているのだ。見積りと計画づくりがアジャイルでないのに、プロジェクトがアジャイルであるということはありえない。(イントロダクションより)
Venkat Subramaniam (著), Andy Hunt (著), 木下 史彦 (監訳), 角谷 信太郎 (監訳)
アジャイルな習慣とは一体何なのか?本書ではプラクティスを交えながら、その姿勢を読者に問いかけている。世代や役割をこえて色褪せない「アジャイル」に対する良書。Amazonレビュー
メアリー・ポッペンディーク (著), トム・ポッペンディーク (著), 高嶋 優子 (翻訳), 天野 勝 (翻訳), 平鍋 健児 (翻訳)
「トヨタ生産方式」を源流にする「リーン開発」をソフトウエア開発に取り入れるための具体的方法を紹介した本です。本書は、リーンの7大原則を「価値」「ムダ」「スピード」「人」「知識」「品質」「パートナー」に整理し、ソフト開発現場にどうしたら効果的に適用できるかを、多くの実例を交えながら具体的に説明します。
タグ
Agile ant Apache bash Eclipse GlassFish install Java Javascript kobo Linux log4j Management Maven Open Source PHP Pukiwiki Python Redmine Ruby Ruby on Rails Scrum Spring Struts Struts2 Subversion Test Tomcat Trac VBA Web WebDriver WebLogic Windows WordPress 働く 勉強会 嫁(ベータ) 思い出し笑う 我思う 旅する 映画/ドラマ 英語を話す 読むと聞く 過去を語るアーカイブ









