JAVA+JSP+Struts+Tomcat Part2
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
2005/10/23(日) 16:10:05こんな環境で仕事したくねぇ〜〜
みんなでMS環境に移行しようぜ!
0809805
2006/09/04(月) 20:46:12ありがとうございますー
ここを参考にしてなんとかがんばってみたいと思います。
0810デフォルトの名無しさん
2006/09/04(月) 21:27:490811デフォルトの名無しさん
2006/09/04(月) 21:30:18sessionで出来るか?・・・
>>809
何を悩んでいるのかが解らん。自分(servlet)の同時アクセス数をstatic変数とかで
数えて制限を越えていたらリダイレクトすればよいだけの話なんだが。
0812デフォルトの名無しさん
2006/09/05(火) 12:05:38そして現在、それのバージョンアップ版を開発しているのですが、同じサーバ機上でテスト稼動(これをテスト版と呼びます)しなくてはいけなくなりました。
ただし正式版は稼動させたままでなくてはいけないので、正式版とテスト版を単純に入れ替えるわけにはいきません。
また内部で自分自身をURLで呼んだりしているので、webapps 以下に正式版とテスト版を、違う名前のフォルダとしてデプロイするわけにもいきません。
でもたとえば、ポート8080から来たリクエストはこれまでどおり正式版に流して、ポート8011から来たリクエストはテスト版に流す、といったことは可能なんでしょうか?
可能だとすればどうしたらよいでしょうか?(ここを参照しろ、とかで結構です)
よろしくお願いします。
0813デフォルトの名無しさん
2006/09/05(火) 13:40:42> また内部で自分自身をURLで呼んだりしているので
相対URLにしたり、URLをプログラムで生成してあればまったく問題ないと思うのだが。
0814デフォルトの名無しさん
2006/09/05(火) 20:23:09ありがとうございます。それができればいいんですけど、
そこには権限上手を触れられないので、他の解決策をお聞きしたいんです。
(既存の動いてるコードは変更しちゃダメっていう、よくあるパターンです)
色々調べてるんですが、Tomcatを複数インスタンス起動すればいいのでしょうか?
%CATALINA_BASEっていう環境変数を使うらしいですけど、それを複数インスタンスに対して
どう設定するのかわからないです。
0815デフォルトの名無しさん
2006/09/05(火) 20:37:33「動いているコードは触るな」って、
究極のアンチプラクティスとして有名だぞ。
あんたの入っているプロジェクト、ヤバすぎ。
0816デフォルトの名無しさん
2006/09/05(火) 21:06:320817デフォルトの名無しさん
2006/09/05(火) 21:11:570818デフォルトの名無しさん
2006/09/05(火) 21:13:430819デフォルトの名無しさん
2006/09/05(火) 21:28:02>>817
すみません。
tomcatみたいに環境を汚さず起動できるアプリケーションは勝手にインストールできるんですが、
vmwareみたいにドライバ突っ込むものはダメなんです。
>>818
もうちょっとヒントをいただけますか?すみません
バーチャルドメインへアクセスしてきたクライアントは、試験版へ飛ばすってことでしょうか?
0820デフォルトの名無しさん
2006/09/06(水) 11:19:13ポート別けたって絶対パスなんだからなぁ。
バーチャルドメイン立てても、絶対パスである以上完全な分離は無理じゃないか。
皆が言っているように相対パスに変更するのが手っ取り早いと思う。
か、別の検証用マシン立てるかだな。PC安いし。
1つ思いつくことは、専用のapacheモジュール作ってクッキーとかで本番への
アクセスか検証へのアクセスかを判断し内部リダイレクトするとかかな。
0821デフォルトの名無しさん
2006/09/06(水) 11:24:510822デフォルトの名無しさん
2006/09/06(水) 11:31:16だからなぁ。怪しいぞ。
0823デフォルトの名無しさん
2006/09/06(水) 22:29:52>>807がセッションて言うから。。。。セッションて言うからぁ。・゚・(ノД`)・゚・。
0824デフォルトの名無しさん
2006/09/06(水) 23:45:09場合、doPost,doGetメソッドは最後まで実行されるのですか?
途中で処理が打ち切られるのですか?
0825デフォルトの名無しさん
2006/09/06(水) 23:46:080827デフォルトの名無しさん
2006/09/06(水) 23:50:040828824
2006/09/07(木) 00:30:13Java使いは、こういう異常処理は考えてコードかいてるのだろうか、、、
普通は、DataBaseのトランザクションで元に戻るんだろうけど
0829デフォルトの名無しさん
2006/09/07(木) 01:31:24異常処理も何も普通(普通にエラーとかな)に実行されて、
結果がクライアントに分からないだけだ。
0830デフォルトの名無しさん
2006/09/07(木) 01:31:48CとJavaはいじってるからプログラムやアルゴリズムに関する理解はある。
だがHTMLやXMLに関しては全くの初心者なんだ。
で、本を読んでいるとXMLに関する記述が相当量あって、そのソースコードがいまいち理解できん。
XMLとか、リファレンスとかの解説してくれるいいサイトって知ってる人いたら是非教えてくらさい。
0831デフォルトの名無しさん
2006/09/07(木) 09:22:08> Java使いは、こういう異常処理は考えてコードかいてるのだろうか、、、
ガーベジコレクションで何とかしてくれると思っている。
(あながちこれが冗談じゃない人も存在する模様)
0832デフォルトの名無しさん
2006/09/07(木) 15:57:55XMLは単なる設定ファルと考えたらどうだ。
Struts config でググレば死ぬほど情報はある。
0833デフォルトの名無しさん
2006/09/07(木) 16:28:58というか、プログラム的にはまったく影響なく正常に動くんだから、特に考える必要もないだろ。
ブラウザでタイムアウトかなんかが表示されるだけだ。
0834デフォルトの名無しさん
2006/09/19(火) 13:21:15でもcharset=EUC-JPだとサーブレットのエラーになってしまいます。
エラーにせずに文字コードを変更する事はどうやったら出来るでしょうか?
0835デフォルトの名無しさん
2006/09/19(火) 13:24:460836デフォルトの名無しさん
2006/09/19(火) 15:30:04<%@ page contentType="text/html; charset=EUC-JP;" pageEncoding="ISO-2022-JP"%>
では
0837デフォルトの名無しさん
2006/09/21(木) 20:12:30ドコモとAUではこの事象は発生しません
0838デフォルトの名無しさん
2006/09/22(金) 15:26:54確か、既に forward や、redirect を指定済みのリクエストに対して、さらに
forward や、redirectをするとそのエラーになるのだが・・・
vodafoneだけ画面遷移的に矛盾があるとかかな。
0839デフォルトの名無しさん
2006/09/25(月) 12:16:290840デフォルトの名無しさん
2006/09/25(月) 12:27:440841デフォルトの名無しさん
2006/09/25(月) 12:30:02?
tomcatの http://localhost/examples/jsp/index.html
とかが、8080 ポート指定なしで見れたら apacheとの連携はOK。
0842デフォルトの名無しさん
2006/09/25(月) 12:51:47>841
ありがとうございます!8080ポートなしでサーブレットもみえています。
ということは連携できているのかな。うーん。
あと、web系やjavaの開発を仕事でしたことないので作法みたいのがわからないんですが、JSPとサーブレットってどのように使い分けるものなのでしょうか。
業務に深くかかわらないサービスツールなんかをイントラで適当に作ったりしましたが、動けばいいレベルだったのでそこらへんがわかりません。
トムキャットはアパッチと連携するべきなんてのもしりませんでした
0843デフォルトの名無しさん
2006/09/25(月) 13:18:40MVCというのがキーワードなんだが、その辺はかなり深いので本でも買って勉強なさい。
0844デフォルトの名無しさん
2006/09/25(月) 13:43:31連携でコメントいただいたかた、ありがとうございます。たすかりました。
0845デフォルトの名無しさん
2006/09/25(月) 21:43:430846デフォルトの名無しさん
2006/09/27(水) 22:27:41MVCとかはほっておいて、単にプログラムはServletにJavaで書いてJSPにはJavaコードを書かないようにするくらいでいいと思うよ。
0847デフォルトの名無しさん
2006/09/27(水) 22:29:53それと、TomcatはApacheと連携する「べき」ということもない。
Tomcat単独ではできないApacheの機能が必要なときに使えばいいだけ。
0848デフォルトの名無しさん
2006/09/28(木) 10:53:380849デフォルトの名無しさん
2006/09/29(金) 01:03:39結合以降で十分だ。
0850デフォルトの名無しさん
2006/09/29(金) 17:07:20業務アプリだと静的コンテンツほとんどないしな。
0851デフォルトの名無しさん
2006/09/29(金) 17:21:12画像もCSSも使わないならね。
0852デフォルトの名無しさん
2006/09/29(金) 17:26:27Tomcatの起動時から毎時に適当な処理を走らせたいのですが、
初期化クラスの先でスレッドで実装したクラスに任せても問題無いでしょうか?
他に手だてがあれば教えていただければ幸いです。
よろしくお願い致します。
0853デフォルトの名無しさん
2006/09/29(金) 17:34:45cronで定期的にwgetでサーブレットたたくとか。
0855デフォルトの名無しさん
2006/09/29(金) 17:38:51商用サイトではそうはいかない。
0856デフォルトの名無しさん
2006/09/29(金) 22:50:32ログイン時にユーザエンティティを生成して、そこの値を反映させる形で実装するのはおかしいですかね?
0857852
2006/09/29(金) 22:53:15レスありがとうございます。
cronをトリガにするのが一般的でしたか…
毎時処理は別アプリをつくった方が良いみたいですね。
設計を見直してみます。ありがとうございました。
0858デフォルトの名無しさん
2006/09/30(土) 04:50:14うん、だから業務アプリと前置きしてるでしょ。
Javaが使われるのはほとんど業務アプリなわけで。
0859デフォルトの名無しさん
2006/09/30(土) 04:51:380860デフォルトの名無しさん
2006/10/01(日) 17:08:22>ショッピングサイト構築
あと、ユニークユーザが2000人くらいのサイトでもApache + tomcatの連携って必要でしょうか?
静的ページはトップページだけなのですが。
0861デフォルトの名無しさん
2006/10/01(日) 19:17:01まあ、金がかかるもんでもないし、手間もそれほどないから、とりあえず連携させておいてもいいと思うが。
0862デフォルトの名無しさん
2006/10/01(日) 19:31:23監視ツールとかアクセス解析ツールとかいろいろ対応してそう。
0863860
2006/10/01(日) 20:08:03ありがとうございます。
Apache連携はスケジュール見ながら考えることにします。
>>862
監視は鯖に向けてツールを仕掛ける予定なので良いかなぁ、と。
0864デフォルトの名無しさん
2006/10/01(日) 23:41:31Tomcatにデプロイするアプリをすべて外部公開するならそれでもいいと思うよ。
ウチでは、社内からしか見えないマスタメンテアプリとか、Tomcat Managerアプリとかも
動いてるから、Apacheと連携させている。外部からはApache経由でしか見えないようにして、
社内からはTomcatを直接見るようにしている。
0865デフォルトの名無しさん
2006/10/01(日) 23:49:340866860
2006/10/02(月) 00:07:32本番環境は純粋にそのWEBアプリだけを動かす予定なので、ひとまずApache連携は置いておきます。
0867デフォルトの名無しさん
2006/10/04(水) 17:07:04<%!
public boolean hoge(){
boolean b = false;
return b;
}
%>
こうやってメソッドを宣言した時、
他のJSPからこのメソッドをどうやったら呼べますか?
0868デフォルトの名無しさん
2006/10/04(水) 19:01:50なぜbeansにしないのが不思議なのだが、なぜ includeにしない?
0869デフォルトの名無しさん
2006/10/04(水) 19:15:54日本語でおk。
0870デフォルトの名無しさん
2006/10/04(水) 19:40:35どこからどう見ても日本語。。。
0871デフォルトの名無しさん
2006/10/04(水) 19:42:140872デフォルトの名無しさん
2006/10/04(水) 19:43:130873デフォルトの名無しさん
2006/10/04(水) 19:47:41beansとincludeでぐぐってみたら?
0874867
2006/10/04(水) 19:54:390875デフォルトの名無しさん
2006/10/04(水) 19:59:14>>868が何を言っているのか何を言いたいのかまったく解らない。
0876デフォルトの名無しさん
2006/10/04(水) 20:19:250877デフォルトの名無しさん
2006/10/04(水) 20:44:180878デフォルトの名無しさん
2006/10/04(水) 21:00:200879867
2006/10/04(水) 21:59:080880デフォルトの名無しさん
2006/10/04(水) 23:36:24ていうか、JSP内でメソッドを定義することにビックリ。
JSP絡みのプロジェクトは3回ぐらいしかないが一度もみたことないぞ。
JSPは実行時にはJavaのクラスへと変換されるわけだが、
他のJSPにあらかじめそのクラス名とメソッド名を認識させておくつもりかい?
実現したいことがよく分からんが、他の実装方法を考えるべきでは?
0881868
2006/10/04(水) 23:56:58ちょっと追い込みでテンパってた。
0882デフォルトの名無しさん
2006/10/05(木) 09:52:38つーかやろうとした事も無かった。 なんの為にやるのかさっぱりわからんし。
で、呼び出すのは一般的には無理だろう。 無理やりやればなんとか呼べるかもしらんが
webアプリサーバ依存の処理になるのは間違いない。
beanにそのままコピペすりゃ2〜3分で可能だろうが。
08831/2
2006/10/05(木) 10:33:00Strutsを利用してWebアプリ組んでるんですが、
public class HogeAction extends Action {
public ActionForward execute(ActionMapping map, ActionForm form,
HttpServletRequest req, HttpServletResponse res) {
HttpSession session = req.getSession();
List list = null;
// 掃除処理0 ここから
list = session.getAttribute("hoge");
if (null != list) {
list.clear();
}
// 掃除処理0 ここまで
session.removeAttribute("hoge"); // 掃除処理1 ここから
request.removeAttribute("result"); //
System.gc(); // 掃除処理1 ここまで
list = hogeBean.createList(); // hogeBean.createList()は結果データのListオブジェクトをnewして返す
List result = list.subList(from, to); // 結果表示データ作成
session.setAttribute("hoge", list);
request.setAttribute("result", result);
return mapping.findForward("success");
}
}
08842/2
2006/10/05(木) 10:33:48HogeAction ---> hoge.jsp ---> HogeAction --> hoge.jspと交互にfowardしています。
hoge.jsp内ではJSTLの<c:forEach>タグを使って"result"の中身を表示しています。
hogeBean.createListが返すListオブジェクトのデータサイズは条件によって異なるんですが、
このListオブジェクトのデータサイズが大きい場合、「掃除処理0」を行わないと、
hogeBean.createListメソッドでOutOfMemoryErrorが発生します。
また、「掃除処理0」の代わりに「掃除処理1」を行っても状況は変わりませんでした。
「掃除処理1」の処理を行えば、sessionから不要なListオブジェクトは掃除できると
思っていたんですが、
これらのremoveAttributeメソッドではListオブジェクトに対する参照は残ってしまうものなんでしょうか?
0885デフォルトの名無しさん
2006/10/05(木) 11:01:05sessionスコープから削除されるだけで、オブジェクトへの参照をどこかで保持していた場合は
GCの対象にはならない。
そのコードでは、「System.gc();」の時点でも変数listがList型オブジェクトの参照を保持している。
いったんlistにnullを入れてからSystem.gc();すればいいんじゃないの?
※アプリケーションからGCを呼び出すなんて愚の骨頂だがw
0886884
2006/10/05(木) 11:58:22レスthxです
書き方が悪くて誤解があったかもですが
「掃除処理0」と「掃除処理1」はどちらかしか有効にしてません。
なので、「掃除処理1」の箇所を通過する場合は変数listにはnullが入っています。
また、掃除処理0の箇所を通過する場合はSystem.gc()は実行しません。
さらに情報後出しで申し訳ないですが、
結果表示データ作成の部分の
List result = list.subList(from, to); を
List result = new ArrayList(4); に置き換えて、「掃除処理0」をコメントアウト、
「掃除処理1」を有効にして試してみたところ、OutOfMemoryErrorは発生しませんでした。
また、「掃除処理0」をコメントアウト、List result = list.subList(from, to);に戻しつつ、
JSPの一部をコメントアウトしてJSPでは"result"にセットされているオブジェクトを
参照しないようにしてもOutOfMemoryErrorは発生しました。
以上のことからsessionやrequestのsetAttributeメソッドを使ってsessionにオブジェクトを
格納してJSPにfowardすると、自分が開発しているクラス以外のどこかにオブジェクトの
参照が残ってしまうのでは?と愚考した次第なんですが、的外れですかね?
長文、乱文スマンです
0887デフォルトの名無しさん
2006/10/05(木) 12:31:52格納してJSPにfowardすると、自分が開発しているクラス以外のどこかにオブジェクトの
参照が残ってしまうのでは?
それであってるよ。
0888884
2006/10/05(木) 12:52:36thxです。
てことは、Actionクラス内でsessionに格納されているオブジェクトを
明示的に掃除して因果を断ち切ってやらないといけないみたいですね
レスくれた方々ありがとでした
0889デフォルトの名無しさん
2006/10/05(木) 17:30:25そもそもrequestと使い分けるメリットある?
0890デフォルトの名無しさん
2006/10/05(木) 17:38:30扱える
>そもそもrequestと使い分けるメリットある?
ある
0891デフォルトの名無しさん
2006/10/05(木) 18:02:230892デフォルトの名無しさん
2006/10/07(土) 01:36:17ユーザ情報(認証など)の保持は普通はHttpSessionで実装するものなのでしょうか?
0893デフォルトの名無しさん
2006/10/07(土) 02:11:12うん。
0894デフォルトの名無しさん
2006/10/07(土) 23:32:420895デフォルトの名無しさん
2006/10/08(日) 01:27:304〜5年前にPerlで作ったシステムをjavaで作り直す事になり、
tomcat5 + struts1.2 でWebアプリを構築しようとしてます。
設計は、お客さんの会社のSEが担当なのですが、
その会社にはjavaの開発経験がないという事で、
製造は外注であるうちの会社が担当する事になりました。
で、お客さんが出してきた設計書を見ると、
『エラー画面:○○の入力が不正です。ブラウザの「戻る」ボタンで前画面へ戻り、入力し直して下さい。』
のように、ブラウザの「戻る」ボタンを使用するのが前提の仕様になってるんです。
普通、java でWebアプリを組む場合、
・ブラウザの「戻る」「更新」は使うな
・サブミットの連打するな
っていう操作上の制約をつけ、工数に余裕がある場合はJavaScriptで防止する処理を入れたりして、
それでもそれらのボタンが押されちゃった場合は、画面遷移エラーにする、
っていうのがセオリーだと思うのです。今までそうして来たし。
なので、レビューの時に
『ブラウザの「戻る」ボタンの使用は禁止するのが普通です。』
ってお客さんに言ったんですが、
『Perlで出来るのに何でJavaで出来ないんだ。』と言い、納得してもらえないんです。
このお客さんに『ブラウザの「戻る」ボタンは使用は禁止』を納得してもらえるには、
どういう説明をすればいいでしょうか?
ヒント、アドバイスなどあったら教えて頂けますか?
よろしくおねがいします。
0896デフォルトの名無しさん
2006/10/08(日) 01:32:020897デフォルトの名無しさん
2006/10/08(日) 01:33:37お前が今までどうしてきたかなんて客には関係ないだろw
0898デフォルトの名無しさん
2006/10/08(日) 01:36:060899デフォルトの名無しさん
2006/10/08(日) 08:20:57戻るボタンの操作を許容すれば良いだけじゃね?
セオリーにこだわって顧客の心証悪くするのは頭いいとは言えない。
0900デフォルトの名無しさん
2006/10/08(日) 08:48:34・どの画面から遷移してきたか(戻ってきたか)を気にしなくてよい
・以前の入力状態を再現しなくてよい
ということであれば、「戻る」ボタンが使えても問題はないはずなんだけど、
通常は完全に画面遷移をアプリ的に制御したいはずだから、
(セキュリティー的にも何かあったはず)戻るボタンは、使えないようにする
というか、Illegal State Errorへ振っちゃうのが普通だと思う。
0901デフォルトの名無しさん
2006/10/08(日) 11:03:41戻った時の処理はどうだったんだろ?
0902895
2006/10/08(日) 13:34:41>>896
>>897
>>899
確かにおっしゃるとおりです。
>>898
戻るボタンが使えるように出来るか出来ないかといえば、出来ると思います。
ただ、出来るようにしちゃうと、想定した画面遷移以外の遷移をされちゃう恐れがあるから、
出来ないように制御するものだと思ってましたが。。。
>>900
そうですよね。
そのセキュリティー的に何かあったはず、の部分を理論的に説明できれば納得してもらえそうです。
>>901
Perlのシステムは「戻る」を使う仕様だと思います。詳細は知らないですが。
顧客用件だから、「戻る」ボタンで戻れるようにしろ、と言われれば最終的にはそうするしかないんですが、
お客さんのほうも、よく考えた上で「戻る」ボタンで戻る仕様にしたんじゃなくて、
設計書の各画面に自前の「前画面へ戻る」ボタンに関する項目を書くのがめんどくさかったから、
とか何かそういう理由でブラウザの「戻る」を使用するような仕様にしたっぽいのです。
うちの会社の指摘を飲むと、設計書を修正しなきゃいけなくなるから、
わざと納得してないような感じなのです。
セキュリティー的にまずいという説明ができれば、納得しそうな感じですので、
これからそのへんを調べてみます。ありがとうございました。
0903デフォルトの名無しさん
2006/10/08(日) 17:17:39セッション側で適切にプロセス管理すればいいだけのこと。
0904デフォルトの名無しさん
2006/10/09(月) 02:12:05ブラウザの戻るボタンは自由の象徴。
WEBは自由なんだ!
0905デフォルトの名無しさん
2006/10/09(月) 03:31:33ブラウザの戻るボタンなんか、今時許容するなよ。
レスポンスヘッダに no-cache 付けて強制的に戻れなくすればいい。
っつか、そんなんデフォルト常識仕様だ。
>>903 みたいなことしても、客に 100 画面戻って submit したらうまく動かねーぞとか
わけ分からんこと言われるぞ。
だいたい SSL とかにしたら戻れなくなるんだ。
つまりキャッシュ使って戻るというのはセキュリティ的に問題アリアリなんだよ。
0906デフォルトの名無しさん
2006/10/09(月) 14:47:1709071/2
2006/10/09(月) 17:46:26を見ていてみなさんに質問があります。
(長文失礼します)
たしかにインターネットの不特定多数に公開していて、
アクセスも結構あるようなwebアプリだと、画像等の性的ファイルは
apacheに任せると有効なのは理解できます
(さらに外にsquidなどがいると、squidがキャッシュしてくれるし)
ところで開発の段階からこういうことを意識してディレクトリ構成
を考えてますか?(開発を始めるときのCVSのディレクトリ構成など)
それとも結合フェーズからディレクトリ構成を考えてますか?
webアプリのcontextがhogeとすると、以下のようなディレクトリ構成にすれば、
{hoge}\
- index.html
- aaa.html
- bbb.html
+ img\
- hoge.gif
+ WEB-INF\
+ classes\
+ hoge.class
tomcat単体で開発しているときは、
ブラウザからは http://servername:8080/hoge/img/hoge.gif とアクセスできます。
だけど apache連携するときは、apacheの設定で
URL が http://servername/hoge/〜 のように /hoge 以下は tomcat に任せ、
URL が http://servername/img/〜 のように /img 以下はapache に任せたい
ということをしなければなりません。
09082/2
2006/10/09(月) 17:49:17以下の4つの案を考えましたが、みなさんどうやっているのでしょうか?
--------------------------------------------
1.開発時から apache も開発メンバーにインストールさせ、
開発時から、img ファイルは webapps の hoge Context の外に置き、
プログラムからリンクを作るときも "../img/hoge.gif" のように、hoge から上に上ってからリンクを張るようにする。
2.開発時は↑のディレクトリ構成のように tomcat 単体で動かせるようにしておき、
結合時環境にリリースするときから、性的ファイルを apache 配下に置かれるようにデプロイする。
リンク先のトップディレクトリのURLが変わるので、そこはプロパティファイルなどで対応する。
3.そもそも mod_jk や ajp の設定で、/hoge は tomcat に任せるが、
/hoge/img/ は tomcat には任せない ということができますか(できないと思っていますが・・・)
4.思いついたこと:
アクセスがすごい多いサイト等では、webサーバの前にsquidを置き、
キャッシュ(リバースプロキシ)として使っているところもあると思います。
そもそも squid はURL単位でキャッシュしてくれるので、img を tomcat の context配下に
置き、URL が http://servername/hoge/img/hoge.gif となっても、
・初回は Tomcat が画像を処理する
・http://servername/hoge/img/hoge.gif という URL を squid がキャッシュしてくれるので、
2回目は http://servername/hoge/img/hoge.gif 宛てのリクエストは tomcat はおろか
apache へも届かなくなる
・なので上記のようなディレクトリ構成にそもそも悩まなくてもよい
--------------------------------------------
4案の注:
squid を前に置くとき、/hoge 以下はキャッシュの対象からはずすような設定はしますか?
それともそんなことはしませんか?
# Servlerなどもキャッシュの対象にしてしまうと、動的コンテンツもキャッシュされてしまう?
# でもそういうときは、Servletの response ヘッダで Pragm: no-cache とか Cache-Control: no-cache
# を吐いて、キャッシュされないようにする?
レス数が900を超えています。1000を超えると表示できなくなるよ。