WebObjects 3インタンス目
■ このスレッドは過去ログ倉庫に格納されています
0001りお
02/06/14 23:58ID:9v1vZuBxWebアプリ開発環境「WebObjects」について語るスレです。
http://www.apple.co.jp/webobjects/
http://www.apple.com/webobjects/
1スレ目:http://pc.2ch.net/test/read.cgi/php/989562708
2スレ目:http://pc.2ch.net/test/read.cgi/php/1013695600
■ 掟 ■
・遠慮は自身の成長を阻害する。過去ログ読んでも判らないことがあればどんどん質問すべし。そして判らないヤツがいたら親切じゃなくてもいいから教えてやるべし。
・WebObjectsを使っている個人・法人の無意味な批判は歓迎されない、しない。マカーマカーと騒がないこと。
・ヨソの開発ツールを使ってもないのにWebObjectsマンセーすることは歓迎されない、しない。
・運用についての質問はハードウェア、OS、パッチ、RDBMSのバージョン、JDBCアダプタのバージョン、Web鯖のバージョン、例外の内容などを細かく明記すべし。
・さやかタン (´Д`;)ハァハァ
0619nobodyさん
02/08/29 07:55ID:???とりあえず、Adobe PDF Libraryの使用許諾条件読んでみれ。
読むとAcrobat起動はそんなにイタイ解答じゃないことがわかる。
あんまり口出ししたくないんだが、web野郎にはわからんDTP屋の
悩みってのがあるんだよなー。
0620nobodyさん
02/08/29 20:59ID:???0621nobodyさん
02/08/29 23:17ID:???それ自体がアドビとのライセンス上問題なく、かつ客に対するビジネスとしても問題なければ、
技術的な個人趣味とか嗜好とかを除けば何ら問題ないんじゃないの。
WOと絡めようがなんだろうが、関係ないと思うが。
そういやライセンス的にはどうなんだ?プ社の場合は。
0623nobodyさん
02/08/29 23:46ID:???自分で生SQL書いたことなかったけど、EOAdaptorDebugEnabledにして
ずらずら出てくるのながめてたらなんとなく読み書きできるように
なってしまった、とかいうのは私くらいか。
0624nobodyさん
02/08/29 23:54ID:Ot/AP+f90625nobodyさん
02/08/30 00:37ID:???利用クライアントごとにAcrobatのライセンスを購入するようにしているのでライセンス違反にはなっていない。あどべの知人から聞いた話なので間違いは無いと思われ。
0626nobodyさん
02/08/30 08:46ID:???入れました。速度的にはほかのプラットフォームと大差ないです。たんに、
オラクルの稼働プラットフォームにマックが増えたって感じです。
だけど、ちょっと重いストアドがどういうわけかOS X の方がずっとはやい結果がでてるので調査中。本当に早いのかな?
0627nobodyさん
02/08/30 11:52ID:ndH7t8nphttp://www.microsoft.com/japan/msdn/sqlserver/downloads/jdbc/default.asp
日本語版最終更新日 2002 年 7 月 17 日
0628nobodyさん
02/08/30 12:34ID:i8Ef6i0qどうもありがぽ
0629nobodyさん
02/08/30 20:28ID:???石井CEOの名字と名前が反対すよぉ(;´Д`)
0630nobodyさん
02/08/30 21:31ID:???0631nobodyさん
02/08/30 21:49ID:vF0Y6HBbWebServices対応してるようだな。
0633nobodyさん
02/08/31 09:27ID:g0bRF0q5US AppleのWebObjects MLでWebObjects5.2のベータテストが始まったつー告知がされてた。
ADCメンバじゃなくても登録すれば使えるらしい>5.2β
ウェブサーヴィスに対応したところが注目だなー。つぅか業界の流れに沿ったカタチなんだろうけど。
0634nobodyさん
02/08/31 15:42ID:i4Ym2aZq0635632
02/08/31 16:03ID:AiSPYDtJ情報さんくす。
他にも変わったところありませんでしたか?
当然だけど、ADCにはまだ出てないですね。
どこで登録するんでしょう?
0636nobodyさん
02/08/31 22:19ID:???0637とーしろ
02/08/31 22:23ID:???0638nobodyさん
02/09/01 00:33ID:???出来ることはほぼ同じじゃない。
あっちは、Sunの策定した標準技術+α(JSP、Servlet、EJB)
だが、WOは独自のフレームワークにより、あっちよりずっと開発が楽よん。
0640nobodyさん
02/09/01 05:54ID:9K0+aUbS>プロプライエタリなJ2EE−αね。
うーん、ちょっと違うとおもいます。
WOはその出発点が「DBをオブジェクト化したい!!」から始まって、
そのうち「WEBアプリに使えんのんか〜これ?」てな感じで開発された
のにたいし、J2EEは「DBをJAVAから使いたい」からスタートしています。
だから単純にJ2EEからプラスマイナスはできないと思います。
WOはその流れからいろんなものの考え方がかなり抽象化されていますので、
(セッション、データベース、ページの取り扱い)覚えるまでが大変ですが
おぼえちまうと、すげー楽です。逆にいま台頭してきているWEBアプリ関係の
ミドルとの連携は今一ですが。
かたやJ2EEはまだタグリブとかつかってなんとか開発工数を減らそうとしている
のは分かるんだけど、けっこー煩雑なのでまだまだかなって気はします。
詳細はあポーのサイトに転がっている日本語の解説書を見てもらうと
楽かも。
http://developer.apple.com/ja/techpubs/
>技術者確保が難しそうだな。
これはいえてます。うちも困っています。
一番困るのは、ハードベンダーが「見向きもしない」ことです。
やっぱ日本ってハードベンダーの意向でミドルが決まるってけっこー
ありますから。
0641nobodyさん
02/09/01 07:24ID:7OvmZyljJDBC connection failed for driver :'org.gjt.mm.mysql.Driver'.
Driver not found in Java Runtime! Please verify your CLASSPATH
environment variable. The current CLASSPATH for your application
is : C:\Apple\Library\Frameworks\JDBCEOAdaptor.framework\Resources
\Java\.;.;C:\j2sdk1.4.0_01\lib\tools.jar;C:\mysql\bin;C\mysqljdbcmm
\mm.mysql-2.0.14\mm.mysql-2.0.14-bin.jar;C\Program Files\Java
\j2re1.4.0_0.1\lib\ext\mm.mysql-2.0.14-bin.jar;/Library/Java;C:
/Apple/Local/Library/Java;C:/Apple/Library/Java;C:/Apple/Library/
JDK/lib/classes.zip;C:/Apple/Library/Frameworks/JavaVM.framework/
Classes/awt.jar;C:/Apple/Library/JDK/lib/swingall.jar
mySQL+WO5+Win2Kでeomodelerで接続しようとすると上のエラーが出ます。
どこがまずいんでしょうか?
0642nobodyさん
02/09/01 07:26ID:7OvmZyljJDBC CONNECTIONのところは、
urlでは、mysql://localhost/tkenpou?capitalizeTypeNames=true
optional のdriverでは、org.gjt.mm.mysql.Driver
と入れました。
0643nobodyさん
02/09/01 10:28ID:???エラー内容みてわからんか?
とりあえず環境変数のCLASSPATHに、mmドライバのjarファイルのpathをセットしる。
デスクトップのマイコンピュータを右クリックのプロパティから逝け。
参考までに、漏れが以前使ったMySQL on Win2KでのEOModeler上での設定はこれだ。
Username:root
Password:無し
URL:jdbc:mysql://<ホスト名>/<データベース名>?useUnicode=true&characterEncoding=SJIS
Driver:org.gjt.mm.mysql.Driver
ex.
jdbc:mysql://localhost/mysql?useUnicode=true&characterEncoding=SJIS
参考にしろや、ゴルァ!
0644nobodyさん
02/09/01 11:14ID:7OvmZyljうまくいきません。
まず、
デスクトップのマイコンピュータを右クリックのプロパティから逝け。
とのことで、
いままでAdministratorのユーザー環境変数にだけ
classpathで
.;%JAVA_HOME%\lib\tools.jar;C:\mysql\bin;C\mysqljdbcmm
\mm.mysql-2.0.14\mm.mysql-2.0.14-bin.jar;C\Program Files
\Java\j2re1.4.0_0.1\lib\ext\mm.mysql-2.0.14-bin.jar
と設定していたものを
念のために
システム環境変数にも同じものを入れて
pcをリブードさせて(リブートが必要かどうかもわからないので)
再度、前回と同じようにやりましたが、
やはり同じメッセージが出ます。
pathというのは、classpathの意味ですよね?
それと教えていただいた
urlは全部入れられないのですがどこかまずいでしょうか??
よろしお願いしますです。
0645nobodyさん
02/09/01 11:16ID:7OvmZyljC\mysqljdbcmm\mm.mysql-2.0.14\mm.mysql-2.0.14-bin.jar
ここがドライバの置いてある場所でございます...
0646nobodyさん
02/09/01 14:30ID:???PDF Libraryの使用条件とAcrobatの使用条件は別物ですよ。
Acrobatにはインターネットライセンスはないです。
>>621 >>625
P社は当初、Acrobat起動技術(藁)をインターネット向けに売ってA社と
トラブルを起こし、イントラネット向けに強引に切り替えたそうです。
ただ、Webシステムを使うのにクライアントごとにライセンスが必要と
なってはもう売り上げは望めないでしょうね。
まあ後から訴えられることを考えればそのほうがいいのかもしれませんが。
Acrobat起動ではなくPDF Libraryを使えばライセンスの問題はないのですが、
なにしろP社はこういう会社なのでA社は契約を渋っているようです。
このことは>>461さん(A社の人間?)も指摘していますね。
A社の知人から聞いた話なので間違いは無いです。
0647ぷぷぷっ
02/09/01 17:03ID:???いきづまってしもた。どなたかHELP ME!!!!
掲示板で一覧からタイトルをクリックして修正画面へ移動し、
修正完了するともとの一覧へ戻る処理を作成してるんですが、
修正画面で修正ボタンを押すと、
Error:com.webobjects.eoaccess.EOGeneralAdaptorException
Reason:updateValuesInRowDescribedByQualifier
となってしまう。
takeValueForKeyを使わなければ問題ないんですけど。。。
なぜじゃ。
一覧画面(develop)のソース(リンクのアクション)
public developmod mvdevelopmod() {
developmod nextPage = (developmod)pageWithName("developmod");
session().defaultEditingContext().revert();
nextPage.setAarticle(aarticle);
return nextPage;
}
修正画面(developmod)のソース
public void setAarticle(EOEnterpriseObject newAarticle) {
aarticle = newAarticle;
}
public develop submitdevelopmod() {
develop nextPage = (develop)pageWithName("develop");
// UPDDT
NSTimestamp myNSTimestamp = new NSTimestamp();
aarticle.takeValueForKey(myNSTimestamp,"upddt");
session().defaultEditingContext().saveChanges();
return nextPage;
}
0648nobodyさん
02/09/01 21:41ID:jqC/lWsCEOModelorで、更新しようとしているEntityのRockedAttribute(ロック:錠前のアイコン)の
チェックを外すことでおまえは幸せになれるだろう。
全部はずしてもいいし、大量の文字列を扱うAttributeをハズしてもいいし。まぁちょっとその辺調べてやってみればよい。
0649nobodyさん
02/09/01 21:52ID:???classpathの設定については、JavaHouseに詳しいトピックスがある。
まずそこから出直せ
>それと教えていただいた
>urlは全部入れられないのですがどこかまずいでしょうか??
コピペっつー文明の利器があるだろ。
工夫しる。
0650nobodyさん
02/09/01 22:08ID:jqC/lWsCWindows2kだったら、makefile.preambleにOTHER_CLASSPATHに設定するという方法もあるぞな。
0652あぼーん
NGNG0653nobodyさん
02/09/01 23:31ID:???>ただ、Webシステムを使うのにクライアントごとにライセンスが必要と
>なってはもう売り上げは望めないでしょうね。
こんな条件なら販売自体辞めたほうが経費がかからないだけマシだろ。
クライアントの管理が必要ならなんのためのWebシステムかわからんからな。
それと前にP社と取引があるとか書いてる人いたけど大丈夫か?
これじゃ倒産の可能性も考えてつきあわないとヤバいぞ。
0655nobodyさん
02/09/02 02:24ID:???違う。APLとAcro鳩が別物なのは当たり前。両者の関係がポイント
なんだよ。A社と取引があったら常識なんだけどな...。
ま、Web屋はPDFやA社のことをなんもわかっとらん連中が大半なので
しょうがないけどね。
0657nobodyさん
02/09/02 13:16ID:Y5OcH7bShttps://appleseed.apple.com/cgi-bin/WebObjects/WOSeed.woa
ここから登録。
0658嵐君、きをつけて。
02/09/02 19:37ID:???http://www.sankei.co.jp/news/020902/0902sha063.htm
0662nobodyさん
02/09/03 01:43ID:???はあ!?ワケわからん。両者の関係ってなんだよ?
俺はそれなりにPDFのライセンスについて知ってるつもりだが、>>646の
主張が間違ってるとは思えない。もちろんP社とA社がトラブった件までは
知らんがな。
俺が理解できるように説明してくれるか?
説明できんなら>>655はP社工作員といわれても仕方ないな。
0663nobodyさん
02/09/03 03:57ID:???途中から読むとよくわからないので2スレ目から読むことをすすめる。
それをふまえて、ここでの話題はPDFのライセンスじゃなくて、
Adobe PDF Libraryのライセンスのことだと思われ。
P社がAdobe PDF Libraryにアクセスできてるかどうかは漏れも知らんが、
>>646が真面目にライセンス読んでないのは明らか。
Acrobatの多人数共有利用については、インターネット・イントラネット
経由を問わず、Distiler Serverのライセンスにきちんと書いてある。
特に問題はない。P社以外にも使ってるところはたくさんある。
これはPDFそのもののライセンスとかPDF Libraryのライセンスとかとは別の話。
そして、これが肝心なところなんだが、A社自身はAcrobatで出来る用途
にはAcrobatを使え、という態度を取っている。>>646は嘘だと思うなら
A社の知人とやらに確認してみればいい。
0664nobodyさん
02/09/03 04:09ID:+ajpb9nOんもうっ、世話が焼けるなあ。
ttp://developer.apple.com/techpubs/webobjects/Reference/Javadoc/com/webobjects/eocontrol/EOEnterpriseObject.html#willChange()
ちなみに648の方法は、解決策というよりはEOFがせっかくやってくれてる
オブジェクトスナップショットの保存を無効にしているだけなので、
これをやると少しだけ動作が軽くなるかわりに競合の検出が出来なくなる
という諸刃の剣。素人にはおすすめで出来ない。
0666nobodyさん
02/09/03 10:00ID:???更新していたとき、手元のデータと比較して違いがある場合は
更新できないというロック方法(楽観的なロック)を行っているので、
648の方法ではこのロック機構が有効に働かない可能性が出てきて、
期待した動きが得られない可能性もあるということでしょう。
有効に働かないと、+100したのに、-200の値が表示されたり
などという現象に出くわすわけです。
鍵マークをはずすと、その項目は比較しないよということですね。
なので、はずしても大丈夫な項目だけはずしましょう。
0667nobodyさん
02/09/03 10:13ID:???では、逆に更新時に
Error:com.webobjects.eoaccess.EOGeneralAdaptorException
Reason:updateValuesInRowDescribedByQualifier
がでた場合は競合が検出され、別ユーザが同じEOを更新してしまった、ということになるのでしょうか?
(ほかユーザが接続していないのにこの例外がでる場合もありますし...)
それと、willChange()とこの件は何か関連性があるでしょうか。
(わたしは元々の質問者ではないのですけど)
WOのロックと更新時の挙動については不明瞭な点があるので、ここでクリアにしておきたいですn:-)
0668nobodyさん
02/09/03 10:57ID:???(オブザーバといいます。EOEditingContextなどが代表格。Javaのイベント
リスナみたいなもの。)に通知を行う必要があります。これを行わないと、
EOFの仕組み自体がうまく機能しなくなるので、、、。
この通知の仕組みを動かすのが、willChange()というメソッドですね。
ですから、この場合はEOFの仕組みがうまくいってなくて例外になって
いるのだと思います。推測ですが、更新時になんかのフラグが立ってないのを
検出したとかの流れで例外を上げているのだろうと思います。
0669nobodyさん
02/09/03 12:00ID:???自動的にwillChange(), willRead()等が付け加えられます。
EOFののロックの挙動についてはWroxの本がわりと網羅してる。
これを読んだあとにAppleの資料を読むといいかも知れない。
0670nobodyさん
02/09/03 13:08ID:v16hnIxOていうか700ゲト
0671nobodyさん
02/09/03 14:02ID:???自動的にwillChange(), willRead()等が付け加えられますが、
WO 5.1だと、takeStoredValueForKey()/storedValueForKey()が
出力されますね。
4.xのドキュメントを読むと、takeStoredValueForKey()/storedValueForKey()は
EOFが使用するメソッドなので、ユーザ設定値はtakeValueForKey()/valueForKey()を
使うと書いてあります。
しかし、実際にはこれでうまくいきますし、willChange()/willRead()もいらないので、
takeStoredValueForKey()/storedValueForKey()の中で呼ばれているのでしょう。
ということは、WO5ではこれらのメソッドの位置づけが変わったのでしょうか。
0672nobodyさん
02/09/03 17:35ID:???ってなんのメッセージ?
0674nobodyさん
02/09/03 18:49ID:???ttp://www.amazon.co.jp/exec/obidos/ASIN/1861004311/ref=sr_aps_eb_2/250-4059031-4565841
0675nobodyさん
02/09/03 21:28ID:???WOPopUpButtonの宣言にvalue=...をつけるとパフォーマンスが落ちるよ、ということ。
省略時は数字になるので、内部的にインデックスのように使えて高速に処理できるんでしょう。
JavaScriptなんかで使うとき以外はvalueを指定する必要はないと思うんで
(文字列表示はdisplayStringを使えばよいし)指定しないのが無難かも。
ちなみにvalue指定しても普通に動きます。パフォーマンスもそんなに気にならない程度。
0677nobodyさん
02/09/04 01:11ID:???>Acrobatの多人数共有利用については、インターネット・イントラネット
>経由を問わず、Distiler Serverのライセンスにきちんと書いてある。
たしかに書いてありますね。インターネット向けの無制限ライセンスはないと。
つまり、インターネットでP社のソリューションを使う場合は
アクセスするすべてのクライアントにAcrobatのライセンスが必要ということです。
そんなもので商売になるのかという話にはとりあえずコメントは控えます。
>特に問題はない。P社以外にも使ってるところはたくさんある。
お願いだから嘘を書き込むのだけはやめてもらえませんか?
荒らしに嘘で対応してもまったくの逆効果になることがわからないのですか?
本当だというなら実名に近い形で企業名をあげてください。
Acrobat起動が立派な技術だというなら別に実名でも問題ないですよね。
それとも、裏でコッソリAcrobat起動なんていう腐り切った商売をしてる会社は
実名を出されると迷惑ですかね?企業名の書き込みがなければそのように
理解させてもらいます。
それと私は駄目会社に見方する気はまったくありません。駄目会社が
WOの開発をしているだけでWOの価値が下がります。
話題の会社にはWOから手を引くだけでなく資本主義市場から退場して
いただきたいと思っています。そのほうが世の中のためです。
0678493
02/09/04 02:34ID:???>makefile.preambleにOTHER_CLASSPATHに設定するという方法もあるぞな。
これ便利ですよね。
jarをNEXT_ROOT以下に置くようにすれば、Deploy環境に持って行ったときも
そのまま読み替えてくれるし。(わざわざパスを展開してからWOROOTに置き換えてるっぽい)
jre/lib/extに置くのはあんまり好きじゃないんで、Javamailなどのjarファイルは
C:/Apple/Local/Java/libなど入れてOTHER_CLASSPATHで指定するようにしています。
0679nobodyさん
02/09/04 02:48ID:???最後まで相手してあげよう。
> アクセスするすべてのクライアントにAcrobatのライセンスが必要ということです。
> そんなもので商売になるのか
クライアント数*Acrobatの料金とAdobe PDF Libraryのライセンス料と比べたら
どちらが高いでしょう。顧客に対して安価にソリューション提供する場合に
どちらが好ましい、または商売になると思う?
Adobeがどういう会社かも知らずに、PDFを真剣に使った開発経験もなしに、
ただ1社おとしめるのが見てて気分悪い。
漏れもそうだが印刷屋さんがwebに進出するときのいちばんの悩みは、
仕事のまわしかたを知らないweb小僧の相手だったりするのだ。
とにかく偏狭なやつら多すぎ。みんな大変だねえ。
0680nobodyさん
02/09/04 02:49ID:???> お願いだから嘘を書き込むのだけはやめてもらえませんか?
嘘だと誰が決めたの? ぼくちゃんひとりだけ?
> 裏でコッソリAcrobat起動なんていう腐り切った商売をしてる会社は
Acrobatをサーバ側で起動していたとして、それを個人的な好みでダメ技術と
判断するのは勝手だけど、当たり前の一般論みたいに書くのは我慢できないね。
それから私が噛み付いたのは、あくまでAPLの方がAcrobatより高級だ、みたいな
変な思想が論点なので、どこが駄目会社とかそういう話ではないです。
が、それを置いといても、P社は別に裏でコッソリじゃなくて、堂々と
Acrobat起動してるぞ。それを意図的に無視してここまでけなせるってのは、
何か別の利害関係を想像されてもおかしくないね。
> 駄目会社がWOの開発をしているだけでWOの価値が下がります。
独善。根拠無し。
同じ論法を使ってあげよう。
こんないい加減な議論をしているやつがWOスレに書いてるってだけで、
WOの価値なんかたかが知れてるな。
> 話題の会社にはWOから手を引くだけでなく資本主義市場から退場して
> いただきたいと思っています。そのほうが世の中のためです。
いよいよ個人的な恨みを書かずにはいられなくなったみたいね。
ま、スレ違いだし、さっさと帰って寝なさい。
0682nobodyさん
02/09/04 03:41ID:???DQN会社は早いとこ退職してまっとうな仕事をしたらどうだ?
あっ、辞めたてもどこにも雇ってもらえないんだっけ?
まあ、従業員数人の超零細企業出身じゃどこの会社も敬遠するわな。
>クライアント数*Acrobatの料金とAdobe PDF Libraryのライセンス料と比べたら
>どちらが高いでしょう。顧客に対して安価にソリューション提供する場合に
>どちらが好ましい、または商売になると思う?
PDF Libraryが好ましい。なぜなら利用者がライセンス購入する必要がないから。
通常アプリに比べて操作性などあらゆる面で劣るWebアプリがもてはやされるのは
クライアントを管理する必要がないから。
これはWebシステムの基本中の基本。
クライアントごとにAcrobatのライセンスが必要ならWebアプリにする必要はないし、
Webしてはいけない。なぜならライセンス違反を誘発するからね。
>ただ1社おとしめるのが見てて気分悪い。
生憎こういうフザけた商売してる会社を1社しか知らなくね。
他にもあるならAcrobat起動してPDF加工してる会社名をあげてみろよ。
>P社は別に裏でコッソリじゃなくて、堂々とAcrobat起動してるぞ。
これ見てみ。
ttp://www.planetcomp.com
一言もそんなこと書いてねーよ。
それと今更話を戻して「Acrobat起動なんてやってない」ってのは勘弁してくれよ。
>何か別の利害関係を想像されてもおかしくないね。
勝手に想像しろや。
お前が何を想像しても痛くも痒くもねーからよ。
0683nobodyさん
02/09/04 04:47ID:???0684nobodyさん
02/09/04 08:30ID:???これって、あんまりじゃない?木を見て森を見ずの典型例。
暴走族がGTRのってるだけでGTRの価値が下がるといってるようなもんじゃん。
お願いだからこんなめちゃくちゃな理論展開するのはやめてください。
0685nobodyさん
02/09/04 10:11ID:z+lQWYIA0686nobodyさん
02/09/04 11:41ID:???だれかそれが違うことを論理的に説明してもらえないか。
0687nobodyさん
02/09/04 11:48ID:mOs7rSld0688nobodyさん
02/09/04 12:31ID:???ソフトウェア開発はいろんな意味で人身売買に等しいからな。値段の付け方なんて、どこもいい加減。
同じシステムをA社とB社とC社に見積もりだしても、使う道具違うし、人間も違うしで
何百マソも違うケースが多い。一番安いところに発注したらPerlで構築して
スパゲッティ状態で機能拡張しようと依頼したらさらに長い後期と莫大な見積もりがきた
という罠。漏れの会社のことだ...鬱志。
いま、別システムをWebLogicを使うというやつらに発注しようとしている。
漏れはJavaもWebObjectも知らぬフリしているので、どういうやりかたをするのか楽しみにしている。
見積もり値段は漏れの年収の5倍ぐらいだーよ。鬱志。
特に業務ルールの移り変わりが多い漏れの会社なんだがこういう柔軟な開発にWOは向いていると思いこんでいるのだが、やっぱ使うやつのスキルによるのか?>識者
0689688
02/09/04 12:34ID:???人気ねぇんだなぁ・・・・
0690nobodyさん
02/09/04 12:39ID:???2chで人気がないだけだ。煽りじゃないぞ。
逆にいうとWebLogic使ってる奴はここには書かないってことだろう。
2chの情報は貴重だが2chだけが世の中の全てじゃないからな。
俺は今JBoss使ってるよ。
0692nobodyさん
02/09/04 17:31ID:z+lQWYIA0693ぷぷぷっ
02/09/04 20:38ID:???とりあえず、↓のように修正したんだが、動かん。>>647と同じエラーが発生した。
public develop submitdevelopmod() {
aarticle.willChange();
NSTimestamp myNSTimestamp = new NSTimestamp();
aarticle.takeValueForKey(myNSTimestamp,"upddt");
session().defaultEditingContext().saveChanges();
develop nextPage = (develop)pageWithName("develop");
return nextPage;
}
もうだめぽ。
0694りお ◆/OjWxByc
02/09/04 22:01ID:Nrg4ZZE1rocked attribute をハズしてもダメか?
それと、DBはなんだ?ポスグレか?ポスグレの場合は型をdateでなくてtimestampにしたほうが良いかもyo。
>>もうだめぽ。
そんなことをいうな。ソフトウェアに限界はない。解決策はどっかにある。
0695ぷぷぷっ
02/09/04 22:14ID:???rocked attributeをはずすとwillChangeがなくても動くよ。
ただ、なんかはずさんほうがいいってなことが書いてあったから。。。
っーかカスタムEOとやらにすればこんな面倒なことしなくてよいのかい?
0696nobodyさん
02/09/04 22:33ID:???とりあえず結果オーライでいいのでは?
たしかテクノロジックアートのMLでTatsuyaKawanoたんがEOのロックについて
長々とスレを展開していたとおもうから検索してみれば?
0697nobodyさん
02/09/05 02:07ID:???>暴走族がGTRのってるだけでGTRの価値が下がるといってるようなもんじゃん。
この場合、GTRの価値は下がるのが正しい。
だから企業は好感度の高い人間に自分の会社の商品を使ってもらおうとするわけ。
漏れ達も知らず知らずのうちに好きなタレントが使ってる(たとえそれが
CMの中だけでも)商品を選んでているんだよ。
それ考えるとアポーは本当に商売下手だよね。どんな無茶苦茶な会社でも
開発パートナーとかいってとりあえずWebにのっけちゃうんだから。
逆に変な会社と一緒のイメージで見られるのを嫌ってアポーの
パートナーリストに名を連ねない会社も多いと思うよ。
それがイメージ戦略であり営業技術でもある。
このスレの住人は技術だけじゃなくこういうことも勉強すべき。
0701あおりちゃん
02/09/05 07:58ID:???恨み持ってんならそれなりのことしろよ。玉無し。
つまんねーんだよ、てめーの陰気な書き込み。
0702nobodyさん
02/09/05 08:40ID:???開いた口がふさがらない。なんて滅茶苦茶な理論なんだろう...
>>699
私もはげどうです。加藤博士マンセー。
0704nobodyさん
02/09/05 10:16ID:???カスタムEO作ることに必要以上に不安になってませんか?
基本的にはEOModelerでJavaコードを生成するだけです。
すると、Article.javaが作られて、setUpddt()/upddt()が作られているので、
aarticle.setUpddt(new NSTimestamp());
session().defaultEditingContext().saveChanges();
するだけで基本的にはいけるはず。サブクラス化しているので、型名の
不整合が起こる箇所もあるかもしれないけど、それはEOGenericRecordから
Articleに書き換えるなりすればいいです。
# ところで、気になっているので書いてしまいますが、upddtって、Articleエンティティの
# 属性名(EOModelerでいうNameのカラム)ですよね。
# DBカラム名(EOModelerでいうColumnのカラム)ではないですよね。
# WebObjectsでは属性名のほうで認識するので、こちらをわかりやすい
# 名前(たとえばupdateDate)にしたほうがいいですよ。
# DBが訳わからん名前をつけていても、プログラム上は意味がわかる
# 名前で扱えるというのがWOの利点の一つでもありますし、、。
一人で使うシステムならlock属性をはずしてシステムを組んでも
問題ないでしょうけど、マルチユーザ環境だと問題ありだと思います。
ちなみに悲観的なロックを使うなら、EOEditingContextのlockObject()を
使用して、確実にレコードロックを確保してから更新処理に臨むという
方法もあります。
0706nobodyさん
02/09/05 10:41ID:???ロックをはずした場合のマルチユーザ環境で、
どういった面々で問題あるでしょうか。競合が検出されずに
他のユーザが変更した場合、仮に、そのシステムが
他のユーザの更新を許可するというものであれば、OKなわけですよね?
(珍しいかもしれませんが)
知りたいのは、他のユーザーの更新を許可しない場合の動作です。
ecでlockObject()をするのはよいのですけど、EOをロックしている最中に
クライアントがブラウザを閉じてしまったりセッションが終了して
しまったりした場合、ロックを解放するにはSessionがterminateするまで
待たなければいけない。それまでは他ユーザの更新はできない。
と踏んでいますがいかがでしょうか。もしそうなら、ちょっとシステムとして
は不便ですよね…。
また、競合が検出された場合のアプリの挙動です。クライアントに
「他のユーザが同じデータを編集しています」と表示させるシステムは
Webアプリではあまりお目にかかりません。もしくは、更新するまで
待っているような状態になるのでしょうか?先の例外が出てしまうからには
競合が起きているわけですよね。回避するか、例外を出しておくのが吉なのか。
諸賢のアドバイスが欲しいです。
0707nobodyさん
02/09/05 11:12ID:???もちろん、それでもOKな局面があることは認めます。
でも、単純に考えて、ある属性の更新ロジックが
a = a + 1;
みたいなものだったら、aは所詮キャッシュ値なので、
二人で同期を取らずに更新したら、正しい値が反映されないのは、
明白だと思います。
aが1
ユーザXがaを取得(a=1)
ユーザYがaを取得(a=1)
ユーザYがaを更新(a=2)
ユーザXがaを更新(a=2)
aは2(a=3を期待しているけど)
この状態を防ぐために、WOでは楽観的ロック(lockアトリビュート)と
悲観的ロック(lockObject())が用意されているわけです、
lockObject()を使ったら更新して直ちにロック解除が基本です。
同一呼び出しメソッド内で一連の処理を終わらせたほうがよいです。
トランザクションは、できるだけ短期にするというのは、
DBプログラミングの基本だと思います。
システムを使用するユーザの想定人数や使用頻度、クリティカル度に
よって、方針は変わってくると思います。
「他のユーザが同じデータを編集しています」と表示させるシステムも
最近仕事で作りました。(WOではなく、WebLogicでしたけど、、。)
0708nobodyさん
02/09/05 11:43ID:???EOModelerの錠前アイコンがやるのは、lockというよりはフェッチした
値の保存です。更新をかけるときに、この保存値をwhere節等で指定して、
他から変更が入っていないことを確かめます。
錠前アイコンを外すと、その属性がwhere節にあらわれなくなります。
ついでにEditingContextのlockObject(..)は、ECの使用許可取得、という
意味合いのもので、こちらもいわゆるロックとは少し機能が違います。
競合が起きたらどうするか?
前者の場合は、EOGeneralAdaptorException#userInfo() にアクセスすると
スナップショットと現在地が取得出来るので、そこから復元します。
後者の場合は、ケースバイケースかな。
ご指摘の通り、webアプリの性質上、ガチガチにロックをかけることは
あまりふさわしくないので、こういったメカニズムになっているのだと想像します。
0709nobodyさん
02/09/05 13:43ID:???たしかに、機構とは違って技法の分類ですが、
「更新をかけるときに、この保存値をwhere節等で指定して、他から変更が入って
いないことを確かめます。」
というのは、一般的に楽観的ロックとされている方法です。
(Googleすればいくらでも説明が出てきますし、一般的なDBプログラミング
技法ですね。)
ところで、ECの使用許可取得、ならlock()のほうではないんでしょうか。
lockObject()はEOの排他、レコードレベルの排他を実現する方法だと
認識しています。(OracleのFOR UPDATE句相当、今はどうしてるか知らないけど)
これを悲観的ロックと説明しています。
WO 4.xのマニュアルでも、lockObject()をもってロックの説明を
していますよ。
0710nobodyさん
02/09/05 14:41ID:SiKaIPs10711ぷぷぷっ
02/09/05 20:09ID:???EOModelerで日付型の項目はrocked attributeをはずす。
カスタムeoは必要なし。
コーディングはwillChangeは必要なし。これでうまくいく。
saveChangeするときに日付型のものがwhere句にあるとどうやらエラーになるようだ。
以上。
ところで、、、、カスタムeoにするとどんなウマミがあるんかいのぉーーーー。
0713nobodyさん
02/09/06 02:21ID:???確かにlockObject()はselect for updateを発行してるけど、それだけで
悲観的ロックといっていいものかというと疑問なんですよ。
レコードにオンデマンドでロックがかっても、同じecの別レコードに対する
revert()やsaveChanges()をとびこえてロック状態を維持できないから。
結局これも、別のobjectLock()で例外を出させて止めるしかないような。
私はもし聞かれたらWOにはペシミスティックロックは無い、とこたえてます。
Wroxの本もそういう結論。
4.xのマニュアルにはペシミスティックと書いてあるのかー。5.1までの
どこかで仕様がかわったんでしょうかねえ。
0714nobodyさん
02/09/06 09:13ID:???Oracleアダプタの場合は、FOR UPDATEを付加するような実装に
なっていたはずです。
「今はどうか知らないけど」と書いたのは、JDBCドライバ経由に変わって
このあたりどうしているんだろうという意味合いがあったのでした。
推測ですが、EOFレベルで、GlobalIDを使ってロックを制御している
んではと踏んでいます。
以下は、悲観的ロックに対する僕の考えですが、
本当にロック状態を維持できないとすれば、それは単にバグのような
気がしますが、異なるセッションからの更新でそれがおこるとなると、
WOのトランザクションの使い方の問題かもしれないですね。
EC単位でトランザクションを管理していて、ユーザ間で使いまわして
いると考えると、素直にECの設計を想像するとそうなる可能性は
高そうです。いわば、ECがトランザクションの管理単位というわけで、
同一ECにsaveChange()/revert()を送れば、ロックが解除されて
当然という気がします。
この場合は、ユーザセッションごとにECを用意することで、
うまく動くようになるのではないでしょうか。
4.xのマニュアルでは、
ペシミスティックロック
オプティミスティックロック
オンデマンドロック
をWOがサポートしていることになっています。
0715nobodyさん
02/09/06 10:36ID:???オーム社本230ページからモデルの継承についての説明があるのですが、
いまいち、ピンときません。
どのような時にこのテクを使うべきでしょうか。教えてぷりーず。
0717nobodyさん
02/09/06 16:42ID:???■ このスレッドは過去ログ倉庫に格納されています