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鯖のバージョン、例外の内容などを細かく明記すべし。
・さやかタン (´Д`;)ハァハァ
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:???0719nobodyさん
02/09/06 20:31ID:lrwQgpVO私は以下のように使い分けています
つたない説明ですいません。
(1)単一テーブルマッピング。
同一のテーブルにあるけど、キー値によって検査方法が異なるとき使用
してました。(<<ってそのままやんけ)
いちいちif文で分岐させなくてすむし。
(2)水平マッピング
異なるテーブルにあるデータをひとつのテーブルに見せるときに使用しました。
大量データ時のパフォーマンスアップのため使用することが結構あります。
(テーブルの分け方は、Application上でラウンドロビンのメソッドを組んで
分割してました)
(3)垂直マッピング
テーブルの構成をJavaの継承のように使う方法。
エンティティの構造がJavaそっくりになるので、ER図がUMLのようになります。
これに関しては、最初のころは結構使っていました。
ただし、大量データ時はあんまり使いません。
プロト開発とか、テーブル構成もろくに決まっていないときによく使います。
0720719
02/09/06 21:27ID:lrwQgpVOある会社で備品管理システムで垂直マッピングを使用した例です。
そこでは、全備品を1つのシステムで管理しようとしたのですが、
備品といっても机とか、棚とか買いっぱなしのものや、パソコンとか
プリンターとか保守先やIPアドレス、OS(複数あるかもしれない)とか
多岐にわたっていました。(中には社有車まで・・・)
そこで、親には備品として最低限必要な項目(備品番号、購入日、価格、など)
などを設定しておき、子供にはプリンターだったら消耗品番号、パソコン
だったらIPアドレス、OSとかを配置して、(IPアドレス、OSはさらにリレーション
をはっている)、備品一覧を表示すると全備品が表示されて、IPアドレスで検索
したいときはパソコンの検索画面から表示する、なんてアプリをつくりました。
この時はどのようなカテゴリーで管理したいか、設計段階で絞れなかったので、
垂直マッピングですぐに異なるカテゴリーを追加できるようにしておきました。
ただし、この手を使うと設計に自由度が加わる反面、まったく新しいカテゴリーの
ものを管理しようとするとサブクラスの追加になるので、アプリのメンテナンスが
発生してしまうのが難点です。ただし、この場合、プロト運用の段階で大体の
カテゴリーは絞れましたので、正式リリース後はサブクラスの追加はしていません。
まぁ、この場合、件数があまりないのが最初らわかっていたので、プロトのものの
延長をそのまま納品してしまいました。結果として発注から約1ヶ月で納品にまでこぎつけ
ましたので、(仕様書込み)まぁまぁ成功した内に入っています。
0721nobodyさん
02/09/06 22:01ID:???想像以上−アップルのJava (Sun Developer News)
http://sdc.sun.co.jp/news/200209/danwa01.html
0723nobodyさん
02/09/07 02:03ID:???>682は元プラ社員?
それよりもプラの話題が出ると必死に話をそらそうとする奴が怪しい。
俺の予想だと>>718は元プラ社員だな。
0725nobodyさん
02/09/07 03:41ID:???> EC単位でトランザクションを管理していて、ユーザ間で使いまわして
> いると考えると、素直にECの設計を想像するとそうなる可能性は
> 高そうです。いわば、ECがトランザクションの管理単位というわけで、
> 同一ECにsaveChange()/revert()を送れば、ロックが解除されて
> 当然という気がします。
> この場合は、ユーザセッションごとにECを用意することで、
> うまく動くようになるのではないでしょうか。
そうなると話は簡単なのですが、実際にはロック状態はECごとではなく、
EOObjectStoreCoodinatorごとに管理されています。
だから局所的なECを作っても対応できない場合があるのだ。
不特定多数が利用する可能性がありかつ終了状態がはっきりしない
webアプリでは、ユーザセッションをトランザクションの単位にするのは
危険という判断なのだろうと理解しています。
0726nobodyさん
02/09/07 04:11ID:???0727nobodyさん
02/09/07 07:55ID:???そうですね。ありがとうございます。
マニュアルには、以下のようにありました。
1.通常ユーザタスクと管理タスクの2つのタイプのタスクを実行するアプリケーション
2.自分自身のログイン情報でログインしなければならないWebObjectsアプリケーション
3.ユーザが同じデータベースで複数の同時トランザクションを開いておく必要のあるアプリケーション
をあげて、複数のEOObjectStoreCoordinatorが必要になるとしています。
まさにユーザという単位を必要とする場合だと思います。
その場合、以下のように行うとあります。
EOObjectStoreCoordinator coordinator = new EOObjectStoreCoordinator();
EOEditingContext ec = new EOEditingContext(coordinator);
これなら対応できるのではとおもいますが、逆に悲観的ロックしか使えなさそうですね。
0728nobodyさん
02/09/07 10:24ID:AmzO1EBz広文社「WebObjectsワークブック」に習って勉強中の初心者です。
日本語表示を行わせるため、以下をApplication.javaに書き加えました。
しかし、データベースから返ってくる文字が文字が化けてしまいます。
他に変更加える必要があるのでしょうか?
WebObjects5.14、OpenBaseのバージョンは7.07です。
public void takeValueFromRequest(WORequest aRequest, WOContext aContext) {
aRequest.setDefaultFormValueEncoding("SJIS");
aRequest.setFormValueEncodingDetectionEnabled(true);
super.takeValuesFromRequest(aRequest, aContext);
}
public void appendToResponse(WOResponse aResponse, WOContext aContext) {
aResponse.setContentEncoding("SJIS");
super.appendToResponse(aResponse, aContext);
aResponse.setHeader("text/html; charset=SHIFT-JIS","content-type");
}
0729nobodyさん
02/09/07 12:05ID:4PcbQPceこの状態でWO5.1をインストールするとソフトウェアアップデートでアップデートできません。
10.1のインストールからやりなおしたほうが良いでしょうか?
0730nobodyさん
02/09/07 16:24ID:???0731nobodyさん
02/09/07 16:49ID:i1Ug0+qR見当はずれかもしれませんが、
>aResponse.setHeader("text/html; charset=SHIFT-JIS","content-type");
を
aResponse.setHeader("text/html; charset=SHIFT_JIS","content-type");
にしてみてください。
あと、OpenBase側の文字コードはどうなっていますか?
0732nobodyさん
02/09/07 19:06ID:AmzO1EBzSHIFT_JIS試しましたがうまくいきませんでした。
OpenBaseの文字コードはEUCになっています。これもShiftJISで試しました
がうまくいきませんでした。
よく分からないのですが、JDBCドライバあたりが引っかかっているのか
な、と考え試行錯誤中。何か情報ありましたら引き続きお願いします。
0733nobodyさん
02/09/07 19:28ID:nbVLhQw8だめでしたか
OpenBaseはつかっていないので分からないのですが・・・
OpenBaseの文字コードをShiftjis Japaneseにしてみたらどうでしょう
ただし、OpenBase7.07についてはODBC関連で問題が別のMLで報告されて
いますのでそれが遠因かもしれません。
あと試用目的であれば、OpenBaseの文字コードを変えずに、WO側の
文字コードを帰るのも手です。この場合、エンコーダーの指定は"SJIS"から
"EUC_JP"に変更します。
0734nobodyさん
02/09/07 19:41ID:AmzO1EBzだめです。日本語とおりません。泣きそうです。
OpenBase7.06にしてもだめ、OpenBaseの文字コード変えても駄目、
WOの文字コードも一通り試しましたが駄目でした。WOBuilderのデ
フォルトエンコードなんてのも触ってみましたが駄目。
WOBuilderで普通に入力した文字ちゃんと表示されるんです、OpenBase
から返ってくる文字が化けてしまうんです。OpenBaseのデータビューア
で見ると日本語の部分だけ文字化けしています。
0735nobodyさん
02/09/07 20:42ID:i1Ug0+qR文字化けするのって、いままでのWOアプリで入力したデータですか?
それでしたら再度新しいWOアプリで登録したデータで確認してください。
WOのエンコードととOpenBaseの文字コードがずれていると破壊されたデータしか
登録されていませんので。
できれば、プロジェクトごとどこかにアップロードしてもらえばこちらでテスト
できるのですが。
0736nobodyさん
02/09/07 21:05ID:???をApplication.javaのコンストラクタに入れてみてはどうだ?
0737nobodyさん
02/09/07 22:25ID:AmzO1EBzうまくいきました。ありがとうございました。
ただし、EUC_JPでは無理でSJISで通りました。
助けて下さってどうもありがとうございました。
ところで、なぜこういうことになったのか?というのは難しい話なのでしょうか?
0738りお ◆/OjWxByc
02/09/07 22:43ID:???はおれっちのカキコだ。名前入れ忘れスマソ。
とりあえず、WOMessageのリファレンスを読んで味噌。
おれっちは詳しいことはワカランが、さやかタンがセミナで
この一行を入れていたんでいつも真似ている(;´Д`)ハァハァ
0739nobodyさん
02/09/07 22:50ID:???もしかしたらDirectActionからpageWithNameでページ生成して返しているのかな?
それだったらApplicationのappendToResponse()は通らないので、そのせいだったのかも。
0740二つ目のお気に入りとして
02/09/08 08:24ID:JOWA0TAZ究極の総合リンク集
http://home9.highway.ne.jp/cym10262/
0741>>728
02/09/08 08:26ID:sGKQxizr自分では触っていません。
import com.webobjects.foundation.*;
import com.webobjects.appserver.*;
import com.webobjects.eocontrol.*;
public class DirectAction extends WODirectAction {
public DirectAction(WORequest aRequest) {
super(aRequest);
}
public WOActionResults defaultAction() {
return pageWithName("Main");
}
}
0742729
02/09/08 15:53ID:???Dev tools入れ直したのですがうまくいかなかったので、
結局10.1入れ直してアップデートしました。
今までひたすらROMってましたけど、今日から実際にWO触っていきます!
駄スレですいません。
0743nobodyさん
02/09/08 18:38ID:???http://ime.nu/www5d.biglobe.ne.jp/~iiaccess/memory/4113.swf
0744nobodyさん
02/09/10 13:54ID:???pkg一個ずつ入れていくと、他は入るんだけどdeploymentだけはHDDが選択されないのです。
現在悪の根源を探索中。
0745nobodyさん
02/09/10 15:04ID:???Developerが入っていれば不要なのでは。
0746744
02/09/10 18:00ID:???Developerだけでも良かったんですか?(無知
OSXServer10.1.5を突っ込んだのでライセンス的に付属のdeploymentを使いたかったのですが
その後iMacのハードをG3&G4ポリタンクに移したり、スレーブでマウントしたり
うちの機材で考えうる限りを尽くしてみたのですがDeployのインストール先に選択できません。
ちなみに身の回りに転がってた6GBのくあんたむとか20GBのふじつーとかにもXServer入れて
deployのインストールを試みたのですがダメでした。
同じG4のIBM30GBには入っているのに...
あれやこれやのテストの結果、deployのインストールにはハードディスク的に制約がある
って結論に達してしまったのですが...なんか納得いかない。
ちなみに今度はおんなじ333iMacに純正6GB(まくすたー)の組み合わせでジャガー
をインスコ中。deployが入れられるか検証してみます。
---
うーん、業務でも無いのにアホなことに一に使ってしまった。
0747nobodyさん
02/09/10 19:45ID:???細かなSQLをいくつも投げるじゃないですか。
これってDBに余計な負荷をかけてしまわないんですか?
これはフォールティングによって解決されるのでしょうか。
もちろんEOの恩恵を受けたいので直接SQLを投げたくないです。
0748nobodyさん
02/09/10 20:02ID:???開発機に無理にdeploy入れる必要はないです。
運用機材に入ってれば十分。
たまたまそれらが一致してる場合は両方入れるけど。
0749nobodyさん
02/09/10 20:44ID:???確かに、余計な負荷をかけているよね。他ツールだとSQL一発で
いけるものを…というのに、いくつもSelect文だしてると、ちょっと
びっくりする。でもEOの恩恵から抜け出したくないので
プログラミングでうまくすり抜けようと精進する日々です(w
フォールティングもうまつ使えば便利なモノだしね。アプリの画面設計とか
EOの動きに併せて変えるときのいいわけになるし(笑)
(「ここをこうすると、DBに負荷がかかっちゃうので、こうすれば」っていうかんじ)
0750nobodyさん
02/09/10 22:09ID:1spD99Hc〜が?になっちゃう件、SJISなら良いというのと、
Java 1.4.1Betaならうごくらしいけど、試している人居ます?
1.4.1RCでたからつかっちゃうかなー。いつでるんだろ。<1.4.1
で、SJISとか、Shift-JISとかどーちがうんでしょうか?
0751nobodyさん
02/09/10 22:19ID:???↓ ここを見りー
http://www.ingrid.org/java/i18n/encoding/shift_jis.html
0752744
02/09/10 22:21ID:???開発機に無理にdeploy入れる必要はないです。
なんとなくの実験です。
時代遅れのマシンにDNSやらせてたんですが、WebObjectsのさーばーなんかも出来ちゃうんだろうか?
と、ふと思い立ってしまったわけです。
まぁApple的に、「頼むから運用はしっかりした環境でやってくれたまえ、マカ諸君!!」ということなでしょう。
0754nobodyさん
02/09/10 23:49ID:???おかしくて文字化けすることがありますね?
AppleのTechInfo.woaもそうなるときあります。
私のところもそうなんです。
社内のLAN上では、どのPCで、どのブラウザでも正常なのですが、
専用線で接続された(128K)九州(当方神奈川)の事業所からだと、
文字化けが激しいのです。
上記の〜が?になる場合もよくあります。
そのせいか、どうかは知りませんが、
Error:com.webobjects.eoaccess.EOGeneralAdaptorException
Reason:updateValuesInRowDescribedByQualifier
のエラーもよくでるそうです。(日付型なし、全てロックON、カスタムObject)
こっちでは問題ないのに、九州方面は不安定です。
どーしたらよいでしょう。
DB Server:Win2K Server+MS-SQL 2K
WO Server:Linux7.3+J2SDK1.4.0 文字コードはEUC
開発:Win2K Pro. J2SDK1.4.0
です。
0755nobodyさん
02/09/11 00:39ID:???串が何か悪さしていないか?事業所別に串が違うときは管理者とよく相談しる。
通過、WebObjectsはJDK1.4での動作保証してんのか?対象外プラットフォーム
(しかもOSも)での特定しにくい不具合を出されても誰も面倒みきれんぞ。
しかし、その例外はEOModelorのロックをはずせば少しは幸せになれるかモナー。
それと〜が、?になるのは文字のエンコードの問題だろう。shift_jisにしてみたらよろしくって?
0756nobodyさん
02/09/11 09:58ID:???> 串が何か悪さしていないか?事業所別に串が違うときは管理者とよく相談しる。
串ははいっていませんのです。
管理者は無知なのでなんの期待も出来ません。
他の静的Webページはなんの問題も無く閲覧できています。
> 通過、WebObjectsはJDK1.4での動作保証してんのか?対象外プラットフォーム
それを言われるといたいですけど、JDK1.4にしたのは、>>39の文書で導入したからです。
> それと〜が、?になるのは文字のエンコードの問題だろう。shift_jisにしてみたらよろしくって?
これも、サーバーが同じ場所にある、こちらでおこなうとなんでもないのですけど。
サイトが違うとおかしいなんてことありますかね?
0757nobodyさん
02/09/11 10:07ID:48pKj0wmちゃんと表示されるサイトと、
化けてしまうサイトの同じURLからhttpdヘッダを抜いて違いを
見比べてみたらどうか? なにかエンコーディングの指定をする
呪文が抜けているんじゃないか?
Application.javaのtakeValueFromRequestとappendToResponseをちょっと
コピペしてみろ。あとApplication.javaのコンストラクタにWOMessages.setDefaultEncodingはいってるか?
0758nobodyさん
02/09/11 11:14ID:???Application.java の内容ですが、>>728 さんの、
aResponse.setHeader("text/html; charset=SHIFT-JIS","content-type");
の文がないだけです。
これはいれた方が良いのですね?
あと、コンストラクタに、WOMessages.setDefaultEncoding("SJIS");
も、はいってなかったので入れてみます。
なにぶん、九州の外れまでは行かせてくれない+向こうに知っている人いない
+リモート接続環境もないので、待つしかないのですが・・・
0760nobodyさん
02/09/11 13:22ID:???Shift_JIS
どっちでもいいの?
Shift_JISが正式じゃなかったけ?
0761nobodyさん
02/09/11 16:02ID:???0762744
02/09/11 16:44ID:???OSXServer10.1.3をインストール→付属のWebObjects(Deployment)をインストール→
System/Library/WebObjects/JavaApplications/wotaskd.woaをダブルクリック...なぜかエラーで終了
試しにDeveloperTOOLSを入れてみる
やはりwotaskd.woaは起動できない
よくわからんがDEVELOPMENTをインストールしてみる
wotaskd.woaもJavaMonitor.woaも起動できた
---
この謎はうちだけなのか?
0763754です
02/09/11 18:54ID:MT74//ruですが、まだ問題が出てきました。
HTMLに、「〜」を書き込むと、WOが「?」を表示してしまうので、
SJISにすると表示できるのですが、フォームに、「〜」を入れて、
DBへ書き込むとDB内が「?」が格納されてしまいます。
「SJIS」を「Windows-31J」にすると、DBには、「〜」を格納してくれますが、
WOのHTMLの「〜」が「?」に表示されてしまいます。
一体どーすれば。
Application.java−コンストラクタ
WOMessage.setDefaultEncoding("Windows-31J");
public void takeValuesFromRequest(WORequest aRequest,WOContext aContext){
aRequest.setFormValueEncodingDetectionEnabled(true);
aRequest.setDefaultFormValueEncoding("Windows-31J");
super.takeValuesFromRequest(aRequest,aContext);
}
public void appendToResponse(WOResponse aResponse,WOContext aContext){
aResponse.setContentEncoding("Windows-31J");
super.appendToResponse(aResponse,aContext);
aResponse.setHeader("text/html; charset=Shift_JIS","content-type");
}
0766765
02/09/11 22:54ID:???ダブルクリックじゃなくて、rootになってコマンドラインからやると
起動出来る。当然deployの設定はdevelop入ってなくても出来る。
WOALauncherで起動出来るのはあくまで開発者用のオマケを思われ。
0767nobodyさん
02/09/12 13:03ID:???それをやる前に簡単なInsert/Viewのアプリ作って試したら、
PostgreSQLはOKで、MS-SQL Serverの問題のようです。。。。
0769りお
02/09/14 09:43ID:J4OqYpnJ/ /
/ /
/ / .' ;,,,.・;: 。',:
./ /_∧ -つ ;.:. ∧_∧
/ / ゚Д゚)シネ!/__ノ: ,,:・,‘( ) ←>>マカ
| へ/ / ⌒> _/ /
| レ' /、二つ| y'⌒ ⌒i
| /. | / ノ |
/ / , ー' /´ヾ_ノ
/ / / , ノ
/ / / / /
/ ノ / / ,'
_/ / / /| |
ノ / !、_/ / 〉
⊂ -' |_/
■ このスレッドは過去ログ倉庫に格納されています