こんにちは、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 プラグインをインストールします。

Tools > Plugins を選択します。

20150513_netbeans_001tomcat か Java EE Base を検索し、インストールします。

20150513_netbeans_002依存でインストールされるプラグインを確認し、次へ進みます。

20150513_netbeans_003Netbeans IDE をすぐに再起動するかどうかを選択し、完了します。

20150513_netbeans_004これで、プロジェクト作成時に Web Application が選択できるようになります。

20150513_netbeans-tomcat_005

つまづいたところ (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

20150513_tomcat_001

対処

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監視についてメモをまとめるつもりです。いつになるやら?がんばります!

元記事はこちら

[初メモ] はじめての Tomcat 〜 つまづいたところまとめ (Java のバージョン指定、起動パラメータ など)