- - PR -
Apache2.2.x と Tomcat 5.x の連携での JSP の扱い
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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 のような項目もないですし、 # もしかしたら機能的にまだまだなのでしょうか? |
|
投稿日時: 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してみようと思います。 |
|
投稿日時: 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()) %> |
|
投稿日時: 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を使うほうが良いという結論です。 うーん。 意見、反証お願いします。 |
|
投稿日時: 2006-06-29 11:24
あまり一般的な使用法ではないのか、
皆さん興味ないようで・・・ 一応解決策を見つけました。 http://sorajo.spaces.msn.com/blog/cns!CF5810903289B74A!160.entry こちらに書いておきますので、 興味のある方いらっしゃいましたら、 ご覧ください。 また、ご意見等お願いします。 |
1