■■ Servlet/JSP(EJB含む) 質問スレ ■■
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/06/08 11:03ID:Kkr1yl67というわけでつくたよ。
0422nobodyさん
02/12/06 20:02ID:aSWE3JmD困っていると言うか、疑問なんですけれど、web.xmlで設定した<url-pattern>が、
tomcat単体ではちゃんと反映されるのに、apache経由だと404になってしまいます。
これは正常なことなのか、はたまた僕の設定が甘いのか、ググってもイマイチ
それらしい答えがありません。はたしてどうなんでしょうか?
0424nobodyさん
02/12/07 03:45ID:6B+N2QJlそ、そうか?
0425nobodyさん
02/12/07 03:50ID:NfROD7dM結局、激しくインクルードファイルに分割するってことは
CGIやASPと同じくデザイナーさん泣かせなわけですね。
デザインとプログラムの分離は無理と。
0426miya
02/12/07 08:42ID:dCIzefcY419番さん、ありがとうございます。なんとか理解できました。これで先に
すすむことができます。近いうちにまた壁にぶつかるとおもうけど・・・。
J2EEも勉強しなくちゃいけないですね。
0427バイク犬
02/12/08 09:12ID:???計ってるのですが、やはり、DocumentRootを共有するってのは出来ないん
でしょうか?
webapps以下に、シンボリックリンクでapacheのDocumentRootを置いて
みたのですが、その場合、すべてtomcatに転送されている感じで、phpや
cgiが動きません。cgiはplain/textに、phpはmimeを吐かない書類として
実行されません。
上の方にproxyでとか、mod_jkを利用する方法なども見かけたのですが…
0428nobodyさん
02/12/08 19:32ID:???0429webApp
02/12/09 01:37ID:6eYifm2a複数端末でのユーザの2重ログインチェックを行いたいのですが。
ある端末Aのログイン画面で「user001」というユーザで
ログイン認証を行った場合、端末Aにユーザが
ログインしている間はその端末Aや
他の端末Bのログイン画面で「user001」というユーザで
ログイン認証を行えないようにしたいのです。
セッション変数を使用するという手もあるとおもうのですが、
1つのブラウザの範囲内でしかセッション変数の格納や取得ができないもの
と思っています。
全てのブラウザのセッション変数を管理するようなしくみなどないもので
しょうか?
なにかいい方法がございましたらご教授お願いします。
0430nobodyさん
02/12/09 01:55ID:???DB使いたくないならStateful Session Beans。
0431workaholic
02/12/09 03:01ID:???俺も以前仕事でそんな処理を書いたことあるけど、
>>430 の言うように、さくっとDBで管理したよ。
つーか 完全にClientが別なのに(端末A,端末B)ステ付Session Beansで、
管理ってできるんだっけ???
0432430
02/12/09 11:39ID:???0433webApp
02/12/09 12:20ID:10t8e7Hwあの後、Stateful SessionBeanを調べてみましたが
どうも、別端末からは出来ないようです。
やはり、DBで管理しないといけないですか。
そうなると、ユーザがログアウトした場合を考えると
ログアウトボタンなどで正しい方法でログアウトして
くれる場合はよいのですが、ブラウザの×ボタンを押さ
れた場合、DBの情報を更新することが出来るのでしょうか。
0434workaholic
02/12/09 12:39ID:rnIhPMMejavaScript使って、onUnload(あるいはonBeforeUnload)等のイベント拾って、
「ログアウト」の旨を伝える内容を、自動submit。
それ以外の方法取りたかったら、もっとキっついClientサイドの
処理書かないといけない。ActiveX使うとか。
...っつても、処理内容はjavaScriptでやるのと同じだから、意味無し。
ギャフン。
0435430
02/12/09 13:08ID:???監査証跡の場合によく使う手口です。記録に残るのでタイムアウトでログアウトさせたという明確な証拠として残る。
ちなみに監査証跡にするんだったら、ユーザの1つ1つのアクションすべてに対してロギングするよ。
(いつ誰がどのページに遷移してどんな操作を行ったか、とか)
ユーザ管理(アクセス権管理やログオン制御も行う)+監査証跡という組み合わせって一般的だと思うんだけど。
0436nobodyさん
02/12/09 22:31ID:???まぁ 1 台構成ならファイルでも出来るわな。File#createNewFile() はアトミック性が
保証されてるし。
1) ログイン時に適当なディレクトリに <userid>.lock ファイルを作る。ファイル
作成に成功すればログイン完了、失敗すれば二重ログイン扱い。
2) ロックファイルの作成に成功した場合、File#deleteOnExit() を仕掛けておく。
さらに一定時間経過したロックファイルを削除しなければならないので以下を処理が
必要。
1) ログインが完了したユーザのセッションに HttpSessionBindingListener を
実装したオブジェクトをぶち込んでおく。このオブジェクトは valueUnbound()
時に自分のロックファイルを削除する。
2) 適当なスレッドを立ててロックファイルの最終更新日から一定時間経過したもの
を消すようなサーブレットを作成 (この場合、リクエストのたびに
File#setLastModified() が必要)。このサーブレットをサーブレットコンテナの
スタートアップに登録。init() でロックファイルをすべて消す処理を入れておくと
良い。
ただ、ブラウザの×ボタンを押した時にはしばらくの間ログインできなくなるがな。
2重ログインを防止しようとすると避けられない問題。さもなくば同一 IP からの
2重ログインを許可するしかない。
0437436
02/12/09 22:36ID:???端末には無効なのであしからず。
0438nobodyさん
02/12/10 01:48ID:uIXkTSgkString[][] my_Array = (String[][])rs.getArray("name");
等とすると
「この型は declaration には不適合です。
java.lang.String[][] から java.sql.Array には変換できません。」
と言われてしまいます。配列をキャストする、変換する方法ってないのでせうか?
0439438
02/12/10 04:04ID:???0440nobodyさん
02/12/10 04:05ID:B9fPQtcJJakartaのOROやLog4jなど利用しよと思うんですけど、
今はstartup.shでCLASSPATHをガツガツ追加して動かしてるんですが、
もっとスマートに導入する方法あると思うんですけど、
教えてください。
0443nobodyさん
02/12/10 19:23ID:B9fPQtcJレスどうも。
rpmでインストールしたせいか、$TOMCAT_HOME/lib/に相当する、
/var/tomcat4/libが存在しないんすよ。
とりあえず、/var/tomcat4/shared/classesに入れてみたんですけど
駄目でした・・・
自分でも怪しいとこ探してみます。
どもでした。
0444nobodyさん
02/12/10 23:26ID:???0445nobodyさん
02/12/10 23:43ID:???できない。というより意味がない。<%= %>でだめな理由は?
ELはJSP記述を補完するものであって完全にリプレースするものではないよ。
0446nobodyさん
02/12/11 10:17ID:???どこかに落ちていない?
0447nobodyさん
02/12/11 11:09ID:???http://tool-ya.ddo.jp/2ch/trash-box/
0448nobodyさん
02/12/11 17:42ID:LEQcc0R2来年になったら.NETに押されて過去の遺産になるとかいってるやつが
うちの近所にいるのですが、本当でしょうか?
この前雑誌で見た、ASP.NETのWEBアプリの開発の容易さは大衆受け間違いなしと思うのですが
どうでしょう?
0449nobodyさん
02/12/11 20:46ID:GqIGiZUNJavaにも新しい展開が生まれていくと思われ。
少なくともフレームワークやJSP系は徐々に洗練され
始めてるでしょ。好みはそれぞれだと思うけど。
まあ、もし「.NET」が普及するんであれば、その恩恵で
かつてのVBのような展開で、糞みたいなWebアプリが次々
登場するでしょう。
※個人的にはさらに単価が安くなりそうで鬱。
0450438
02/12/12 01:55ID:???Array my_Array = rs.getArray("name");
String[][] my_Values = (String[][])my_Array.getArray("name");
やっぱり分かりません…
0452nobodyさん
02/12/12 03:00ID:???Array myArray = rs.getArray("name");
Object array = myArray.getArray();
System.out.println(array.getClass());
java.sql.Array#getArray()で返って来る実際の型を調べろ
0453438
02/12/12 17:22ID:???型変換の問題は何とかなりました。アリガトございます。
試しに一次元配列のSQLテーブルを作成し、
Array my_Array = rs.getArray("name");
String[] my_Values = (String[])my_Array.getArray();
と試したところ、問題なく配列を取り出せ、また、二次元配列に
SQLテーブルを作成し直して
Array my_Array = rs.getArray("name");
String[][] my_Values = (String[][])my_Array.getArray();
を試すとやはり
This method is not yet implemented.
となります…postgres.jdbc2ドライバーのせいなのかなぁ…
0454438
02/12/12 17:32ID:???String[] my_Values = (String[])my_Array.getArray();
から
for (int i=0; i< my_Values.length; i++) {
for (int j=0; i< 4; j++) {
ma_Values2[i][j] = (String[])(my_Values[i]);
}
}
これならいけ…るかな…と思ったのですが、SQLテーブルが
多次元な次点で、
This method is not yet implemented.
となります…
0456webApp
02/12/15 01:50ID:WeZJArdXレスありがとうございます。
ロックファイルの案を参考にさせて頂きました。
EASサーバが3台構成なので、DBを使用して二重ログインチェック
を行うことにしました。
1.ログインが完了したユーザのユーザID(ユニーク)、日付をDBに登録する。
登録に成功すると、ユーザ認証成功、登録に失敗するとユーザ認証失敗。
2.ログイン認証が成功したユーザのセッションにHttpSessionBinding
Listener を実装したオブジェクトを格納しておく。
このオブジェクトは valueUnbound()時にユーザのユーザIDに該当する
DBのデータを削除する。
3.アプリケーションの画面で業務終了ボタン等のイベントで、ユーザIDに
該当するDBのデータを削除する。
4.ブラウザの×ボタンを押された場合は、セッションタイムアウト時に、2.
の処理が実行されるので、しばらく待つことになる。
0457nobodyさん
02/12/15 08:45ID:???業務終了って言葉が出てきたからには社内システムだと思うが、×ボタンを押した
時にしばらくその人の作業が出来なくなるのは業務的にまずくないか? あと、
それだけだと WebSphere の再起動や異常終了時にユーザロックが残ったままに
なる。3台のうち1台が異常終了した場合、その1台のセッションを使っていた
人のロックだけをはずす手順は分かるか? ロードバランサーがラウンドロビンとか
だとさらにややこしくなると思うが。
0458nobodyさん
02/12/15 13:22ID:6PApFmgW2重ログインの管理については、DBにログイン情報を登録するのは
良いが、セッションオブジェクトを使うのではなく、単純に、普通のクッキーを
使うのはどう?
クライアントのイベントに依存する処理は、なんか危険。
要は、再ログインをどう許すか?という話なのだから、
1.ログイン時にユーザーに対してクッキーを発行
期間は、適度に永続的にして、ブラウザを閉じても消えないようにする。
データは、鯖が作成するセッションIDを入れる。
また、DBに画面アクセス日付とセッションIDを登録。
2.次回ログイン時に、このユーザーIDがセッション中かそうでないか?を判断
3.もしも前回ログイン時間の間隔がログイン中と判断されれば、クッキーに
以前のセッションIDが格納されているか?をチェックして、もし持っている
なら同一ユーザーと判断し、ログインOK
もし、データがないなら、違うマシンからのアクセスなので、ログイン失敗
4.前回ログイン時間との間隔が、セッションの範囲を超えているならば、
新規セッションとみなして、再度、1の処理を行いログインOK
弱点は、セッションの活性化というか、あらゆる画面のセッションチェックで
DBに書いてあるユーザーログイン時間を更新しなくてはならないこと。
あと、セッションオブジェクトと連動できないため、セッション変数が使うときに
ログイン時に戻してあげる必要があること。セッション変数をシリアライズして、
DBに格納しておく必要ありか?
0459nobodyさん
02/12/20 01:51ID:H52mPG7bセッション変数の値を保持することができません。
あるコンテキストAでのセッションIDとForwardしたコンテキストBのセッ
ションIDの値は同じなのですが、セッション変数が無効になります。
他のコンテキストへは、セッション変数は引き継げないものでしょうか?
0460nobodyさん
02/12/20 01:51ID:H52mPG7bpublic class SampleAction extends org.apache.struts.action.Action {
public ActionForward perform(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
ServletContext context = getServlet().getServletContext();
ServletContext forwardContext = context.getContext("/B");
RequestDispatcher dispatcher =
forwardContext.getRequestDispatcher("/WEB-INF/jsp/index.jsp");
//セッションIDの出力 ← ID0000WJ3VLHFLPNH11MSIGWW4Y3A:-1が出力される
System.out.println("AでのセッションID"+request.getRequestedSessionId());
//セッション変数の格納
request.getSession().setAttribute("test","ok");
//セッション変数の取得 ← okが出力される
System.out.println(request.getSession().getAttribute("test"));
dispatcher.forward(request,response);
return null;
}
}
0461nobodyさん
02/12/20 01:52ID:H52mPG7bpublic class SampleAction extends org.apache.struts.action.Action {
public ActionForward perform(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
ServletContext context = getServlet().getServletContext();
//セッションIDの出力 ← Aと同じID0000WJ3VLHFLPNH11MSIGWW4Y3A:-1が出力
される
System.out.println("BでのセッションID"+request.getRequestedSessionId());
//セッション変数の取得 ← okではなく、nullが出力されてしまう
System.out.println(request.getSession().getAttribute("test"));
}
}
すみません。459〜461です。
0462nobodyさん
02/12/20 13:21ID:umD3XVVz(何文字?)まで設定できるのですか?
なんかわけわからい質問かもしれませんが、回答お願いします。
(いきなり先輩に調べろといわれて途方に暮れてます・・・)
0463nobodyさん
02/12/20 15:02ID:YqeBsIL9自分でsessionid設定するの?
0464nobodyさん
02/12/20 15:14ID:YqeBsIL9最適なデバッグ環境ってどんな設定したらいいんでしょう。
最初自分は適当にサブレ作ってWAR作ってTomcatに放り込んで再起動し、
とりあえず動かしてSystem.outって感じだったのですが、
あまりにウザいので、デプロイは直接Classの保存先を任意webappの
classesに指定し、web.xmlも直で書き換える形にしました。
しかし、デバガとTomcatを連動する方法がわかりません。
やっぱEclipse単体だと、WSADみたいな事はできないのか?
0465nobodyさん
02/12/20 16:46ID:umD3XVVz設定じゃなくて、取得かな?
なんか、sessionIDを取って、取ったIDをDBにInsertするので、
DBのカラムの桁数の設定の参考にしたいそうです。
(DBはOracle9です。)
/* 今までASPしかやったことない(しかも数ヶ月)私にはJSPは敷居が高いなぁ・・・(涙
(でも次の仕事でつかわないといけないし・・・) */
0466nobodyさん
02/12/21 20:12ID:R2Psu5PAWebSphere AES 4.0で、
あるWebアプリケーションから別のアプリケーションにディスパッチを
行う場合に、セッション情報が失われます。
TomCat4.0.4、3.3系では可能です。
WebSphere AES 4.0でセッション情報を引き継がせる方法はないでしょうか?
0468nobodyさん
02/12/22 01:59ID:???とりあえず、 request.getSession().getId().length() を、
どこぞにout。
参考↓
ttp://java.sun.com/j2ee/sdk_1.3/ja/techdocs/api/index.html
0469468
02/12/22 02:01ID:???Servletの doGet (あるいはdoPost) の引数でも良い。
0470nobodyさん
02/12/22 14:08ID:5C2ox88FのところHIDDENフィールドなんですかね?コーディング大変だけど・・・
SessionオブジェクトなんかはCookieを無効にされたら一発でアウトだし、
URL Rewriting はセキュリティ的に問題あるし・・・
0473age
02/12/22 15:13ID:5C2ox88Fあるらしいのですが、見つかりません・・・
どなたか場所をおしえてください・・・
0474nobodyさん
02/12/22 15:25ID:???0475nobodyさん
02/12/22 16:28ID:xvh5bsxKべつのServlet Context(別のWAR)では、Sessionは別になるってことは
Servlet Spec2.2 からの常識だろ。
Sessionを共有したいのなら、ひとつのWARにしろ。
0476nobodyさん
02/12/22 19:24ID:???IBMのWAS使ってるのなら、WASv4.0.4からはEARワイド(WAR間)でセッション共有できる
独自拡張機能があるでよ。WASv5なら最初から入ってる。
0478nobodyさん
02/12/23 13:04ID:sOBBiOysもっとも簡単なテストの方法は何ですか?
Tomcatを再起動させるしかないのでしょうか?
0479nobodyさん
02/12/23 13:51ID:???運がよければ実行される。
Tomcatの再起動じゃdestroy()は走らないでしょ
0480nobodyさん
02/12/24 12:35ID:SRQOAFB0WASv4.0.3を使用しています。
WASv4.0.4のEARワイド(WAR間)でセッション共有できる
独自拡張機能の詳しい資料や参考URLとか、ありませんか。
0481nobodyさん
02/12/24 18:05ID:dttvkCa8>>480
そんなもの、使うな。
Specじゃないけど、用意されているっていうことは、
そのデメリットを本当に考慮している人だけが後ろめたい気持ちで
コッソリと使うものだ。
素人は、素直にSpecどおりにしておけ。傷が広がらないうちに。
0482nobodyさん
02/12/24 23:47ID:???はい。このリリースノートみてみ。
ftp://ftp.software.ibm.com/software/websphere/appserv/support/fixpacks/was40/fixpack4/docs/404rn.html
でも479氏の言うとおりだと思うね。
積極的に使っていい機能ではありえない。
これを前提とするとポータビリティ性は根底から皆無になるよ。
将来的にまたWASがすっぱりこの機能を削るかもしれないことも
考えよう。
おんなじようなものとしては、WASv5でのセッション同期化機能も
そうだろうな。synchronized(session){...}や
synchronized(session.toString().intern()){...}を
しなくてもよくなるというものだろうけど
これも使うときは要注意ではないかな。
0483nobodyさん
02/12/26 16:04ID:eh9DbOkaWASを V4.0.4にしました。
どうしてもWebApp間でセッション共有を行う為に独自の拡張機能を使用したいのです。
V4.0.4の新機能に、
@「Enterprise Application内でのWeb Application間のSessionの共有」
というものがあります。
また、拡張機能として、
A「Provide session sharing across Web modules in an enterprise application」
というものがあります。
これは、sessionshare.xml というファイルをWASのproperties配下に配置し、
内容は、セッションを共有したいEnterpriseAppnamesをカンマ区切りで記述する
と、セッションマネージャーがそのファイルを参照し、Enterprise Application内の
複数のWeb modulesでセッションを共有できるようになるそうです。
実際試したのですが、1つのear内に複数のwebAppを作成した場合は、複数のwebApp間
でのセッションの共有はできるようになりました。
しかし、複数のearにまたがるwebAppでは、セッションの共有はできませんでした。
Aの拡張機能としては、正しいと思います。
@の新機能は、V4.0.4をインストールした時点で使用できるのか、
それとも何か設定をしないといけないのかが分かりません。
ご存知の方、どうか教えてもらえないでしょうか。
参考URL:http://www-6.ibm.com/jp/domino01/software/websphere.nsf/NewsWeb/92
C9F03BD3ADD24849256C210024EFAB?openDocument&&ViewName=NewsWeb
0484nobodyさん
02/12/26 23:03ID:???> しかし、複数のearにまたがるwebAppでは、セッションの共有はできませんでした。
これはできませんよ。設定がどうこうではなく,EAR間の
セッション(HttpSession)共有はありえないのです。
ちょっと考えてみればなぜかはわかると思いますが。
もしそんなことをしたいというのであれば,それはEAR/WARの
パッケージングの粒度を見直すべきです。前提がそもそも
誤っているということですね。そうなるとHttpSessionではなく
アプリ側で独自のセッション引継ぎを実装するしかないでしょう。
0485nobodyさん
02/12/27 00:46ID:JMAqBuKIそのサーバーがファイヤーウォール内にあるので、
逆プロキシで外部からアクセスするようにしました。
しかし、逆プロキシ経由すると、そこで
sessionオブジェクトが消えてしまうみたいなんです。
こういう場合sessionオブジェクトは使えないんでしょうか?
なんとか動くようにしたいんですけど、
なにかいい手はありませんか?
0486nobodyさん
02/12/27 00:53ID:GgzWBaJJhttp://berry6.hp.infoseek.co.jp/
パートナーのいない人は急げ!
まったり、しっとり過ごしましょ(o^.^o)
0487nobodyさん
02/12/27 01:08ID:RsSYigkg「WASv4.0.4のEARワイド(WAR間)でセッション共有できる
独自拡張機能」というのは、
「EAR内での複数のWAR間でセッション共有できる」
ということなんですね。
EAR間ではセッションは共有できない、またできる
べきものではないのですね。わかりました。
どうもありがとうございました。
0488nobodyさん
02/12/27 01:35ID:???ですが対策ありますか?
0489nobodyさん
02/12/27 05:32ID:???どういう状況下でそうなったか、まず書け。
「Servletが」とは「同じServlet」なのか「別のServlet」なのか。
「1回のPOST」は本当に1回なのか。
0490488
02/12/27 12:04ID:???「Servletが」とは「同じServlet」のことです。
それが一度に何度も実行されないように下記の
対策2のようなonsubmitをformに施しております
ttp://www.atmarkit.co.jp/fjava/javafaq/servlet/servlet12.html
しかしサーブレット側ではdopostが2−4回程コールされてしまうので
ござる。
0492nobodyさん
02/12/27 12:14ID:???そのonSubmitに書いたコードが間違っている。
にしてもこのページ良くないなぁ。
なんにも考えない奴がこのページ見たらJavaScript挟むだけでだけで安心しちゃうよ。
クライアントサイドスクリプトなんていくらでも改変・悪用が可能なんだから、
サーバー側での対処は必須。
クライアントJavaScriptはユーザーの利便性向上以上の目的で使ってはいけない。
0494490
02/12/27 12:42ID:???アドバイスありがとうございます
しかしonSubmitに書いたコードが間違っているとは思えないのです
submitを連打した場合はalertで警告を出し、return false;
していて、動きもそのとおりだから。
この2chでも書き込みすると2回書き込まれちゃうときってありますよね。
それを100%防ぐのはムリなんですかね?
あとstrutsに関してこんなサイトみつけました。
ttp://www.freeml.com/message/struts-user@freeml.com/0000867
このようなことはJSP&サーブレットでもできるものでござるか?
0495nobodyさん
02/12/27 13:04ID:???じゃぁネットワーク監視してPOSTが2回飛んでないことを確認したら?
アクセスログでも良いけど。
そうでなかったら受け取ったServletが自分自身のdoPostを余分に呼んでる。
>このようなことはJSP&サーブレットでもできるものでござるか?
できる。
ていうかサーバーサイドで対処する方法なんていくつもあるんだから、
その中から要求仕様に合ったものを自分で選べばヨシ。
0496485
02/12/27 17:51ID:pFyW/X+iプロキシがセッションidを削ってました。どうもです。
Apacheのmod_proxyを使ってるんですけど、
削らないように設定する方法はわかりませんか?
あと、セッションidが削られるのを直せないとしたら、
sessionの代用は何をつかうのがいいでしょうか?
Stringを1つ保存するくらいなんですけど、
やっぱりクッキーでしょうか?
0500_
02/12/29 12:12ID:LE3o8C1xhttp://freeweb2.kakiko.com/dengeki/indexe.htm
0501nobodyさん
02/12/29 12:14ID:???0502497
02/12/29 13:30ID:TRvxBQ36>その場合ユーザー認証はどのようにして
やっぱりDB使うしかないんじゃないかな。
そういうケースとか、"ロードバランサかましてる"時とか、
Session情報を保持できない時の常套手段。
0503nobodyさん
02/12/29 13:52ID:???ここの連中はアホばっかり?
Cookie使えないならURLリライティング使えばいいだろ
DB云々なんてのは全然関係ない、レイヤの違う話。
0505497
02/12/29 15:20ID:5NDJvXMbあのね、漏れは、>>499 の
>その場合ユーザー認証はどのようにして実現します?
の、問いに対して「自分だったらこういうアプローチを取る」と、
答えただけなんだけど。...ていうか仕事で実際そうしてるし。
501=503 ?? 自分の意見が無視されたのが、そんなにくやしいのかね。
ていうか、「ユーザ認証の処理」に対して「URLリライティング」を適用するっていうのを、
>>499に具体的に提示してやれよ。それこそ、「レイヤが違うん」じゃないの?
話聞けよ。アホ。
0506nobodyさん
02/12/29 15:54ID:???「DB使うしかない」なんて更に見当違いの話持ち出したってそれこそ泥沼だな・・・
Sessionさえ維持できれば497が既に知ってるであろうユーザー認証の手段が使える。
>の、問いに対して「自分だったらこういうアプローチを取る」と、
>答えただけなんだけど。...ていうか仕事で実際そうしてるし。
DBを使うことと認証がどうしてリンクするの?
きちんと理解できてないのならもう少しよく勉強した方がいいよ。
DB?コンテナが用意してくれているセッション管理の機構を自分で再実装してるのかね(笑
それともユーザー名とパスワードをリクエスト毎に持ちまわってるのかね(笑
0507497
02/12/29 20:30ID:V00Mpbw5>DBを使うことと認証がどうしてリンクするの?
確かに話飛び過ぎたかもしれんが、漏れがやった具体的な方法というのは
(>>506がシステム屋なら知ってると思うが)一般的に「そのWebシステムを使用するユーザ(例えばその会社の社員)」についての
情報ってのは、普通ソレ専用のDBに溜めてある。
で、単純にAPサーバにあるWebシステムに「ログオン」する時に、そこに保存してあるIDやパスとの比較を
行い、以降の処理を行う。
...っていうか普通のSEだったら、こんなの「何あたりまえの事言ってんの?」って感じだと
思うんだが...。
で、この後、
>Sessionさえ維持できれば497が既に知ってるであろうユーザー認証の手段が使える
これって、要するに「ログオン状態(State)の変遷の保持」の事言いたいんだよな。
で、ここでポイントになるのが漏れが>>502で言った、
「ロードバランサとかかましている時」=「Session状態をC/Sで一致させる為の手段が無い時」
に、どうするのか、って事。
いくらURLRewrite使ってもさ、もしロードバランサとかでAPサーバ振り分けられちゃったら、
「そのSessionIDに一致するインスタンスがサーバにない」って事になるよな。
(つーかクラスタ組めばいい感じになるAPサーバも世の中にはあるが)
要するにだ。もう一度>>502の漏れの書き込みを読んでみろよ。漏れの経験上の一意見として、
>そういうケースとか、"ロードバランサかましてる"時とか、Session情報を保持できない時の常套手段。
として、DBを使うって、言った、んだよ。
お前、実務経験無いだろ。学生か?
0508497
02/12/29 20:41ID:V00Mpbw5自己レス。すまん。つーか「状態変遷の保持」。つまり、>>506が>>503で言った
>どうしてSessionそのものとSessionを維持する手段を分けて考えられないのかね。
漏れは「Sessionが維持できない」ケースとして、例を出したんだよ。「こんな事あったな」って。
でその時はログオン後、仕方が無いので、要所要所でDBから読んで処理した。
(全部のWebページ毎、では無いが)
特に、インターネットに接続された外部のユーザがアクセスしてくる
システム(ただしそれほどクリティカルでない)で、かつそれぞれクラ環境がバラバラで、
Cookie使用禁止な所もあれば、プロキシの設定がアレな所もある。
最初は普通にSessionで管理していたんだが、客側の都合で「このままで動くようにしてくれ」
言われてしまった。で、こんな処理を書いた訳だ。
実際Sessionで管理できれば楽なんだけどな。ま、こんなケースもあると。
0509nobodyさん
02/12/29 22:40ID:???0510nobodyさん
02/12/30 01:22ID:???>>502
>>その場合ユーザー認証はどのようにして
>やっぱりDB使うしかないんじゃないかな。
「その場合」で無い場合(=Cookieが使用できる場合)のユーザー認証に
DBは必須ではないような書き方ですね。
>情報ってのは、普通ソレ専用のDBに溜めてある。
へー「DB」っていうのはそう言う意味で使ってたの。502と矛盾してますよ。
しかしずいぶん程度の低い話になったね。
>で、ここでポイントになるのが漏れが>>502で言った、
>「ロードバランサとかかましている時」=「Session状態をC/Sで一致させる為の手段が無い時」
>に、どうするのか、って事。
話がすり替わってるよ。
いつの間にこんな特殊な(※)環境の話になったのかね。
409の環境に関する情報は「Cookieが使えない」ぐらいしか出てないようだけど(笑
※素朴なServletコンテナの実装からすると特殊な、という意味ね。念のため
>お前、実務経験無いだろ。学生か?
実務経験あってもわかってなきゃ意味ね−な。理解してる学生バイトの方が数倍使えるよ(笑
0511497
02/12/30 03:37ID:5wRLF/Jd今このスレ遡って読み返してみた。正直な話、いつの間にか話飛んでたよ。
間違いがあったのは認める。...ムカつくけどな、お前。
ガキの噛み付き方丸出しだし。
(って、それに煽られて興奮気味になんだかわからない事書き込みしてる漏れも相当ガキ丸出しだが....)
つーか元の話ってのは、「Sessionが削られている」から始まって「ユーザ認証ってどうしてます?」
って話だろ?
それで、漏れは>>508に書いたような事が勝手に頭によぎってそう書いたんだよ。
つーか「理解してる学生バイト」(ちなみにシステム屋で学生バイトなんているのか?)
ならわかると思うが、
>話がすり替わってるよ。いつの間にこんな特殊な(※)環境の話になったのかね。
と思うなら、
>へー「DB」っていうのはそう言う意味で使ってたの。502と矛盾してますよ。
矛盾なんて無ェだろ。
つーか、もう、なんか元の話と関係無くなってるので、この辺で。
他の方々、アホさらしてすんません。
0512初心者
02/12/30 07:07ID:UlqXA/Qv>>34や>>55で紹介されてる、
Apache_1.3.22-Mod_SSL_2.8.5-OpenSSL_0.9.6b-WIN32.zip
OpenSSL-0.9.6c-Windows.zip
jakarta-tomcat-4.0.3.zip
の3点をうぷして頂けないでしょうか?
後、>>55さんのページに書かれてた LawWebOffice モジュール とは何ですか?
これも必要なんでしょうか?
よろしくお願いします。
0514nobodyさん
02/12/30 17:21ID:???不毛な争いはちょっと置いといて...。
>>512
とりあえず
Apache関係の日本の総本山 → http://www.apache.jp/
JAKARTAプロジェクト関係の日本の総本山 → http://www.ingrid.org/jajakarta/
行ってみれ。
0515まーまー
02/12/30 17:36ID:???オレもSEのはしくれなので言いたい事はわかるんだけど、
相手の環境考えなきゃ。それこそその筋の人間なら、頭の中で話つながるんだけど、
自宅でサーバ立てようって向きには、「何言ってんの?」って思われても仕方が無いと思う。
>>510
Sessionと、Session維持を分けて考えろとか、良いとこ突っ込んでんだけどねー。
君、口悪すぎ(笑)
肩持つ訳じゃないけど、511は本人も言ってる通り、「そういう例」を
ただ何の気無しに言ったんだと思うよ。経験した話として。
たぶん、これってただそれだけの話。
0516初心者
02/12/30 17:42ID:UlqXA/Qv直でぐぐってもヒットしないし、>>514さんの辺りを見ても中々見つかりません。
0518初心者
02/12/30 22:14ID:UlqXA/Qvバージョンの違う奴なら落として>>56のページを真似してみたんですけど、
どうしても上手く起動しません。
Apacheのhttpd.confの継ぎ足した所のSSLについての部分でエラーが起きている
みたいなんですが、ページに書いてあるのと同じバージョンなら上手くいくので
はないかと思いまして。
0519nobodyさん
02/12/30 22:28ID:???質問者は仕方ないとして、答えてる奴の8割くらいは、ただの素人だな…
たまにマトモな奴もいるようだけど…
0520nobodyさん
02/12/30 22:32ID:???Apache2.0系とApache1.3系はモジュールの実装の仕方が違うぞ!
ついでに、Tomcat3.X系と4.X系も違う!
古いバージョンが欲しいのなら、>>517 のサイトをくまなく探せ!
必ずあるから!
0521初心者
02/12/30 22:48ID:UlqXA/Qvありがとうございます。
Apacheは、Apache_1.3.27-Mod_SSL_2.8.12-OpenSSL_0.9.6h-Win32.zip
SSLは、OpenSSL-0.9.6h-Win32.zip
Tomcatは、jakarta-tomcat-4.0.6.zip
を解凍して使用しました。
http://members.tripod.co.jp/emasuken/open/apache_mod_ssl_tomcat.txt
の通りにしようとしたら、出来ない所がいくつかありまして。
たとえば、c:\app\opensslの下にbinディレクトリは存在しませんでした。
>>517のサイトも、もう一度まわってみます。
■ このスレッドは過去ログ倉庫に格納されています