トップページphp
983コメント460KB

WebObjects 2スレ目

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001 02/02/14 23:06ID:???
WebObjectについて語ろう

http://www.apple.co.jp/webobjects/
http://www.apple.com/webobjects/

前スレ
http://pc.2ch.net/test/read.cgi/php/989562708/
0873初期不良02/06/10 03:15ID:???
上流設計もいいけどやっぱり土方もやらないと
見通しが立たないよね。
とか言う俺はプロト作って見せてこんな感じであってます?
とか聞いたりして、さあこれから本番だと思っていると
これで十分とか言われてお終い、のような仕事ばっかり...
ひよっこです...
0874nobodyさん02/06/10 08:11ID:???
>>872
マカー特有の人格攻撃発見!!
論負けすると「あいつはこういう奴だから・・・」と人格攻撃を
始めるのがマカーの特徴。

ついでにこのスレも糞スレ決定!!
所詮お前らマカーに技術論だけのスレなど無理無理。
一生、差別されて人格攻撃して生きてく運命なんだよ。

まあ、糞スレで死ぬまで誹謗中傷合戦やってろや。
0875りお02/06/10 08:26ID:mR3YLLAa
朝からオマエら元気だな(w
政治的な話はおれっちにはニガテだ。

つーわけで、アダプタの話をそのうち。
0876nobodyさん02/06/10 09:15ID:???
>>870
実際問題、今仕事してるとつくづくWOって土方仕事だなあって思うよ。
うちに来るときはとにかく即戦力を求められてる場合が多いし。

昔は流行の先進を走る自負みたいなもんがあったけど、今はそれもない。
これだけやってこの先永遠に生きてい行けるとは思わないけど
とにかく食うために楽に出来る方に手を出してしまうんだな。
0877nobodyさん02/06/10 09:55ID:apG0GDha
http://210.164.44.77/gaia/x.cgi?o=000955&1023856509
0878nobodyさん02/06/10 10:55ID:???
今をときめくWeb論理の仕事してても、つくづくJ2EE周辺はドカチン仕事ばっかですよ。
オブジェクト指向なんて言葉を知らないドキュソどもが、サンプルソースや
社内のドキュソ先輩どもが残したソースを参考に、クソコード書いてます。
他部署だとWeb球やってますけど、そこも一緒。
ドカチン仕事は、だいたいどこも一緒でしょう。
少なくとも、WO使えるだけでもマシだと思いますよ。(漏れも仕事でやりてえ)
0879nobodyさん02/06/10 18:51ID:mR3YLLAa
さ、仕事しよ。
0880nobodyさん02/06/10 22:17ID:???
マカーだWeb屋だ仕事だの話はもういいよ。ここで得られるWOの情報に期待してるんだから。
WebObjectsを使いたくない奴はくるなよ。
批判されてもいちいち相手にするのはやめまっしょい。
まじで頼むWO-!
0881りお02/06/11 01:22ID:WRP1UF4C

Apache1.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
どうでもいいんだけど、Pentium4 2.0G MEM512の赤帽Linux鯖にWebObjects5.1.1
入れた状態で、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スライムLv102/06/11 03:12ID:iOfGGC4v
ところで皆さん、やっぱりWindows版で開発してるんですか?
MacOSX版の方が使いやすいと思うんだけど、慣れると大差無いのかな。

あと、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
あのね、今運用環境で、XserveかSunFireV100かDell+RedHatか決めかねているんだけど
コレだからこっちにしろなんていう意見ある?規模的には3000ユーザーぐらいが使うもん
なんだけど・・・(あっ内はなく外で運用ね)
0889 02/06/11 10:08ID:1uC67cjO
データベースのテーブルの一部を保存するのって
どーすんの?
SaveChanges()は全部いっぺんに保存しちゃうんだけど。
0890nobodyさん02/06/11 10:20ID:???
>>888
いい番号だな。
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:???
>>886
おれっちは窓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:???
>>889
ん、いい質問だ。

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
>>894

あれ?おれっちンところじゃ、ちゃんと起動するけど??XPいれたままで
IEとかヴァージンアップしてない。実行時ログってどんなのでる??
0896nobodyさん02/06/11 22:40ID:mCMWn40G
WebObjectsというよりはJavaの質問なのですが、DBでint型のカラムをEOモデラーで
クラス化すると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:bMhzmpUA
>>896
setMyField( new Integer(a));
とするほか無いと思うのだが…
(Javaの本をもうちっと嫁ばわかる.結城センセの本がいいかモナー)

>>897
むぅ、はぢめて見るメッセージだ。あれ?アプリ自体は起動してるんだろ?
ブラウザからマニュアルでURLタイプしてアクセスできねぇか?


0899nobodyさん02/06/12 01:34ID:???
>>897
なにか実行時オプション付いてるか?
WOPortの数値が衝突してるとこれが出る。
0900nobodyさん02/06/12 01:41ID:???
>>889
そもそもec内の特定eoだけdbに変更を反映させたいという欲求が出る
シチュエーションがよくわからんのだが、りおタンと同じく直接やる方法は
知らない。ただ、lockを気にしなくていいなら、新しいecを作って
EOUtilities.localinstanceOfObject() ←うろ覚え
で引っ張り出すことは出来る。返されるeoはrefaultされてるので、
値は設定しなおす必要があるかも。
090189602/06/12 01:50ID:???
>>897
できました。ありがとうです。
私はWebObjectsではじめてJavaにさわったので、こういう些細なところでつまづいてばかりです。
MLでは聞きずらいけど、調べてみるとなかなか見つけにくかったりなので、ここには感謝してます。
お給料アップの為に日々精進!!
090289602/06/12 01:51ID:???
>>898=りおさんでした。ごめんなさい。
0903nobodyさん02/06/12 05:03ID:???
vol.1の1から読みはじめて、現在724あたりを読んでいるんですが、
度量広さというか、人間の暖かみを感じる良いスレだと思いました。

ホント『頑張って、勉強しなきゃ』って、やる気を起こさせる様な感じで、
読みはじめたらやめられなくって、つい徹夜してしまったっす(笑)。

しおりを兼ねた、感想スマソ。。。
0904りお02/06/12 10:44ID:ieem4m0p
>>900
動作の保証はしねーけど、EOEditingContextに、saveChangesInEditingContext
ていうのがあるから、ecをうまく制御すれば何とかなっかモナー。
deadLockしないように注意が必要だが。
0905りお02/06/12 21:39ID:ieem4m0p
amazon.co.jpにアクセスしたら、いきなりtopにオーム社のWebObjects本が。
ビクーリしたよ。
0906りお02/06/12 21:45ID:ieem4m0p
>>903
ぃゃぁー、恥ずかしいなぁ(←誇大妄想炸裂
気にせず何でも聞いてクレー.
0907nobodyさん02/06/12 21:49ID:???
>>899
いや、WOPortとかは何も設定してないんだよね。
なにがおかしいんだろうな〜
0908りお02/06/12 23:20ID:bMhzmpUA
>>907
WOPortとは関係なく、別のポートがぶつかっている可能性も。

-WOPort オプションで2000だとか適当なポート番号で起動することはできるか?

0909nobodyさん02/06/12 23:48ID:???
>>908
りおタン、ポート指定しなくても、ログのURLをブラウザにコピペすると動くんだよ。
デフォのブラウザをモジラにしてみたけど、結果は同じだった。
091090302/06/13 00:02ID:???
>>りお様
 レスわざわざ、サンクスです。サンクス!


でわ、またvol.1の続きを、読みに行ってくるっす(笑)。
0911nobodyさん02/06/13 00:27ID:???
>>910
vol.1だけでなく、日本語ドキュメントはあらかた目を通しておけよ〜
0912nobodyさん02/06/13 01:15ID:CQVzkEJe
WOPopupButtonと、WOTextFieldがありまして、WOPopupButtonに
ない場合、あるいは、キーボード操作がなれている人は、
TextBoxを入力します。マウスの好きな人はPopUpButtonを
使います。

というユーザーインターフェースを作ってます。
二つとも同じDBフィールドにバインドしたいのですが、
どうすれば良いでしょうか?
(両方に文字列が入力ならTextFieldを優先とします。)

あと、このようなユーザーインタフェースは変ですか?
Webでなければ、TextBox+ComboBoxの複合コントロール
があるのですが、Webにはないので。。。。
0913910=90302/06/13 01:17ID:???
>>911

日本語ドキュメントですね、了解っす!
アドバイス、サンクスです。サンクス!


#でわ、また続きを。。。
0914nobodyさん02/06/13 01:29ID:???
WO ってアプリケーションサーバを増やしたら勝手に?
負荷分散してくれるんですよね。この場合、セッションの
整合性はどうやって保たれるんでしょうか。

・URL の後に続く QueryString に、最初どのサーバに
繋がったかという情報も含まれていて、セッションが
保持されてる間はアダプタの方で同じサーバに振って
くれる。

・セッションのインスタンスの複製が全ての
アプリケーションサーバに生成される。

・その他
0915nobodyさん02/06/13 02:36ID:???
>>914
・URL の後に続く QueryString に、... が普通です。とくに
何もしないとこうなります。

・セッションのインスタンスの複製が... も可能ではありましょう。
この場合アプリはセッション情報を外部の(共有可能な)場所、
例えばデータベース?などとやり取りするコードを自前で用意する
必要があります。もちろんそれなりに高速なものをですが。
これを実装するためのインタフェースは用意されてはいます。
また、アダプタが割り振りを行なわないように設定することも
できるようにはなっています。
心配な点はもありますが、一応大丈夫らしいです。
0916nobodyさん02/06/13 05:32ID:???
AppleStoreとか見てみるとわかるけど、URLにセッションを発行したアプリの
実行イメージ(WOでは個々のこれをインスタンスという)を識別する数値が
埋まってます。ttp://store.apple.com/1-800-MY-APPLE/WebObjects/AppleStore.woa/
ときて.woaの後に付く数値がそれです。
インスタンスは各鯖にひとつとは限らない(というか複数設定するのがフツー)
ので、同じサーバに繋がるのは必要条件でしかないことに注意。
0917nobodyさん02/06/13 05:37ID:???
>>909
コピペしたURLの形式はどっち? あるいはこれ以外?

http://host:2001/cgi-bin/WebObjects/MyApp.woa
http://host/cgi-bin/WebObjects/MyApp.woa/-2001
0918nobodyさん02/06/13 09:40ID:???
>>915
ちょっと聞きたい。
インスタンスが複数あって、アダプタを介してセッションが張られると、
URLのセッション情報で整合性を保つわけですよね(アダプタが負荷分散などを
やってくれる、と)。セッション情報がサーバーで複製されて共有されると
なると、例えば特定インスタンスがゾンビになってアクセス不能になった場合は
他のインスタンスに対してそのセッション情報が引き継がれて、ユーザーには
何事もなかったかのような振る舞いが可能。ということですよね?
WebObjectsが持つ標準の機能では多分、上記のことは出来ないと思っています。
ただ、

>この場合アプリはセッション情報を外部の(共有可能な)場所、
>例えばデータベース?などとやり取りするコードを自前で用意する
>必要があります。もちろんそれなりに高速なものをですが。
>これを実装するためのインタフェースは用意されてはいます。

とあるので、上記のことが比較的簡単に実現できる、とすれば上段抜きでWebObjectsは
すさまじいと思います。(マカー的に言うとWebLogicなんぞ目じゃないです。ホントに)
願わくば、実装するためのInterfaceなどの情報を教えていただきたいのですが。
どこかにサンプルなどありませんか。
0919nobodyさん02/06/13 10:10ID:???
Xserv 15台注文。WebObjects鯖になります。えへへ
092091502/06/13 11:54ID:???
>>918

>> 例えば特定インスタンスがゾンビになってアクセス不能になった場合は
>> 他のインスタンスに対してそのセッション情報が引き継がれて、ユーザーには
>> 何事もなかったかのような振る舞いが可能。ということですよね?
理屈の上ではそうなります、多分、かなり十分なレベルで実現できると
思います。

>> マカー的に言うとWebLogicなんぞ目じゃないです。ホントに
そうなんすか?こういった機能って他の御三家AP鯖のいずれにも
用意されていると思ったのですが。使ったことはないのですが。

>> どこかにサンプルなどありませんか。
最近あまり細かいところ見ていないのですが、SessionStore とか
いうあたりを調べてもらえばわかるのでは無いかとは思います。
また、この件に関しては WebObjects の example にあると記憶して
ます。5.1 でもあるのかな?まぁ、この方式は SessionStore
に強烈な負荷がかかるので実装は結構難しいですよね。WebLogic
は確か、一つのセッションを二つのサーバで保持しあう形式、
iPlanet (だったかな)は集中式の Session サーバをもってい
たかな。でも、SessionStore サーバも最後には二重化しないと
不安なのではあります。

余談ですが、うまく細工をすると異なるアプリが同じ Session
情報を共有することも可能ではありましょう。
092191802/06/13 12:08ID:???
>>↑
どうもありがとうございます。すいません、他御三家AP鯖でも同様のことは
標準でできますね(恥)

WebObjectsのサンプルに
\Apple\Developer\Examples\JavaWebObjects\WOSessionStoreExample
があったので、これから調べてみます。



0922nobodyさん02/06/13 12:13ID:???
Sessionまるごと共有して随時更新するのは厳しい場合でも、
特定の部分に変更があった場合のみ他のインスタンスに通知する
という手もある。
漏れが使うのはこっちの方。WireHoseのChangeNotificationとかが有名。
うちはXML-RPCで共有する情報を交換するFramework作ってる。
0923nobodyさん02/06/13 12:17ID:???
> なると、例えば特定インスタンスがゾンビになってアクセス不能になった場合は
> 他のインスタンスに対してそのセッション情報が引き継がれて、ユーザーには
> 何事もなかったかのような振る舞いが可能。ということですよね?

さすがにこれはカンタンには出来ないと思う。
アダプタをチューニングして、セッション発行の枠組みも根本から
変えないといけないような。
あ、てことはやって出来ないことは無いのかな。試してみるか。
092491802/06/13 12:32ID:???
WOSessionStoreExampleをみたんですが。スイマセン、自分の技量では難しい内容です。
もっと勉強してからチャレンジします(;´д`)といってはそれでは進歩がないので
判らないことがあったら質問します。

>>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でアクセスするわけですから、復元する手段を
>> アダプタ側で何かしら行う必要が出てくるということですね。
アダプタでは特になにもしなくていいんでは?と思う。
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
>>797
りお先生、ありがとうございま〜す。
Unicode Escapeを使えば、特殊記号も表示(出力)できることは理解!

もう一方の入力の場合はどうなのでしょうか?
つまり、WOのWebアプリ画面に入力された「〜」等の記号も、何らかの工夫を
すれば、判別できて取り扱えるようになる余地はあるのでしょうか?
(初歩的な調査レベルでスイマセンが)教えて下さ〜い!お願いしま〜す!
0928nobodyさん02/06/13 14:13ID:50ZwktMD
>925
> 一つのマシン上で複数の VM を使って複数のアプリインスタンスを
> 起動することのメリットてあるのでしょうか?

現状、Adaptorから転送されたリクエストを受けるthreadは複数立つが、
内部の処理はthread化されていない、という状態だと思われ。
WOが完全にmulti thread対応になるにはもう少し時間が必要。

理由:
ひとつめ。WOがまだJava化されていないときはthread関連は弱かったのでその名残。
ふたつめ。Java VMのthreadが信頼に足るものであるという保証が得にくい。
みっつめ。一回のrequest-response-loopの中では他のthreadのことを
考えなくてもいい、という状況ならプログラマの負担が小さくなる。
0929nobodyさん02/06/13 15:25ID:???
>> 現状、Adaptorから転送されたリクエストを受けるthreadは複数立つが、
>> 内部の処理はthread化されていない、という状態だと思われ。
ほんまかいなぁ?
少なくとも私の実験では invokeAction の内側はうまく並行処理されるが?
そうでもなければ WebObjects5.x のあの性能は出ないのでは?
0930nobodyさん02/06/13 16:19ID:???
>内部の処理はthread化されていない、という状態だと思われ。
デフォルトではそうだけどWOApplicationのsetAllowsConcurrentRequestHandling()
で同時受付可能になります。5.1からはマルチスレッド対応をうたっている
ので、積極的に使えばよいかと。つーかどしどし使って早く枯らして欲すぃ。

>一つのマシン上で複数の VM を使って複数のアプリインスタンスを
>起動することのメリットてあるのでしょうか?
マルチスレッド化していない場合だと、長時間かかる処理が入ってると
とばっちりで他のユーザまで待たされるので、複数上がってるメリットが
あります。(単車線→半分の幅で二車線みたいな感じ・・・例え悪いけど)
スループットは上がらないけど平均桜桃時間はかせげるというところでしょうか。

>Connection Pooling みたいな仕組みになってるのですかね?
EODatabaseContextにEODatabaseChannelをプールする仕組みがあります。
全部busyなら新規にChannelを作る・・・まあConnection Poolingですね。
0931nobodyさん02/06/13 16:34ID:???
WOApplicationのsetAllowsConcurrentRequestHandling()
って、なんでデフォルトじゃfalseなんだろう?trueにすることによる弊害というのが
あるんだろうか??
093292502/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:???
> って、なんでデフォルトじゃfalseなんだろう?

怖くて使えないなり。
という人が多いからでは..。
0935nobodyさん02/06/13 22:29ID:???
読んでて思ってたんだけど、WOの運用している人はひとつのアプリの
インスタンスをサーバあたり平均していくつくらい立ててるんだろう。

漏れは多いところではアプ鯖3つで60個くらい。
それで一日4から10万アクセス。
5.1だけどthread使った方がいいのかもなー
0936nobodyさん02/06/13 22:44ID:???
>>935
鯖3つで60ってことは、1鯖あたり20のインスタンスか。

あれ、アダプタって、16インスタンスまでのリミットがあるんじゃなかったけ。
ソースいじってカスタマイズしてんのか。

thred使うとレスポンスあがるけど、メモリ使用量はあんまし変わらない感じ。
けど、よーーーーーーーーーーーーーーーーーーーーーーーーーく
動作テストやった方が良いかもよ。オレんとこ、不明の例外で悩まされたし。
0937nobodyさん02/06/13 23:11ID:???
>>漏れは多いところではアプ鯖3つで60個くらい。
メモリ1Gあっても1インスタンスあたり50Mか。苦しぃんでない?
マシンどんなかな?仮想記憶、ゴリゴリ動いてたりしないん?
0938nobodyさん02/06/13 23:22ID:???
> けど、よーーーーーーーーーーーーーーーーーーーーーーーーーく
> 動作テストやった方が良いかもよ。オレんとこ、不明の例外で悩まされたし。

ちとヤバぃ雰囲気あるもんねぇ。だけど、VM立ち上げといて threading
しないなんで「AP鯖でーすぅ」とか言うのモナーきょうびねぇ。
ところで、例外とは EOF ガラミか?それともマッタック不明ですかい?
0939nobodyさん02/06/13 23:23ID:???
>>936
> あれ、アダプタって、16インスタンスまでのリミットがあるんじゃなかったけ。

たしかアダプタの制限は16種類です。インスタンスはもっといけるはず。
間違ってたらスマソ
0940りお02/06/14 01:00ID:9v1vZuBx
>>939

アダプタソースを見ればイイ。
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
MacOS X Serverでの話しだけど。

・JavaMonitorでアプリのインスタンスを準備する
・HeapSizeを32Mとか少ないメモリにする
・アプリを起動する
・アクセスして操作を続ける
・インスタンスの使用メモリ量が増える。
・使用メモリ量がHeapSizeを越える。
・アプリが落ちる(OutOfMemoryを出す時と出さないときがある)。
・JavaMonitor上ではインスタンスが稼働している状態になっている。
・インスタンスをStop使用としても反応しない。それどころか他の
正常なインスタンスの動作も緩慢になる(´Д`;)
・仕方ないのでゾンビを抹殺する。

みたいなことやってる。単に割り当てメモリ量を増やせばイーんだけど(w

JavaMonitor(つーかwotaskdね)はアプリの精子じゃなくて生死を
判断する為にLifeBeatで判断するんだけど、なんかその判断の実装が
甘いんだろうな。

思いついたんだけどインスタンスに一定間隔wget投げて返事が
無ければ落ちている判断してメェルを担当者に投げるつーのは
どうだろうか。メェル受け取る担当者は鬱だろうが(´Д`;)

誰かそうしたシェルスクリプト作ってクレ(他力本願
0942りお02/06/14 01:13ID:9v1vZuBx
Solaris9を余ってるUltra1に入れてApache1.3.24にして
WebObjects5.1をインストール。5.1.2を当ててテストしてみた。

JavaMonitorは一応動く。ちゃんとセットアップも良好だ。
ApacheのAPIアダプタは再ビルドが必要。あたりまえだが。

ただ、Oracleに接続する部分でWebObjectsのException画面が。
コマンドラインからアプリを実行する分には問題ないんだけど。。
クラスパスが通っていないと考えるのが妥当か。

あまり時間がとれなくて検証できへんのゃ。誰かやったやつおらんか?

094393702/06/14 01:58ID:???
>> 940
JRE 1.3.x だと 2G 以上のメモリは扱えそうにないのだが。
漏れの勘違いかな?
だから1Gを超え始めるとそろそろ「メモリ増設」では戦えん
状況になる。
1.4 はこの縛りがなくなってるのだろうかとおもう期待。

それと、もちろん Heap サイズも問題なのだが、このケース
じゃ 50M 以上指定しても仮想記憶動くばかりで性能でない
んではないかとおもたわけだ。ずばりバッドチューンかと。
だが、Run Out Of Memory を見るのは最悪だから、どのみち
でかく指定するのだが。
>>Oracleに接続する部分でWebObjectsのException画面が。
Exception の内容はイミフメーですかね?
>>落ちている判断してメェルを担当者に投げるつーのは
当然、携帯でうけることに、、、(藁
0944nobodyさん02/06/14 04:17ID:???
>>941
Out Of Memoryじゃないけど似たような状況になったことがある。ただ、

> ・仕方ないのでゾンビを抹殺する。

これが、そのインスタンスがどのVMで動いているか識別できないので
けっこうムズイ。この部分が自動化できればwork aroundになるんだが。
根本的解決ではないけどね。
0945nobodyさん02/06/14 15:06ID:???
仕事減らない(;´д`)
0946nobodyさん02/06/14 19:28ID:???
>>JavaMonitor(つーかwotaskdね)はアプリの精子じゃなくて生死を
>>判断する為に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:???
ちなみにうちのヨメはDカップだ←関係ない
Wカップだったら顔埋めてみたい。←WebObjects業界きってのSUKEBEだなおれっちは.

>>943
Exceptionを捕まえたいんだが、Application.javaでhancleException
で捕まえてるんでメッセージまだ判ってない。はずせばいいんだけど、
時間がちょっとない。待たれよ。
094994402/06/14 20:41ID:???
おー、そうか。ネットワークから攻めるという手があったか。
りおタンさんくす。アンタ神だよ。
今度客先行ったらコソーリ仕込んでこよう。
0950nobodyさん02/06/14 20:58ID:???
りおのジョークセンスのオヤジ臭さに感動している(w
0951ヲッカーな名無しさん02/06/14 23:31ID:???
漏れも夕べ、巨乳のコリヤン美女とマターリ過ごしたぞ。
夜のW杯・日韓友好条約締結(w
性交事例として報告しますた(w
0952ヲッカーな名無しさん02/06/14 23:31ID:???
ちがった、成功事例(w
0953りお02/06/15 00:02ID:QndIbA+S

950越えたので、先に作っておいた。
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:???
まあ早いこと4つ目に行けば問題ないってことで。
095793502/06/16 23:07ID:???
最近妙に熱気あるね。

>>937
> メモリ1Gあっても1インスタンスあたり50Mか。苦しぃんでない?
> マシンどんなかな?仮想記憶、ゴリゴリ動いてたりしないん?

マシンはG4でメモリ1.5G積んでアプリのヒープサイズはデフォの64/32のママ
だから計算上はスワップしないと思ってる。ヤバイかな。
いろいろ変えて試したんだけど、これがいちばんユーザからの反響が
良かったのでこれで落ち着いてる。
095893702/06/17 00:35ID:???
>>マシンはG4でメモリ1.5G積んでアプリのヒープサイズはデフォの64/32のママ
んだら、それでいいんでないかな。なら最大でも 1.2G ぐらいまでしかメモリは
膨らまんから健全だし、総メモリからいってぴったりのセッティングだと思う。
OSX か。だと vmstat 不便だからいろいろ調べにくいな。
あまりメモリ食わないアプリだな。あまりイロイロ読んだりしないんだネ。
バッドチューンてわけじゃないな。スマソ。
0959nobodyさん02/06/17 09:03ID:???
>>958
MacOS X にはtopコマンドが使えるから、それでメモリの動きはある程度判断できるぞ。
0960nobodyさん02/06/17 11:51ID:???
>>959
おお、そうだな、ツーか、ps でみるってことだな。
だが、page in / page out がはっきり見えない。それと
単位時間あたりの system call の回数とかもようわからん
のでちょっと不便だとは感じているっつうわけ。
0961nobodyさん02/06/19 08:19ID:???
もうみんな次スレに移行してしまったのだろうか...
0962りお02/06/19 11:29ID:UZP5LySI
>>961
そんなことはない。こっちも見てるからどんどん質問しやがれ。
0963nobodyさん02/06/21 14:46ID:???
今日の無料セミナ、定員オーバーで行けない鬱。
行ってきた人、報告求ム。
0964nobodyさん02/06/24 03:03ID:???
>>963
逝ってないが、所詮はたれぱんだ氏なのでいつもと同じ話しかなかったと思われ。
0965nobodyさん02/06/24 20:22ID:hovzOaPt
データをとってきて一覧表示
さらに検索条件を入力してデータを絞り込む
といったでもでした

今日から行われる
講習会の詳細希望
0966親切な人02/06/24 21:07ID:???

ヤフーオークションで、凄い人気商品、発見!!!

「 RX-2001 」がパワーアップした、
「 RX-2000V 」↓
http://user.auctions.yahoo.co.jp/jp/user/NEO_UURONNTYA#.2ch.net/

ヤフーオークション内では、現在、このオークション
の話題で、持ちきりです。

ヤフー ID の無い方は、下記のホームページから、
購入出来る様です↓
http://www.h4.dion.ne.jp/~gekiyasu/#.2ch.net/
0967nobodyさん02/06/25 22:17ID:1yly4bAG
厨房な質問で申し訳ありませんが、WinNTのWO4.5.1環境の運用時に、
ODBC AdaptorでSQLServerのシステムDSN使用でうまくいきません。
開発環境時はうまくいくのですが、Install後、Monitorから起動すると、
ODBCからログイン名が間違っているといってきます。
EOModeler上ではConnectStringでUIDとPWDは指定しています。
同じような環境でうまくいっている人はいるでしょうか?
0968sage02/06/26 00:41ID:bFzP1sTf
だれか、Web+DB読んだ?
0969nobodyさん02/06/26 10:48ID:???
>>968
ちいと食い足りない感じ。
0970sage02/06/26 22:56ID:bFzP1sTf
MacWorldExpoのまとめじゃん。
これはいただけたものではなかった。。。
もうやめにしない、あのコンビ。
WOはメシのタネでしかないのか・・・。
0971nobodyさん02/06/26 23:05ID:???
コンビって、誰と誰?
0972sage02/06/27 00:19ID:mqE6zV0E
K氏とN氏
レス数が950を超えています。1000を超えると書き込みができなくなります。