WebObjects 2スレ目
レス数が950を超えています。1000を超えると書き込みができなくなります。
http://www.apple.co.jp/webobjects/
http://www.apple.com/webobjects/
前スレ
http://pc.2ch.net/test/read.cgi/php/989562708/
0858nobodyさん
02/06/10 00:16ID:???じゃオマエは一生プロトタイプ作らなきゃいいじゃん。
手戻り一切ナシでやれるってんだから尊敬してやるよ。
ちなみにどうやったらそんなパーフェクトウォーターフォール
プロジェクトを毎回完遂できるのか、アホな俺に是非教えてくれ。
0859nobodyさん
02/06/10 00:30ID:???コーディングしかやったことないんだろうな。
付け焼き刃の知識でアップアップして、正論レスが入るたびに
頭をかきむしってる姿が目に浮かぶ(藁
0860nobodyさん
02/06/10 00:40ID:???プロトタイピングを実施するかどうかはプロジェクトマネジメントの話。
この程度の区別もつかない素人には、WOはおすすめできないってこった。
0861nobodyさん
02/06/10 00:42ID:???0862通りすがり
02/06/10 01:20ID:???モノづくりは試行錯誤か。生産性低そう。
一度、大手の会社に就職して常識を覚えることをお勧めします。
では、さようなら。
0863nobodyさん
02/06/10 01:26ID:???はい、さようなら。
キミは疲れているようだね。
一度、IT業界から完全に離れてみることをお勧めします。
WOがやりたくなったら、いつでもここに戻ってきたまえ(w
0864nobodyさん
02/06/10 01:38ID:???設計段階で全てにおいて誤謬無く仕様を確定できているんだね。素晴らしい!
では君の書いた設計というのはコーディング段階で決して変更は発生
しないんだね。開発に入ってから要件漏れが発見されることもないんだね。
ちなみに顧客の要望が変わったから、なんてのも手戻りには変わりない
ってこともちゃんと判って書いてるんだよね。これらを一切の実装ナシで
どうやって確定しているのか是非教えてよ。XPもRADも不要なんだよね。
当然HTMLだけによるモックアップももちろんナシだよね。机上だけで
全て確定させているんだよね。もちろん大規模Webシステムだよね。
それと、大手のSI企業の常識が顧客の望むものと必ずしも一致しているわけ
ではないことも理解して書いてるんだよね。その辺のギャップをしっかりと
埋めているからいえるんだよね。
いや、本当に教えてよ。もしそれが本当に出来ているんだったら、
年収2000万円でうちが君を雇うからさ。数億の案件が机上のみで迷走せずに
要件確定できるんなら安いもんさ。ほんと頼むよ。是非教えてくれ。
0865通りすがり
02/06/10 01:41ID:uSfKtvBB単純な見積もりでおおよその検討がつく単純な仕事しかしたこと無いのか。
発展性なさそう。
もう年齢的に限界が近いと思うから、転職して業種をかえることをおすすめします。
では、さようなら。
0866nobodyさん
02/06/10 01:49ID:???>>862をそんなにイジメるなよ(藁
死者に鞭打つようなお遊びより、元の技術話しに戻ろうぜ(w
0867nobodyさん
02/06/10 01:56ID:???>いや、本当に教えてよ。もしそれが本当に出来ているんだったら、
>年収2000万円でうちが君を雇うからさ。
NTTデータなどのいわゆる一次SIの上級SEは実際にやってる。
それで現実に社内経費(給料も含めた社員1人あたりの費用)としては
上級SE1人あたり年2000万かかることになってる。
彼らは一切コーディングせずに設計書を下請けに出すことで仕事を
回しているよ。
ただし、そういう人種とWO使いを一緒にしていいかは疑問。
0868nobodyさん
02/06/10 02:06ID:???客には、WOだろうがPerlだろうが関係ない。
目的の成果物がより高品質かつ安価かつ短期間で出てくればいいだけだし。
悲しいかな日本では、AJが本腰入れてないから、なかなか認知されないんだよね。
おかげで日本語文献が少ないから、新規参入組の習得を妨げるし。
AJのセミナーとかに逝くと、簡単にWebアプリが作れるなんていうけど、
平均的なWeb開発者には、「実用レベルのサイトを簡単に」とはいかないのが現実。
AJは、このままの扱いを続けるのかな。
0869nobodyさん
02/06/10 02:16ID:???いや、そういうことではなく、開発工程に入ってからの試行錯誤を
一切不要とすることが本当に可能かということ。仕様書だけで全て
確定させて、コーディングに入ってから「こんな設計でPG組めるかゴルァ!」
ってのが全く起こらない、そして顧客との要件定義における誤解が一切生じない
っていうのが魅力なの。
実際のところ、ペーパーベースでお互いに了解したつもりでも、いざ動いて
見ると、実は違うとか言った言わないって出ちゃうじゃん。それを防止するための
プロトタイプだし、技術的要件っても使い勝手が本当に企図したとおりに
なるのかってのも立派な技術要件だしね。この辺って昔のメインフレーム
のようなダム端時代ならともかく、今のWebのGUIで本当に机上だけで押さえきれる
のか疑問なんだよ。交渉で押し切るとかそういうのとは別の話としてね。
ちなみに人件費および販売管理費の合計としての個人別経費と年収は別ね。
年収として2000万円払っても安いと判断するんだよ。本当にそれが可能ならね。
そんなスペシャルなことができるのであればWO使わなくても構わないよ。
0870nobodyさん
02/06/10 02:33ID:???WO使い=土方
一次SIer=エリート
ってことだね。
0872nobodyさん
02/06/10 02:54ID:???論負けして「さようなら」なんて言った割には、すぐに戻ってきたな(プ
お前、客の無理な要求に対して「できません」って言うだけで、
「じゃあどうする」とか代替案とかを提案できないタイプだな。
自分の考えとか価値観に合わない存在を否定するだけで、受け入れようとしないタイプ。
開発者としても客としても、一番使えないタイプだ。
端から見ていて非常に哀れだから、その辺でやめといたほうがいいぞ。
0873初期不良
02/06/10 03:15ID:???見通しが立たないよね。
とか言う俺はプロト作って見せてこんな感じであってます?
とか聞いたりして、さあこれから本番だと思っていると
これで十分とか言われてお終い、のような仕事ばっかり...
ひよっこです...
0874nobodyさん
02/06/10 08:11ID:???マカー特有の人格攻撃発見!!
論負けすると「あいつはこういう奴だから・・・」と人格攻撃を
始めるのがマカーの特徴。
ついでにこのスレも糞スレ決定!!
所詮お前らマカーに技術論だけのスレなど無理無理。
一生、差別されて人格攻撃して生きてく運命なんだよ。
まあ、糞スレで死ぬまで誹謗中傷合戦やってろや。
0875りお
02/06/10 08:26ID:mR3YLLAa政治的な話はおれっちにはニガテだ。
つーわけで、アダプタの話をそのうち。
0876nobodyさん
02/06/10 09:15ID:???実際問題、今仕事してるとつくづくWOって土方仕事だなあって思うよ。
うちに来るときはとにかく即戦力を求められてる場合が多いし。
昔は流行の先進を走る自負みたいなもんがあったけど、今はそれもない。
これだけやってこの先永遠に生きてい行けるとは思わないけど
とにかく食うために楽に出来る方に手を出してしまうんだな。
0877nobodyさん
02/06/10 09:55ID:apG0GDha0878nobodyさん
02/06/10 10:55ID:???オブジェクト指向なんて言葉を知らないドキュソどもが、サンプルソースや
社内のドキュソ先輩どもが残したソースを参考に、クソコード書いてます。
他部署だとWeb球やってますけど、そこも一緒。
ドカチン仕事は、だいたいどこも一緒でしょう。
少なくとも、WO使えるだけでもマシだと思いますよ。(漏れも仕事でやりてえ)
0879nobodyさん
02/06/10 18:51ID:mR3YLLAa0880nobodyさん
02/06/10 22:17ID:???WebObjectsを使いたくない奴はくるなよ。
批判されてもいちいち相手にするのはやめまっしょい。
まじで頼むWO-!
0881りお
02/06/11 01:22ID:WRP1UF4CApache1.3.*でAPIアダプタを使用する場合、CGIアダプタは基本的に必要ない。
なんで、Deployインストール時にcgi-binディレクトリを要求してくるが、
基本的にAPIアダプタを使うんであれば、設定する必要はない(returnを押しておく)。
APIアダプタとcgiアダプタの大きな違いは速度差と負荷分散をやってくれるかどうかの違い。
速度差はマシンが劇速だったら気にならないかもしれないけど、負荷分散が
少しネックになる。つーのも、マルチインスタンスでアプリを稼働させている場合、
CGIアダプタは受け取ったリクエストを、インスタンスの稼働状況によって
送付先を自動でやってくれないのだ。APIアダプタはJavaMonitorで設定した
負荷分散のアルゴリズム(デフォルトはラウンドロビン:アプリのメモリ使用状況や
一定時間観測したアプリの付加状況をみて軽いやつにリクエストを投げる
ちょっとエラいアルゴリズム) に、従ってリクエストを投げる。
Apacheが使えるんだったら、悪いことは言わないからAPIアダプタにしておけ。
0882りお
02/06/11 01:32ID:WRP1UF4Cあ、ごめん、↑は、>>845だ。
あと、ビルドエラーの件。
API module structure `WebObjects_module' in file /usr/local/apache/libexec/mod_WebObjects.so is garbled - perhaps this is not an Apache module DSO?
が出るということは、ApacheのバージョンによってはDSOのライブラリ(って言い方にしておく)
がビミョーに異なるから、Apacheのバージョンごとにアダプタはビルドした方が良い。
ソースが一緒にインストールされるハズだから、makefileをいじってコンパイルしろ。
Solarisの場合、自分でgccとか用意しなきゃダメだが、ま、Solarisいじってんなら
ハナクソほじりながら出来るわな(勝手な…
>>846
WebObjects5.1.3なんて出てるのか。おれっち下界の情報はなるべく仕入れてないから
気づかなかったよ(w デッドロックについてはテクノロジックのMLでタツヤって人が
ちょっと前にじっくり検証したありがてぇ情報があるから、そっちよめ。
あとオムニのMLにも腐るほど(じゃないが) ロックに関する問題があげられている。
おれっちからすれば、普通にアプリ作ってるぶんには問題ないとおもっているんだがな。
0883りお
02/06/11 01:35ID:WRP1UF4Cどうでもいいんだけど、ザ・ブルーハーツってバンド知ってるか?なかなか、イイよな(年がバレる.
リンダリンダとか聞いていると元気でるよな.
>>843
あぁ、確かに、JSConfirmダイナミックエレメントは、ネスケとIEでは
展開されるは同じだけどJavaScriptの解釈の違いで、ネスケにはJavaScriptの
ダイアログは表示されないみたいだなぁ。こりゃ、Appleが悪い。
JSConfirm使わずに、自分でタグを調整するしかない。ま、ここらへんは
Webアプリ屋だったらJavaScriptはチンカス掃除しながらでも出来るだろうから(なんていう言い方(´Д`;)
実行結果のHTMLで確認すべし。
0884りお
02/06/11 01:46ID:WRP1UF4C入れた状態で、WebObjectsアプリをいれてWASなんかでリクエストを1分ぐらい
投げた場合、ActiveSessionCountが2000を越える。ローカルだから
これぐらいの数字出るんだけど、オモテに出した場合その半分としても
1分間に1000セッションの受付をしてくれるってぇ計算だよな。。まぁJavaのアプリケーション鯖で1台で処理すんのにこれぐらいだったら満足の領域か。
もちろんコンポーネントやらEOFのキャッシュが効いた状態での話しだ。隣にデカいツラかましてる
SunEnterpriseが哀しく見えてきた(´Д`;)
0885nobodyさん
02/06/11 02:17ID:iBLx4cP8明日、納期のソフトです♭
じぃつはまだできてはいませんがぁー、嘘でも出さないとー♪
> 隣にデカいツラかましてるSunEnterpriseが哀しく見えてきた(´Д`;)
データベース以外に、CPU追加できるサーバーを入れる気がしないこの頃。
ASやWEBはラウンドロビンして台数追加で結構、パフォーマンスあがるし・・・
つか、パフォーマンスが問題になるよーな、まともな仕事くれ(w
0886梨@WOスライムLv1
02/06/11 03:12ID:iOfGGC4vMacOSX版の方が使いやすいと思うんだけど、慣れると大差無いのかな。
あと、Linuxで運用するのが普通なのかな?
Windows+Apacheは使わない? それともみんなSun?
>>884
Javaが重すぎるんだよ、と言ってみるPHP厨房。
0887nobodyさん
02/06/11 06:53ID:???継続して開発してるときはWin版のままだったりするなー。
5.1で全く新規の仕事があればコソーリMacでやってみてもいーなー。
運用はここではりおタンが赤帽萌えだからそうなってると。
別にIISでもXserveでもいいじゃん。
0888nobodyさん
02/06/11 08:44ID:zyG7rdhNコレだからこっちにしろなんていう意見ある?規模的には3000ユーザーぐらいが使うもん
なんだけど・・・(あっ内はなく外で運用ね)
0889
02/06/11 10:08ID:1uC67cjOどーすんの?
SaveChanges()は全部いっぺんに保存しちゃうんだけど。
0890nobodyさん
02/06/11 10:20ID:???いい番号だな。
XServer はまだブツがないだろ?初期ロットはデベロッパ向け評価用とおもわれ。
コケて困るようならひとまずやめといたほうがよかろ。チャレンジするんだったら
うまく動いたかどうか是非お教えくだされ。
V100 は未経験。X1 はとてもうまく動くぞ、当たり前だが。本体は安いがメモリ
は高め。1G とか必要なんだったら結構金がかかる。まぁ、たいした額ではないがのぉ。
安くて速いのが欲しいのだったら Intel で行けばよかろう。Linux が原因と思
えるコケはまだ見たことがない。動作には心配はいらないじゃろう。速い CPU の
マシンがあるので V100 とはかなりの性能差がある。かなりクロックに比例した
差がでるようだ。V100は 500MHz SPARC IIe だな。
0891りお
02/06/11 20:34ID:???WinXP、JDK1.4、Apache1.3.24にWO5.1のインストール、5.1.3のアップデータ
この構成でのインストールは問題なくできた。アプリの実行も今のところ問題なし。
劇的に速くなったとか、そーゆーことはないけど単に最新環境で試してみたくなっただけ。
なんかインストールヲタになっちまった気分だ。
あそうだ。ソラリス9もこのあいだゲットしてCD-Rに焼いたから試してみるワ。
独り言みたいでスマソ
0892りお
02/06/11 20:45ID:???おれっちは窓2kで開発してる。OSXは自宅にあるけど、あまり使ってないナァ。
機能的にはOSXの方がいいかも。CVSに対応してるしな。窓版のPBもなんとかしてくれ>>apple
運用環境は自分の好みとクライアントの政治的背景とコストを考慮して選んだ方がいいな。
マク大好きでまだ実績がないXServ.やOSXで提案すると嫌われるぞ。クライアントじゃなくて
それを知ったやつらがそこらじゅうに言いふらすから(w
まじめな話、Solarisか窓2kだろ。LinuxはAppleのサポート外だから手前で全部
責任持つんだったら入れてもいいかモナー.
>>888
利用者3000人ぐらいだったらどれ使っても同じじゃん?レスポンスの速さは
そりゃ早いほうがいいけど、メモリ1Gぐらい積んでインスタンす4つでアプリの
ヒィプサイズが256ぐらいずつにしておけば、マシンスピード要求されるところって
たとえば大量のデータをフェッチして何かしらの加工をEO含めた形でやったり
する部分だから、予算が許されて客が安心するんだったらSunかも。
1台しかマシンなくって速いやつ要求されているんだったらDellでLinuxか。
(でも前にいったとおりAppleのサポートないから全部自分で責任背負う覚悟をきめるべし)
外で運用すんだったら、マシン増やして負荷分散させることを視野にいれた
マシン構成にしたいところだ。
しゃべりすぎた、スマソ
0893りお
02/06/11 20:51ID:???ん、いい質問だ。
SaveChangesはecにレジストされている内容をすべて更新する。特定の
ヤツだけ(たとえば商品AだけのEOを保存)なんてことは普通にsaveChangesを
実行するだけでは難しい。
残念ながら、すでにecにレジストされているEO'sの特定EOをsaveChangesする
メソッドって、用意されてないっぽい。
仕方ないので、MutableArrayに持たせたり、CustomEOJavaクラスにメソッド追加
するなり、コーディングで何とか対処するのがよいかもしれない。
答えになってなくてスマソ。
ただ、ecにはレジストされているEOをinvalidateするためのメソッドが
用意されていて、revert()や、invalidateAllobjectsする必要がなくなる
メソッドが用意されている。EOGlobalIDを取得したりとちょっと面倒な
ことするけど、ecを細かく制御するには知っておいたほうがよい。とりあえず
ヘルプ嫁。
0894nobodyさん
02/06/11 21:25ID:???>WinXP、JDK1.4、Apache1.3.24にWO5.1のインストール、5.1.3のアップデータ
>この構成でのインストールは問題なくできた。アプリの実行も今のところ問題なし。
XPでWO-Dev版いれたとき、Build&Run時にブラウザ自動で立ち上がる?
実行時ログに、「このOSはサポートしてないよん」みたいなメッセージが出てない?
0895りお
02/06/11 22:03ID:vAr8H2fsあれ?おれっちンところじゃ、ちゃんと起動するけど??XPいれたままで
IEとかヴァージンアップしてない。実行時ログってどんなのでる??
0896nobodyさん
02/06/11 22:40ID:mCMWn40Gクラス化するとKeyValueのアクセサメソッドがNumber型になりますよね?
これにユーザー入力の数字(Stringをintに変換したもの)を保存したいのですが
どうやってintをNumber型に渡せばいいのかわかりません。
a = int(10);
setMyField((Number)a);
-----
public void setMyField(Number value) {
takeStoredValueForKey(value, "myField");
}
0897nobodyさん
02/06/11 22:44ID:???こんな感じなのよ。
# [2002-06-11 22:40:15 JST] <main> Your application is not running on a supported development platform. AutoLaunch will not work.
WinXP, JDK1.4, WO5.1, 5.1.3ウプデータンという環境。
OpenBase関連のサビースは、ぜんぶ止めてある。
XPのWindowsUpdateは、割とこまめにやっちまった。。。
0898りお
02/06/12 00:09ID:bMhzmpUAsetMyField( new Integer(a));
とするほか無いと思うのだが…
(Javaの本をもうちっと嫁ばわかる.結城センセの本がいいかモナー)
>>897
むぅ、はぢめて見るメッセージだ。あれ?アプリ自体は起動してるんだろ?
ブラウザからマニュアルでURLタイプしてアクセスできねぇか?
0900nobodyさん
02/06/12 01:41ID:???そもそもec内の特定eoだけdbに変更を反映させたいという欲求が出る
シチュエーションがよくわからんのだが、りおタンと同じく直接やる方法は
知らない。ただ、lockを気にしなくていいなら、新しいecを作って
EOUtilities.localinstanceOfObject() ←うろ覚え
で引っ張り出すことは出来る。返されるeoはrefaultされてるので、
値は設定しなおす必要があるかも。
0901896
02/06/12 01:50ID:???できました。ありがとうです。
私はWebObjectsではじめてJavaにさわったので、こういう些細なところでつまづいてばかりです。
MLでは聞きずらいけど、調べてみるとなかなか見つけにくかったりなので、ここには感謝してます。
お給料アップの為に日々精進!!
0903nobodyさん
02/06/12 05:03ID:???度量広さというか、人間の暖かみを感じる良いスレだと思いました。
ホント『頑張って、勉強しなきゃ』って、やる気を起こさせる様な感じで、
読みはじめたらやめられなくって、つい徹夜してしまったっす(笑)。
しおりを兼ねた、感想スマソ。。。
0904りお
02/06/12 10:44ID:ieem4m0p動作の保証はしねーけど、EOEditingContextに、saveChangesInEditingContext
ていうのがあるから、ecをうまく制御すれば何とかなっかモナー。
deadLockしないように注意が必要だが。
0905りお
02/06/12 21:39ID:ieem4m0pビクーリしたよ。
0906りお
02/06/12 21:45ID:ieem4m0pぃゃぁー、恥ずかしいなぁ(←誇大妄想炸裂
気にせず何でも聞いてクレー.
0908りお
02/06/12 23:20ID:bMhzmpUAWOPortとは関係なく、別のポートがぶつかっている可能性も。
-WOPort オプションで2000だとか適当なポート番号で起動することはできるか?
0909nobodyさん
02/06/12 23:48ID:???りおタン、ポート指定しなくても、ログのURLをブラウザにコピペすると動くんだよ。
デフォのブラウザをモジラにしてみたけど、結果は同じだった。
0910903
02/06/13 00:02ID:???レスわざわざ、サンクスです。サンクス!
でわ、またvol.1の続きを、読みに行ってくるっす(笑)。
0912nobodyさん
02/06/13 01:15ID:CQVzkEJeない場合、あるいは、キーボード操作がなれている人は、
TextBoxを入力します。マウスの好きな人はPopUpButtonを
使います。
というユーザーインターフェースを作ってます。
二つとも同じDBフィールドにバインドしたいのですが、
どうすれば良いでしょうか?
(両方に文字列が入力ならTextFieldを優先とします。)
あと、このようなユーザーインタフェースは変ですか?
Webでなければ、TextBox+ComboBoxの複合コントロール
があるのですが、Webにはないので。。。。
0914nobodyさん
02/06/13 01:29ID:???負荷分散してくれるんですよね。この場合、セッションの
整合性はどうやって保たれるんでしょうか。
・URL の後に続く QueryString に、最初どのサーバに
繋がったかという情報も含まれていて、セッションが
保持されてる間はアダプタの方で同じサーバに振って
くれる。
・セッションのインスタンスの複製が全ての
アプリケーションサーバに生成される。
・その他
0915nobodyさん
02/06/13 02:36ID:???・URL の後に続く QueryString に、... が普通です。とくに
何もしないとこうなります。
・セッションのインスタンスの複製が... も可能ではありましょう。
この場合アプリはセッション情報を外部の(共有可能な)場所、
例えばデータベース?などとやり取りするコードを自前で用意する
必要があります。もちろんそれなりに高速なものをですが。
これを実装するためのインタフェースは用意されてはいます。
また、アダプタが割り振りを行なわないように設定することも
できるようにはなっています。
心配な点はもありますが、一応大丈夫らしいです。
0916nobodyさん
02/06/13 05:32ID:???実行イメージ(WOでは個々のこれをインスタンスという)を識別する数値が
埋まってます。ttp://store.apple.com/1-800-MY-APPLE/WebObjects/AppleStore.woa/
ときて.woaの後に付く数値がそれです。
インスタンスは各鯖にひとつとは限らない(というか複数設定するのがフツー)
ので、同じサーバに繋がるのは必要条件でしかないことに注意。
0917nobodyさん
02/06/13 05:37ID:???コピペしたURLの形式はどっち? あるいはこれ以外?
http://host:2001/cgi-bin/WebObjects/MyApp.woa
http://host/cgi-bin/WebObjects/MyApp.woa/-2001
0918nobodyさん
02/06/13 09:40ID:???ちょっと聞きたい。
インスタンスが複数あって、アダプタを介してセッションが張られると、
URLのセッション情報で整合性を保つわけですよね(アダプタが負荷分散などを
やってくれる、と)。セッション情報がサーバーで複製されて共有されると
なると、例えば特定インスタンスがゾンビになってアクセス不能になった場合は
他のインスタンスに対してそのセッション情報が引き継がれて、ユーザーには
何事もなかったかのような振る舞いが可能。ということですよね?
WebObjectsが持つ標準の機能では多分、上記のことは出来ないと思っています。
ただ、
>この場合アプリはセッション情報を外部の(共有可能な)場所、
>例えばデータベース?などとやり取りするコードを自前で用意する
>必要があります。もちろんそれなりに高速なものをですが。
>これを実装するためのインタフェースは用意されてはいます。
とあるので、上記のことが比較的簡単に実現できる、とすれば上段抜きでWebObjectsは
すさまじいと思います。(マカー的に言うとWebLogicなんぞ目じゃないです。ホントに)
願わくば、実装するためのInterfaceなどの情報を教えていただきたいのですが。
どこかにサンプルなどありませんか。
0919nobodyさん
02/06/13 10:10ID:???0920915
02/06/13 11:54ID:???>> 例えば特定インスタンスがゾンビになってアクセス不能になった場合は
>> 他のインスタンスに対してそのセッション情報が引き継がれて、ユーザーには
>> 何事もなかったかのような振る舞いが可能。ということですよね?
理屈の上ではそうなります、多分、かなり十分なレベルで実現できると
思います。
>> マカー的に言うとWebLogicなんぞ目じゃないです。ホントに
そうなんすか?こういった機能って他の御三家AP鯖のいずれにも
用意されていると思ったのですが。使ったことはないのですが。
>> どこかにサンプルなどありませんか。
最近あまり細かいところ見ていないのですが、SessionStore とか
いうあたりを調べてもらえばわかるのでは無いかとは思います。
また、この件に関しては WebObjects の example にあると記憶して
ます。5.1 でもあるのかな?まぁ、この方式は SessionStore
に強烈な負荷がかかるので実装は結構難しいですよね。WebLogic
は確か、一つのセッションを二つのサーバで保持しあう形式、
iPlanet (だったかな)は集中式の Session サーバをもってい
たかな。でも、SessionStore サーバも最後には二重化しないと
不安なのではあります。
余談ですが、うまく細工をすると異なるアプリが同じ Session
情報を共有することも可能ではありましょう。
0921918
02/06/13 12:08ID:???どうもありがとうございます。すいません、他御三家AP鯖でも同様のことは
標準でできますね(恥)
WebObjectsのサンプルに
\Apple\Developer\Examples\JavaWebObjects\WOSessionStoreExample
があったので、これから調べてみます。
0922nobodyさん
02/06/13 12:13ID:???特定の部分に変更があった場合のみ他のインスタンスに通知する
という手もある。
漏れが使うのはこっちの方。WireHoseのChangeNotificationとかが有名。
うちはXML-RPCで共有する情報を交換するFramework作ってる。
0923nobodyさん
02/06/13 12:17ID:???> 他のインスタンスに対してそのセッション情報が引き継がれて、ユーザーには
> 何事もなかったかのような振る舞いが可能。ということですよね?
さすがにこれはカンタンには出来ないと思う。
アダプタをチューニングして、セッション発行の枠組みも根本から
変えないといけないような。
あ、てことはやって出来ないことは無いのかな。試してみるか。
0924918
02/06/13 12:32ID:???もっと勉強してからチャレンジします(;´д`)といってはそれでは進歩がないので
判らないことがあったら質問します。
>>922
WireHoseのChangeNotificationについて詳しく教えてください。freeなんですか?
>>923
>>さすがにこれはカンタンには出来ないと思う。
そうですよね、アダプタが発行するURLにインスタンスIDやらセッションID、コンポーネントIDが
入っていますしクッキーなども考えると、仮にセッションが持つ情報をシリアライズして
ローカルに保存したとしても、任意のインスタンスに異常が発生して落ちた際、
ユーザー側は同じURLでアクセスするわけですから、復元する手段を
アダプタ側で何かしら行う必要が出てくるということですね。
面白くなってきそうです。
0925nobodyさん
02/06/13 12:46ID:???ちょっと教えてください。WebObjects 5.x は multithread 動作をするのだと
おもうので、複数のセッションへのリクエストが同時並行処理されるのですよね?
とすると、一つのマシン上で複数の VM を使って複数のアプリインスタンスを
起動することのメリットてあるのでしょうか?EOFが絡むあたりで多重性に限度
があるのでしょうか?
ぁ、そういえばもう一つ知りたいことがあるのですが。
WebObjects 5.x の場合ですが、タイムアウトしていない Session の数と
必要になるデータベースへの接続数の関係ってどうなってるのでしょうか。
Connection Pooling みたいな仕組みになってるのですかね?
0926nobodyさん
02/06/13 13:17ID:???>> アダプタ側で何かしら行う必要が出てくるということですね。
アダプタでは特になにもしなくていいんでは?と思う。
URL にはそのリクエストをどの app instance に転送すればよいかを
表す wosid が入っているが、ここをどう出すかは WebObjects アプリ
側で制御できる。WebObjects アプリは生成する
URL にこの sid を含めるかどうかをコントロールすることである
リクエストを特定の app instance にバインドするかどうかを制御で
きる。(WOSession だか WOApplication だかに設定メソッドがあった
と思う)
つまり、特定の app instance にバインドしていない URL を出すよ
うにアプリを書いておけばあとはアダプタが勝手にラウンドロビンとか
してくれる。どの app instance を選ぶかは adaptor の自由となる。
URLには必ず Session id (SID) が含まれている。WebObjects app instance
はリクエストされた URL に含まれるこの SID をもとにセッション情報
を復元する。どこから復元するかは app の自由となる。
Cookieには sid と wosid 以外は入っていないので、多分問題にはならない?
問題は(というか、よくわかっていない点なのだが)おっしゃるとおり、
コンポーネントIDがどうなるかだ。Stateless でないコンポーネントは
Session 情報の一部として SessionStore によって保存されるのだろう
かと思うのだが違うのだろうか?
>> 面白くなってきそうです。
ほんま。よくわかってないエリアなんで、クリアになるとウレシイぞ。
0927イザ波
02/06/13 13:48ID:UkeJRTikりお先生、ありがとうございま〜す。
Unicode Escapeを使えば、特殊記号も表示(出力)できることは理解!
もう一方の入力の場合はどうなのでしょうか?
つまり、WOのWebアプリ画面に入力された「〜」等の記号も、何らかの工夫を
すれば、判別できて取り扱えるようになる余地はあるのでしょうか?
(初歩的な調査レベルでスイマセンが)教えて下さ〜い!お願いしま〜す!
0928nobodyさん
02/06/13 14:13ID:50ZwktMD> 一つのマシン上で複数の VM を使って複数のアプリインスタンスを
> 起動することのメリットてあるのでしょうか?
現状、Adaptorから転送されたリクエストを受けるthreadは複数立つが、
内部の処理はthread化されていない、という状態だと思われ。
WOが完全にmulti thread対応になるにはもう少し時間が必要。
理由:
ひとつめ。WOがまだJava化されていないときはthread関連は弱かったのでその名残。
ふたつめ。Java VMのthreadが信頼に足るものであるという保証が得にくい。
みっつめ。一回のrequest-response-loopの中では他のthreadのことを
考えなくてもいい、という状況ならプログラマの負担が小さくなる。
0929nobodyさん
02/06/13 15:25ID:???>> 内部の処理はthread化されていない、という状態だと思われ。
ほんまかいなぁ?
少なくとも私の実験では invokeAction の内側はうまく並行処理されるが?
そうでもなければ WebObjects5.x のあの性能は出ないのでは?
0930nobodyさん
02/06/13 16:19ID:???デフォルトではそうだけどWOApplicationのsetAllowsConcurrentRequestHandling()
で同時受付可能になります。5.1からはマルチスレッド対応をうたっている
ので、積極的に使えばよいかと。つーかどしどし使って早く枯らして欲すぃ。
>一つのマシン上で複数の VM を使って複数のアプリインスタンスを
>起動することのメリットてあるのでしょうか?
マルチスレッド化していない場合だと、長時間かかる処理が入ってると
とばっちりで他のユーザまで待たされるので、複数上がってるメリットが
あります。(単車線→半分の幅で二車線みたいな感じ・・・例え悪いけど)
スループットは上がらないけど平均桜桃時間はかせげるというところでしょうか。
>Connection Pooling みたいな仕組みになってるのですかね?
EODatabaseContextにEODatabaseChannelをプールする仕組みがあります。
全部busyなら新規にChannelを作る・・・まあConnection Poolingですね。
0931nobodyさん
02/06/13 16:34ID:???って、なんでデフォルトじゃfalseなんだろう?trueにすることによる弊害というのが
あるんだろうか??
0932925
02/06/13 16:53ID:???>> 5.1からはマルチスレッド対応をうたっている
>> ので、積極的に使えばよいかと。つーかどしどし使って早く枯らして欲すぃ。
そうっすね。
>>スループットは上がらないけど平均桜桃時間はかせげるというところでしょうか。
ってことは、multi-thread にしていれば複数起動はあまり意味がないと
考えていいのかな?最後は気持ちの問題なのかも。
>>EODatabaseContextにEODatabaseChannelをプールする仕組みがあります。
情報ありがとう。
>>931
なんか自信がないのかもしれないですね。とはいっても single threading で
ちんたらやってるわけにもいきませんから true にして使うんでしょうね。
0933nobodyさん
02/06/13 20:52ID:???0934nobodyさん
02/06/13 22:24ID:???怖くて使えないなり。
という人が多いからでは..。
0935nobodyさん
02/06/13 22:29ID:???インスタンスをサーバあたり平均していくつくらい立ててるんだろう。
漏れは多いところではアプ鯖3つで60個くらい。
それで一日4から10万アクセス。
5.1だけどthread使った方がいいのかもなー
0936nobodyさん
02/06/13 22:44ID:???鯖3つで60ってことは、1鯖あたり20のインスタンスか。
あれ、アダプタって、16インスタンスまでのリミットがあるんじゃなかったけ。
ソースいじってカスタマイズしてんのか。
thred使うとレスポンスあがるけど、メモリ使用量はあんまし変わらない感じ。
けど、よーーーーーーーーーーーーーーーーーーーーーーーーーく
動作テストやった方が良いかもよ。オレんとこ、不明の例外で悩まされたし。
0937nobodyさん
02/06/13 23:11ID:???メモリ1Gあっても1インスタンスあたり50Mか。苦しぃんでない?
マシンどんなかな?仮想記憶、ゴリゴリ動いてたりしないん?
0938nobodyさん
02/06/13 23:22ID:???> 動作テストやった方が良いかもよ。オレんとこ、不明の例外で悩まされたし。
ちとヤバぃ雰囲気あるもんねぇ。だけど、VM立ち上げといて threading
しないなんで「AP鯖でーすぅ」とか言うのモナーきょうびねぇ。
ところで、例外とは EOF ガラミか?それともマッタック不明ですかい?
0939nobodyさん
02/06/13 23:23ID:???> あれ、アダプタって、16インスタンスまでのリミットがあるんじゃなかったけ。
たしかアダプタの制限は16種類です。インスタンスはもっといけるはず。
間違ってたらスマソ
0940りお
02/06/14 01:00ID:9v1vZuBxアダプタソースを見ればイイ。
config.hに、各種設定値がある。
以下、一部コピペ(ありゃ、著作権法違反にならんかな?
#define WA_MAX_CONFIG_SERVERS 16
#define WA_MAX_APP_NAME_LENGTH 64 /* maximum length of a WOApplication's name, including a terminating null */
#define WA_MAX_APP_COUNT 16 /* maximum number of applications the adaptor can keep track of */
#define WA_MAX_APP_INSTANCE_COUNT 128 /* maximum number of instances of a single application the adaptor can keep track of */
#define WA_MAX_URL_LENGTH 256 /* maximum length of a redirect url in the config, including the null */
#define WA_MAX_ADDITIONAL_ARGS_LENGTH 0 /* maximum length of the additional args, including the null */
#define WA_LB_MAX_NAME_LENGTH 16 /* maximum length of a load balancing routine's name, including the null */
#define WA_APP_LB_INFO_SIZE 4 /* size in bytes to reserve for load balancing info in WOApp */
#define WA_INST_LB_INFO_SIZE 8 /* size in bytes to reserve for load balancing info in WOInstance */
#define WA_MAX_HOST_NAME_LENGTH 64 /* maximum length of a host name, including the null */
#define WA_MAX_INSTANCE_NUMBER_LENGTH 8 /* maximum length of an instance number, including the null */
とあるから、アプリ登録数が16で、インスタンス数が128ってところだな。
>>937
それくらいのレヴェルになると、マシン1台につき1Gというより2〜4Gと、
最大積載量積めるだけ っていうイケてる兄さんのトラックにはってるシールのような状態だと思われ.
つーか、1インスタンス50M使うというよりは、
インスタンスのMaxHeapSizeだよにゃぁ。
0941りお
02/06/14 01:09ID:9v1vZuBx・JavaMonitorでアプリのインスタンスを準備する
・HeapSizeを32Mとか少ないメモリにする
・アプリを起動する
・アクセスして操作を続ける
・インスタンスの使用メモリ量が増える。
・使用メモリ量がHeapSizeを越える。
・アプリが落ちる(OutOfMemoryを出す時と出さないときがある)。
・JavaMonitor上ではインスタンスが稼働している状態になっている。
・インスタンスをStop使用としても反応しない。それどころか他の
正常なインスタンスの動作も緩慢になる(´Д`;)
・仕方ないのでゾンビを抹殺する。
みたいなことやってる。単に割り当てメモリ量を増やせばイーんだけど(w
JavaMonitor(つーかwotaskdね)はアプリの精子じゃなくて生死を
判断する為にLifeBeatで判断するんだけど、なんかその判断の実装が
甘いんだろうな。
思いついたんだけどインスタンスに一定間隔wget投げて返事が
無ければ落ちている判断してメェルを担当者に投げるつーのは
どうだろうか。メェル受け取る担当者は鬱だろうが(´Д`;)
誰かそうしたシェルスクリプト作ってクレ(他力本願
0942りお
02/06/14 01:13ID:9v1vZuBxWebObjects5.1をインストール。5.1.2を当ててテストしてみた。
JavaMonitorは一応動く。ちゃんとセットアップも良好だ。
ApacheのAPIアダプタは再ビルドが必要。あたりまえだが。
ただ、Oracleに接続する部分でWebObjectsのException画面が。
コマンドラインからアプリを実行する分には問題ないんだけど。。
クラスパスが通っていないと考えるのが妥当か。
あまり時間がとれなくて検証できへんのゃ。誰かやったやつおらんか?
0943937
02/06/14 01:58ID:???JRE 1.3.x だと 2G 以上のメモリは扱えそうにないのだが。
漏れの勘違いかな?
だから1Gを超え始めるとそろそろ「メモリ増設」では戦えん
状況になる。
1.4 はこの縛りがなくなってるのだろうかとおもう期待。
それと、もちろん Heap サイズも問題なのだが、このケース
じゃ 50M 以上指定しても仮想記憶動くばかりで性能でない
んではないかとおもたわけだ。ずばりバッドチューンかと。
だが、Run Out Of Memory を見るのは最悪だから、どのみち
でかく指定するのだが。
>>Oracleに接続する部分でWebObjectsのException画面が。
Exception の内容はイミフメーですかね?
>>落ちている判断してメェルを担当者に投げるつーのは
当然、携帯でうけることに、、、(藁
0944nobodyさん
02/06/14 04:17ID:???Out Of Memoryじゃないけど似たような状況になったことがある。ただ、
> ・仕方ないのでゾンビを抹殺する。
これが、そのインスタンスがどのVMで動いているか識別できないので
けっこうムズイ。この部分が自動化できればwork aroundになるんだが。
根本的解決ではないけどね。
0945nobodyさん
02/06/14 15:06ID:???0946nobodyさん
02/06/14 19:28ID:???>>判断する為にLifeBeatで判断するんだけど、なんかその判断の実装が
>>甘いんだろうな。
もしかして、Life Beat でっぱなしなんじゃないだろうか。(まちがってっかも)
マニュアルのどこかに、「lifebeat は別スレッドで打っているので処理時間の
長いリクエストがあっても大丈夫」みたいなこと書いてあった気がするが。
実はリクエストの処理の途中でデッドロックしたり無限ループしていても
lifebeatだけは出つづけているという罠か?脳死判定してない?
まぁ、Life Beat で見ようなんてのがそもそも間違い。Life Beat があった
としても「生きている」とは限らん。生きていた、または生きている可能性
がある、程度しか判定できんだろと思うきょうこのごろ。
0947りお
02/06/14 20:09ID:9v1vZuBxちょっと、Wカップ(ブラジャーのサイズじゃないぞ の熱がさめやまないので、いっこだけ。
>>944
ん?これって、特定のインスタンスがゾンビになった時に抹殺する方法だよな?
lsofコマンドで指定したポート番号のプロセスリストが表示されるからそいつを抹殺すればいい。
# lsof -i tcp:9999
てな感じか。MacOS X と赤帽は最初からlsofは入ってる。Solarisは自前で
どっかから拾ってくるしかない。赤帽はプロセス数の多さにビクーリするが
気にせず殺す。
wgetで
http://192.168.1.1/cgi-bin/WebObjects/1/MyApp.woa
を投げてレスポンス帰ってこなければ、
lsof -i tcp:2001
でpidを取得して
kill -9 ***
すりゃいい。てな感じのシェルスクリプト作ってみたいが、ヒマがない(´Д`;)
0948りお
02/06/14 20:15ID:???Wカップだったら顔埋めてみたい。←WebObjects業界きってのSUKEBEだなおれっちは.
>>943
Exceptionを捕まえたいんだが、Application.javaでhancleException
で捕まえてるんでメッセージまだ判ってない。はずせばいいんだけど、
時間がちょっとない。待たれよ。
0949944
02/06/14 20:41ID:???りおタンさんくす。アンタ神だよ。
今度客先行ったらコソーリ仕込んでこよう。
0950nobodyさん
02/06/14 20:58ID:???0951ヲッカーな名無しさん
02/06/14 23:31ID:???夜のW杯・日韓友好条約締結(w
性交事例として報告しますた(w
0952ヲッカーな名無しさん
02/06/14 23:31ID:???0953りお
02/06/15 00:02ID:QndIbA+S950越えたので、先に作っておいた。
http://pc.2ch.net/test/read.cgi/php/1024066714/
0954nobodyさん
02/06/15 19:12ID:???PBを通さずにmakeしたりLaunchを起動してテストしたりしてる人っていますか?
やり方おしえてほしいです。LaunchはWinLaunch.CMDとかで出来るかと思うんだけど、
どこかに情報のってるのかな?
0955りお
02/06/15 21:04ID:QndIbA+Sあ、しまった、恥ずかしい………(;´Д`)
タイトルだけでも名前変更してくれないのかにゃぁ?>2ちゃんねる
0956nobodyさん
02/06/16 00:36ID:???0957935
02/06/16 23:07ID:???>>937
> メモリ1Gあっても1インスタンスあたり50Mか。苦しぃんでない?
> マシンどんなかな?仮想記憶、ゴリゴリ動いてたりしないん?
マシンはG4でメモリ1.5G積んでアプリのヒープサイズはデフォの64/32のママ
だから計算上はスワップしないと思ってる。ヤバイかな。
いろいろ変えて試したんだけど、これがいちばんユーザからの反響が
良かったのでこれで落ち着いてる。
レス数が950を超えています。1000を超えると書き込みができなくなります。