- PR -

Apache2.2.x と Tomcat 5.x の連携での JSP の扱い

1
投稿者投稿内容
けそらそら
会議室デビュー日: 2005/12/19
投稿数: 12
お住まい・勤務地: 高円寺に住みたい
投稿日時: 2006-06-24 04:01
CentOS 4.3 Apache 2.2.2
j2sdk1.4.2_12 Tomcat 5.0.28
にてwebサーバとアプリケーションサーバの連携をしています。
静的コンテンツはApache、
動的コンテンツ(/servlet/* と jsp)はTomcatで処理させたいのですが、
うまくいきません。

<VirtualHost> 内にて
<Location />
ProxyPass ajp://localhost:8009/
</Location>
と記述することにより、
連携自体はできていますが、
これですと静的コンテンツもTomcatで処理することになってしまいます。

/servlet/* をTomcatで処理させるために、

ProxyPass /servlet/ ajp://localhost:8009/servlet/

としてあります。
これはうまく動作しているようです。

ところがjspをTomcatに渡すことができないのです

<Files *.jsp>
ProxyPass ajp://localhost:8009/
</Files>

とか

<Location *.jsp>
ProxyPass ajp://localhost:8009
</Location>

とかやってもうまく効かなくてJSPのソースが表示されてしまいます。
どうにかしてこれをTomcatに渡すことはできないでしょうか?
ご教示お願いいたします。

# Sessionの振り分けの
# worker.loadbalancer.sticky_session のような項目もないですし、
# もしかしたら機能的にまだまだなのでしょうか?
けそらそら
会議室デビュー日: 2005/12/19
投稿数: 12
お住まい・勤務地: 高円寺に住みたい
投稿日時: 2006-06-24 10:03
解決いたしました。
少し邪道ですが、mod_rewriteを使ってTomcatに渡すやり方です。

RewriteEngine On
RewriteCond %{REQUEST_URI} (.*).jsp(.*)
RewriteRule ^/(.*) ajp://localhost:8009/$1 [P]

パフォーマンス的にどうなのかと思うので、
mod_proxy_ajp + mod_rewrite vs mod_jk
でABしてみようと思います。
けそらそら
会議室デビュー日: 2005/12/19
投稿数: 12
お住まい・勤務地: 高円寺に住みたい
投稿日時: 2006-06-24 10:26
AB結果です。
まず実行したコードを。

//servlet
import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class test extends HttpServlet{
private static final String CONTENT_TYPE = "text/html; charset=windows-31j";
private static final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.println(formatter.format(new Date()));
}
}

//jsp
<%@ page contentType="text/html; charset=windows-31j" %>
<%@ page import="java.text.*" %>
<%@ page import="java.util.*" %>
<%!
private static final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
%>
<%= formatter.format(new Date()) %>
けそらそら
会議室デビュー日: 2005/12/19
投稿数: 12
お住まい・勤務地: 高円寺に住みたい
投稿日時: 2006-06-24 10:36
ab -n 1000 -c 64 http://hostname/test.jsp
ab -n 1000 -c 64 http://hostname/servlet/test
の測定結果です。

mod_proxy_ajp + mod_rewrite - jsp
Requests per second: 241.78 [#/sec]

mod_proxy_ajp + mod_rewrite - servlet
Requests per second: 1174.78 [#/sec]

mod_jk - jsp
Requests per second: 1097.32 [#/sec]

mod_jk - servlet
Requests per second: 1174.78 [#/sec]

大体予想通りなのですが、
mod_proxy_ajp - jsp はやはり mod_rewrite を通して行っているので、
とても遅いです。
connection pooling も使えません。
mod_jk → mod_proxy_ajp の servlet にて進化はしていないことがわかりました。
今のところ、まだmod_jkを使うほうが良いという結論です。

うーん。
意見、反証お願いします。
けそらそら
会議室デビュー日: 2005/12/19
投稿数: 12
お住まい・勤務地: 高円寺に住みたい
投稿日時: 2006-06-29 11:24
あまり一般的な使用法ではないのか、
皆さん興味ないようで・・・

一応解決策を見つけました。
http://sorajo.spaces.msn.com/blog/cns!CF5810903289B74A!160.entry
こちらに書いておきますので、
興味のある方いらっしゃいましたら、
ご覧ください。
また、ご意見等お願いします。
1

スキルアップ/キャリアアップ(JOB@IT)