メイン

tomcat アーカイブ

2006年08月17日

YouTuber.jsp * Tomcat

YouTuberのjsp版を作成中。

フォームで空白区切りで2単語以上指定された場合は"+"で各単語を区切るが、そうするとなぜか1ページ分しかクロールしてこない問題発生。あと日本語も化ける。

ここを参考にserver.xmlの内に以下を追加したら、ひとまず"+"で区切っても検索できるようにはなった。

<Context> <!--YouTuberJsp--> <Context path="/YT" docBase="YT" debug="0" reloadable="true"/> <DecodeInterceptor defaultEncoding="UTF-8" useSessionEncoding="false" /> </Context> </Server>

要日本語対策。



2006年08月19日

YouTuber.jsp * Tomcat (2)


日本語対応の件を一応解決したのでログ。
JSP内でrequestを受け取る時に、


request.setCharacterEncoding("UTF-8");     <--コレ
String keyword = request.getParameter("q");
String pages = request.getParameter("pages");


コレにあるように指定すると、GETで飛んできたものをUTF-8にエンコードできる。
ところがこれは表示用文字化け対策としてGETで飛んできたものをエンコードするので、
それをそのままJSP内のJavaコンストラクタとかに投げると当然youtube側にリクエストできなくなる。


つまり、[漫才]で検索した場合、上のコードのままkeywordをJavaに渡すと、
youtube.com?q=漫才
みたいな感じで問い合わせてしまうので、当然結果は返ってこない。


なので、JSP側でもっかい
String encoded = URLEncoder.encode(keyword, "UTF-8");
として日本語文字列を
%E3%83%86%E3%83%AC%E3%83%93
のような形にエンコードしてからJava側に投げる。


これは最初Javaのクラスファイルの中でそう言う処理をさせていたが、それだと何故かうまくいかなかったので、JSP内で上記のエンコードを行ったら成功した。
ちなみにやはり一部日本語が完全に戻らない。。



2006年08月25日

Tomcat5.5.x * 日本語

Tomcat4.xからTomcat5.x(今回は5.5.17)に移行した際、文字化けに当ったのでログ。


Tomcat5.xになってから、デフォルトでGETパラメータのURIのエンコーディングにutf-8を利用するようになっているようだ。なので[TOMCAT_HOME]/conf/server.xmlのConnector要素で

<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" useBodyEncodingForURI="true"/>
とすれば良いらしいが、今回はこれでは直らなかった。 ここを参考に、 受け取る側のJSPで

[変更前]


request.setCharacterEncoding("UTF-8");
String keyword = request.getParameter("q");

[変更後]


// request.setCharacterEncoding("UTF-8");
String keyword = new String(request.getParameter("q").getBytes("ISO-8859-1"), "UTF-8");

としたら直った。



Mac OSX * Apache2 * tomcat5 * mod_jk2

AjaxするにはなにかとJSP2.0だといいっぽいので、Tomcat4.1.18からTomcat5.5.17へバージョンアップ。ついでに MacデフォルトWebサーバであるApache1.3.33をApache2.2.3へアップグレード。さらにこの2つをmod_jk2で連携させる。結構ハマる感じなので、後を考えてログ。


■Tomcat5.5.17インストール
ここの左の[Download]からTomcat 5.x(今回は5.5.17)を選んで、Coreのzip版を選んでDL。tar.gz版だと何故か正常に解凍できない不具合があるっぽい。
これは普通に解凍後、/usr/localに置けばよい。
/bin/startup.shしてからlocalhost:8080にアクセスして正しく気持ち悪い猫がでてくれば、とりあえずよい。


■Apache2.2.3インストール
ここからUnix Sourceのhttpd-2.2.x.tar.gz(今回は2.2.3)をDL。/usr/localに移動させて,解凍。その後

$ sudo ./configure $ sudo make $ sudo make install

とやれば勝手に/usr/local/apache2というディレクトリにインストールしてくれる。
オプション無しで勝手にやってくれるようになったようだ。
bin/apachectl startとやってlocalhostにアクセスして

It works!

と表示されれば、よい。TOPページがすごく手抜きになった気が。。


■Tomcat5とApache2を連携させるj2のインストール。
ここからJK2 2.0.4 Source Release zipを落として、適当な場所に解凍。

そしてjk2作成用のディレクトリまで移動してconfigure。。。

$ cd /[解凍したディレクトリ]/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2 $ ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-tomcat50=/usr/local/tomcat5

とやると、libaprが無いと言われるが、/usr/local/apache2/libにlibapr.soという空のファイルを作る
事でこのエラーは回避できるようだ。

$ cd /usr/local/apache2/lib $ pwd /usr/local/apache2/lib $ vi libapr.so

としてとりあえず中身を何も書かず保存。そして再度

$ sudo ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-tomcat50=/usr/local/tomcat5

とやると今度はちゃんと出来るはず。その後

$ sudo make

までやる。そうすると

$ /[解凍したディレクトリ]/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/build/jk2/apache2

にmod_jk2.soというファイルが出来ているはず。それを

$ sudo cp mod_jk2.so /usr/local/apache2/modules/

とする。さらに

$ /[解凍したディレクトリ]/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/conf

にworkers2.propertiesというファイルがあるので、これを

$ sudo cp workers2.properties /usr/local/apache2/conf/

して、httpd.confにLoadModule jk2_module modules/mod_jk2.soという行を追加する。後は、Tomcatのwebapps/jsp-examplesをexamplesに変えて(もしくは、workers2.propertiesを直接変更する)、Tomcat⇒Apacheと再起動してブラウザで localhost/examples/が見れれば完了。


■jk_2を使ったwebappsの登録。
/usr/local/apache2/conf/workers2.propertiesを開き、新規に作るwebappsのディレクトリ名を

[uri:/[ディレクトリ名]/*] info=[ディレクトリの解説] context=[ディレクトリまでのパス] debug=0

(例)
[uri:/hoge/*]
info=hoge is hoge
context=/hoge
debug

として、Tomcat⇒Apacheと再起動すればよい。httpd.confやserver.xmlをいじる必要は無い。
便利になったけど、jk2は公式サポートしなくなったらしい。。



About tomcat

ブログ「what a bringdown」のカテゴリ「tomcat」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

前のカテゴリはruby on railsです。

次のカテゴリはUniversal Binary Softwareです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。