徒然なるままに

個人の備忘録を中心としたブログです

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
servletを作るには"servlet-api.jar"という外部のパッケージを利用する。

javaのはパッケージは*.jar(JavaARchive)ファイルとして圧縮されているので
このファイルをjavacに伝えてやらないといけない。

そのためのclasspathオプションである。

hoge.javaファイルをコンパイルする例
javac -classpath "$CATALINA_HOME"/lib/servlet-api.jar hoge.java

$CATALINA_HOMEはtomcatのホームディレクトリです。
外部からjarだけ落としてもコンパイルはできますが、どうせ実行するんだからtomcatのインストールを。


いちいち打ち込むのが面倒くさいという人はシェルスクリプトでも作りましょう。

ソースファイルが入っているディレクトリ内に下のjavacs(javac servlet)ファイルを作成します。
(なおこのスクリプトは引数にオプションの指定を考えていないので、軽く勉強でサーブレットを使いたい人向けです。ちゃんとしたものが欲しい人は正規表現とか使ってちゃんと作りましょう。)
#!/bin/bash
javac -classpath "$CATALINA_HOME"/lib/servlet-api.jar "$*"

chmod +x javacs

で実行権限を追加したら
./javacs hoge.java

でコンパイルできます。


eclipse上ではサーブレットは実効できないのですが、エラーチェックがうるさいのでビルド・パスを追加してあげましょう。
プロジェクト名を右クリックしてプロパティ→Javaのビルド・パス→外部Jar追加→servlet-api.jarを指定。
スポンサーサイト
前回の記事でtomcatがインストールできたので実際にサーブレットを動かしてみる。

htmlや画像、サーブレット(class)などのwebページを構成する要素となるファイルは
$CATALINA_HOME/tomcat/webapps/以下に保存する(実際はもっと複雑なので後で詳しく説明する。

webapps/ROOT/はその名のとおりルートディレクトリで、
webapps/ROOT/gazo.jpgはlocalhost:8080/gazo.jpgにあたる。
ただ、ここはindex.jarなど設定に必要なファイルが入っているため、
開発プログラムの実行場所には適さない。

そこで方針として任意のhogeというディレクトリを作成し、
webapps/hoge(任意)以下にファイルを保存し、その中にhtmlファイルやクラスファイルを置くことにする。
そうすればhttp://localhost:8080/hoge/index.htmlのようにアクセスすることが可能になるというわけだ。

このように簡単に書いたが、実際はもっと複雑で、
クラスファイルの保存場所はhoge/WEB-INFO/classes ←新規ディレクトリ作成
に置かなければいけない。
そしてクラスとurlの対応付けを行うweb.xmlをhoge/WEB-INFO/web.xmlに作成する。

ここではhoge/WEB-INFO/classes/Test.classが置いてあるとしよう。
このときweb.xmlの中身は以下のようにする。

<servlet>
<servlet-name>sample</servlet-name>
<servlet-class>Test</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>sample</servlet-name>
<url-pattern>/sampleurl</url-pattern>
</servlet-mapping>


<servlet>タグ内<servlet-class>にはクラス名を設定する。
<servlet>タグ内<servlet-name>にはこのクラスに好きな名前をつける。この名前は後のurlとの対応付けに一時的に使うだけなので一意な任意のもので構わない。

<servlet-mapping>内<servlet-name>に先ほどのクラスと対応付けた名前を入れて
<servlet-mapping>内<url-pattern>にクラスに対応するurlコードを設定する。

ここの例ではwebapps/hoge/WEB-INFO/classes/Test.classが
localhost:8080/hoge/sampleurlとしてアクセスできるということだ。

ここまでのファイル配置をまとめて示す。
$CATALINA_HOME/webapps/hoge/index.html
$CATALINA_HOME/webpps/hoge/WEB-INFO/classes/Test.class
$CATALINA_HOME/webpps/hoge/WEB-INFO/web.xml

(参考にしたサイト)
http://www.javadrive.jp/servlet/context/

サーブレットを勉強することになったので、tomcatをインストールした。

tomcatは簡易サーバーみたいなものでJavaのサーブレットやJSPを動かすことが出来る。
サーバーとしての機能は最低限のため、実運用上問題がある。
そこでapacheとtomcatを連携させて使用する例が非常に多い。

つまりHTTPリクエストを返す機能はapacheに任せ、tomcatはサーブレットやJSPの処理を専門にするということである。その連携方法は後の記事に書くということで、まずはインストール方法から。

http://tomcat.apache.org/から左のDownload、求めるバージョン(ここでは7.0)を選び、tar.gz形式のものをダウンロード。



tar xzvf apache-tomcat-7.0.*.tar.gz
mv apache-tomcat-7.0.* tomcat (長いのでrename)
mv tomcat /usr/local/


これで、/usr/local/tomcatにインストールが完了した。

あとは環境変数$CATALINA_HOMEを設定する必要があるので
/etc/profileに下の二行を追加



CATALINA_HOME="/usr/local/"
export CATALINA_HOME


/usr/local/bin/start.sh(tomcat起動スクリプト)
/usr/local/bin/shutdown.sh (tomcat終了スクリプト)
があるので、

./start.sh

で起動後
http://localhost:8080/
を開いてtomcatのキャラクターや設定画面が表示されれば、無事に稼働している。

この画面右上の管理ページ「Manager app」でアプリケーションの起動、停止や、他にも色々設定をする、
この管理ページにはBASIC認証が使われているので許可するuserの名前とパスを専用のxmlファイルに登録する必要がある。

そのxmlファイルが/usr/local/tomcat/conf/tomcat-users.xmlである。
これを編集しタグ内に以下の二行を追加。


<role rolename="manager-gui" />
<user username="name" password="passswd" roles="manager-gui" />


これでManager appのページのBASIC認証は通り、ひとまずtomcat側の準備は完了した。

(参考にしたサイト)
http://www.javadrive.jp/servlet/
http://homepage1.nifty.com/y-osumi/works/code/tomcat7/
(便利な自動起動スクリプトが載っている。CATALINA_HOMEの設定もこちらの方がスマートだと思った)

kamiyasu

Author:kamiyasu

QR

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。