Posts tagged ‘tomcat’

Windows Vistaのユーザーアカウント制御

Windows Vistaを使わざるをえない状況なので、ずっとVistaを使っていましたが、
不満はたくさんありました。

その不満の一つに、プログラムを「管理者として実行」しないと実行できない場合が多いというのがあります。
職業柄、普通にソフトウェアも使いますが「コマンドプロンプト」を使用してさらに別のツールを呼び出す場合が多いのです。
これが「管理者として実行」しないと呼び出せないものもあるので不満に思っていました。

「管理者として実行」すれば動くので、そういうもんなのかなと思ってずっと使っていたのですが、
ローカル環境でTomcat 5.5を動かしてみたら以下のエラーが出ました。

java.io.FileNotFoundException: C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\tomcat-users.xml.new (アクセスが拒否されました。)

なんでか調べてみたら、以下サイトを見つけました。

Tomcatのインストール

え、UACって簡単に無効に出来るの?!
Vistaのこのウザいくらいしつこく「続行するにはあなたの許可が必要です」と聞いてくるのは
ユーザーアカウント制御(UAC)というのですが、名前はなんとなく聞いたことがありました。
Tomcatのエラー原因は多分このUAC関連だと想像は出来ていたのですが、まさかこんなに簡単に無効に出来る方法だったとは。

以下、無効にする手順です。(多分管理者ユーザーじゃないとダメ)

[右下Vistaのロゴ]-[コントロールパネル]-[ユーザーアカウントと家族のための安全設定]-[ユーザーアカウント]

で、自分のユーザーアカウント変更画面が出たら
「ユーザーアカウント制御の有効化または無効化」
を選択し(ここでUACが有効である場合「続行するにはあなたの許可が必要です」と出るので続行を押す)

「ユーザーアカウント制御(UAC)を使ってコンピュータの保護に役立たせる」
チェックを外して、(OS再起動を促されるので)再起動します。

再起動後、まず前述のTomcatの起動がどうか確かめてみたらうまくいったようです。
ついでに、コマンドプロンプトで、scコマンドを打ってみたのですが、これもOK!
気になる点といえば、タスクアイコンに「Windowsセキュリティの緊急警告」で、「ユーザーアカウント制御が無効になってます」と出ること。
この警告が出ないようにすることも出来るようだけど、UAC以外の警告は出してほしいので無効にできない。

そもそも、「UACを無効にする」という考えがVistaを使い続けているうちに抜け落ちてしまっていた・・・。
最近「そもそもそういう選択肢を考えてなかった」ってのが多いです。年だな。

それにしても、「ユーザーアカウント制御」って必要なもんなのかな?Unix系OSでは当然存在している概念だと思うんだけど・・・。
XPではなかったものだけど、Windows7ではあるものなの?


サラでGalileoその3

サラでGalileoその2の続きです。

I AMの依存性ビューアとエディタがcom.ibm.icuのバージョンの件でインストール出来ないのは未解決ですが、コアとなる機能はいれられました。

そして次に、「あ、ない」と思ったのがTomcatを操作するプラグインです。
もうかなりの期間デファクトスタンダードになっているのがSysdeo Tomcat Pluginですが、Version3.2.1が公開されたのが2007年5月だし、Sysdeoって会社は無くなったのでしょうか?

しかしそのプラグインを選択するのが今のところ一番無難そうなのでここの手順に従ってインストールします。
%ECLIPSE_HOME%/dropinsに解凍した「com.sysdeo.eclipse.tomcat_3.2.1」フォルダをコピーして問題なく動作。

そして起動させてみて、「あ、ない」と思ったのがMaven Additional Plugin

ですが、インストールに問題はないものの、TOMCATがワークスペースのライブラリを認識してくれない。
なんか見たことあるなと思って、自分のブログを読み返したところ

q4eとmavenとtomcatの色々

で自分で気が付いている問題にまた迷ったようだ。

ということで、試しにMaven2プロジェクトを作成してみて、そのプロジェクトの.classpathファイルを
見てみたら以下のエントリーがある。

<classpathentry kind="con" path="org.devzuz.q.maven.jdt.core.mavenClasspathContainer"/>

そういえば、q4eからI AMに変わったので、クラスパス変数も変わったのね。

Maven Addtional Pluginのプロジェクトの設定の「Maven2のコンテナのID」に「org.eclipse.iam.jdt.core.mavenClasspathContainer」を追加する。

とりあえずはこれで動かそうと思っていた画像サンプルが動いたのでよしとする。


q4eとMavenとTomcatの色々

まずは、q4eをEclipseで使用し、通常のWebアプリケーションをローカルインストールしようとした。
プロジェクト右クリック→[Maven2]→アーティファクトのローカル・インストール

Unable to locate the Javac Compiler in:
C:\Program Files\Java\jre6\..\lib\tools.jar
Please ensure you are using JDK 1.4 or above and
not a JRE (the com.sun.tools.javac.Main class is required).
In most cases you can change the location of your Java
installation by setting the JAVA_HOME environment variable.

これはつまり、JREではなくJDKに含まれている「tools.jar」が必要だということらしい。

ビルドやテスト、依存ライブラリ追加は自動化できる!

の『注意! 「Javaコンパイラのエラー」』のところに記載があります。

これを解決する方法は、主に以下の2つがあります。
Eclipseの起動コマンドの「-vm」オプションでJDKに入っているjavaw.exeを指定する
プロジェクト定義ファイル(pom.xml)もしくはMaven設定ファイル(settings.xml)で、Maven実行の際に使われるコンパイラを指定する

ということなので、出来ればpom.xmlだけで解決したかったが、
Compiling Sources Using A Different JDK
を見ると、settings.xmlまでいじらなくてはならなそうなので、1の方法にした。

-vm “C:\Program Files\Java\jdk1.6.0_10\bin\javaw.exe”

と付けるだけ。

次に実行してみたら

Failure executing javac, but could not parse the error:
javac: ターゲットリリース 1.1 がデフォルトのソースリリース 1.5 と競合しています。

と出た。たぶんこれは、pom.xmlに以下の記載を中途半端にしたまま実行してしまったから。

<plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <verbose>true</verbose>
          <fork>true</fork>
          <executable><!-- path-to-javac --></executable>
          <compilerVersion>1.3</compilerVersion>
        </configuration>
      </plugin>
    </plugins>

これを消してさらに実行。すると

注釈は -source 1.3 でサポートされていません
(注釈を使用可能にするには、-source 5 以降を使用してください)
@Execute(validator = false)

これは、SAStrutsのアノテーションのところなのだが、Mavenの初期設定は1.3だそうなので、Mavenのプラグイン設定で変更する。
(さっきのページに載っていたけど)

ソースのバージョン

<plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
    </plugins>

にしてさらに実行する。

パッケージ javax.servlet は存在しません。
パッケージ javax.servlet.http は存在しません。

え、そんな当たり前なやつまで??。と思ったけどMavenはTOMCATは意識しているはずもないので、dependencyを追加。

 
<dependency>
    <groupId>javax.servlet</groupId>
         <artifactId>servlet-api</artifactId>
         <version>2.5</version>
</dependency>

    
これで実行すると、問題なくローカルインストール出来た。
だがしかし、TOMCATPluginを使ってこのアプリケーションを起動しようとすると、

2009/06/04 13:12:45 org.apache.catalina.core.StandardContext filterStart
致命的: フィルタ requestDumpFilter の起動中の例外です
java.lang.ClassNotFoundException: org.seasar.extension.filter.RequestDumpFilter
 :
2009/06/04 13:12:45 org.apache.catalina.core.StandardContext filterStart
致命的: フィルタ s2filter の起動中の例外です
java.lang.ClassNotFoundException: org.seasar.framework.container.filter.S2ContainerFilter
 :
2009/06/04 13:12:45 org.apache.catalina.core.StandardContext filterStart
致命的: フィルタ hotdeployfilter の起動中の例外です
java.lang.ClassNotFoundException: org.seasar.framework.container.hotdeploy.HotdeployFilter
 :
2009/06/04 13:12:45 org.apache.catalina.core.StandardContext filterStart
致命的: フィルタ encodingfilter の起動中の例外です
java.lang.ClassNotFoundException: org.seasar.extension.filter.EncodingFilter
 :
2009/06/04 13:12:45 org.apache.catalina.core.StandardContext filterStart
致命的: フィルタ routingfilter の起動中の例外です
java.lang.ClassNotFoundException: org.seasar.struts.filter.RoutingFilter
 

とか、ドカドカ起動エラーが出ている。このアプリケーションはSAStrutsを使っているので、
そのライブラリがTOMCATから見えないようだ。

どうも、q4eで追加されていた筈のDependencyのライブラリ群がプロジェクトにないのに気がついた。
なぜなくなったんだろう?

 
ということで、試しにMaven2プロジェクトを作成してみて、そのプロジェクトの.classpathファイルを
見てみたら以下のエントリーがある。

<classpathentry kind="con" path="org.devzuz.q.maven.jdt.core.mavenClasspathContainer"/>

 

これがいつのまにか無くなっていた。
このエントリを起動しようとしていたプロジェクトの.classpathに追記したら、やっと画面が拝めるようになった。