こんにちは、cloudpack の @dz_ こと大平かづみです。
Prologue - はじめに
前回 の過程で Zabbix で jmx監視を試したかったので、Tomcat の環境を作っています。その際につまづいたことについてのメモです。
動作環境
Webサーバー
- CentOS 6.6
- Apache Tomcat6 (6.0.24)
- Java 1.5.0 or 1.8.0
tomcat の最新バージョンは 8 ですが、諸事情により tomcat6 で環境作っています。
開発環境
- Windows Server 2012 R2
- Apache Tomcat6 (6.0.43)
- Java 1.8.0
- Netbeans 8.0.2
つまづいたところ (開発環境編)
Netbeans で Tomcat を扱いたい場合の対処
現象・原因
最近の NetBeans では、Tomcat のアプリケーションを作成するには、プラグインでインストールすることになっていました。また、Netbeans は、Windows 版も Mac 版も提供されており、どちらもこのプラグインが必要でした。
尚、Tomcat は別途インストール済みです。
対処
Tomcat アプリケーションを含む、 Java EE Base プラグインをインストールします。
tomcat か Java EE Base を検索し、インストールします。
Netbeans IDE をすぐに再起動するかどうかを選択し、完了します。
これで、プロジェクト作成時に Web Application が選択できるようになります。
つまづいたところ (Webサーバー編)
warのデプロイはできたのに動作しない場合の対処
現象
Tomcat Manager を利用して、 war をデプロイしました。ところが、デプロイ時はエラーが出ないのですが、Applications 一覧に表示されないし、URL直接指定してもエラーが発生します。
そこで、ログファイルを確認すると以下のようなエラーが出ていました。
...
SEVERE: Error deploying web application archive WebApplication1.war
java.lang.NullPointerException
at sun.reflect.annotation.AnnotationInvocationHandler.create(libgcj.so.10)
...
原因
開発環境と、Webサーバーの Java のバージョンが違いました。
Tomcat Manager を使っていれば、管理画面の下に環境が表示されます。(ぼーっと両方の管理画面眺めていたら気付きましたw)
URL: http://:8080/manager/html
対処
alternatives
というコマンドを使って java のバージョンを選択できるので、これで対応しました。
# alternatives で 利用する Java のバージョンを確認、選択
alternatives --config java
以下のように表示され、 +
が付いてる方が現在使われているバージョンです。そのままでよければ何も入力せず Enter
、変更したければその番号を入力します。
There are 2 programs which provide 'java'.
Selection Command
-----------------------------------------------
+ 1 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.45-28.b13.el6_6.x86_64/jre/bin/java
* 2 /usr/lib/jvm/jre-1.5.0-gcj/bin/java
Enter to keep the current selection[+], or type selection number:
service tomcat6 restart
で再起動すると管理画面にデプロイしたアプリケーションが表示され、アプリケーションの動作も確認できました。
ちなみに、Tomcat で利用するJavaのバージョンを指定するのは、後述する設定ファイルでも設定できるようです。( JAVA_HOME
を指定?)
javaの起動パラメータを指定したい場合の対処
現象
いろいろ調べたことを参考に、 $CATALINA_HOME/bin/setenv.sh
を作成しましたが。反映されません。
原因
どうやら、今回の環境では /etc/tomcat6/tomcat6.conf
が設定ファイルでした。
対処
tomcat6.conf
に記載し、 service tomcat6 restart
で反映されることが確認できました。
ちなみに、私の場合は jmxremote の設定をしたかったので、以下を追記しました。
# 以下を追記
JAVA_OPTS="${JAVA_OPTS} -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
Epilogue - おわりに
日進月歩ですが、実験環境ができつつあります。次は Zabbix の jmx監視についてメモをまとめるつもりです。いつになるやら?がんばります!
近況
最近
- Check! はじめての Zabbix インストール on Debian x Amazon RDS
- [初メモ] はじめての Tomcat 〜 つまづいたところまとめ (Java のバージョン指定、起動パラメータ など) ←
Phalcon関連
- 爆速フレームワーク!! Phalcon PHP Framework
- Meet Volt ! Phalcon 謹製テンプレートエンジン Volt - from 第71回 PHP勉強会
- Meet Phalcon! - Phalcon PHPフレームワークを Nginx on Amazon EC2 にインストール!
fluentd関連
- Check! はじめての fluentd を Amazon Linux で動かしてみる (ログを PHP から送る)
- Check! はじめての Fluentd 〜 IAMロールで Amazon EC2 と S3 間をセキュアに
Amazon ECS関連
- Check! Amazon EC2 Container Service で Docker を学びたい!(準備編)
- Check! Amazon EC2 Container Service で Docker を学びたい! (IAMポリシー編)
技術ブログ寄稿
cloudpack技術ブログでも、AWS Lambda や 運用ツール Serf に関して記事を書いています。ご興味あれば読んでいただけると嬉しいです!