トップページ⇒php
868コメント367KB

WebObjects nsDictionary.valueForKey("5スレ");

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/02/04 12:21ID:vwrTw9m5
NeXTからAppleComputerに引き継がれたオブジェクト指向
Webアプリ開発環境「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
3スレ目:http://pc.2ch.net/test/read.cgi/php/1024066714
4スレ目:http://pc2.2ch.net/test/read.cgi/php/1033912737

■ 掟 ■
・遠慮は自身の成長を阻害する。過去ログ読んでも判らないことがあればどんどん質問すべし。そして判らないヤツがいたら親切じゃなくてもいいから教えてやるべし。
・WebObjectsを使っている個人・法人の無意味な批判は歓迎されない、しない。マカーマカーと騒がないこと。
・ヨソの開発ツールを使ってもないのにWebObjectsマンセーすることは歓迎されない、しない。
・運用についての質問はハードウェア、OS、パッチ、RDBMSのバージョン、JDBCアダプタのバージョン、Web鯖のバージョン、例外の内容などを細かく明記すべし。
・プ社の話題はウザすぎるので全て専用クソスレでおながいします。

・さやかタン (´Д`;)ハァハァ
0097WebObjectsの稟議が通らない人03/02/16 09:13ID:XIpFysKb
専用スレッドでまっていますが、来ませんね。
0098nobodyさん03/02/16 16:37ID:???
東大生をバイトに使うために会社引越したってマジなの?
学歴神話いまだ健在ってことか?

>何故、WebObjectsには学歴が重要なのでしょうか?
全然重要じゃない。この話がネタでなければ単にプ社がアホなだけ。
>>96のいうように技術ノーハウや営業ノーハウのほうが重要だ。

この世界は東大ってだけでマンセーされるほど甘くはないよ。
0099nobodyさん03/02/16 16:57ID:???
>>98
クソすれあっからそっちでやれ、バカ。¥
0100nobodyさん03/02/16 17:04ID:???
>>99
クソすれってこのスレのことだろ、バカ。\
0101nobodyさん03/02/16 17:31ID:???
>>100
おまえみたいなやつとかがクソすれにしてるんだよ、バカ。¥
0102nobodyさん03/02/16 20:54ID:???
>>93
>雑居ビルの一室(以前のスレでワンルームとあった)で経営してる会社の
>引越しなんて俺の家の引越しよりお手軽だよ(藁

関係者に聞いたところだと静岡が本社とウタってはいるが、
そこは単に社長の家だそうだ(藁

実体のない支店や本社を作って会社を大きく見せる手法は
見習うべきかもしれない。

うちもやろっかな?
0103nobodyさん03/02/16 21:30ID:???
>>関係者に聞いたところ

実名あげろ。妄想かぃ?
>>関係者に聞いたところだと静岡が本社とウタってはいるが、
>>そこは単に社長の家だそうだ(藁

中小企業経営者なら、そんなやついくらでもいる。何もそこだけじゃない。

ところで、WOFileUploadでストリーミングアップロードをしたいんだが、
WebObjects5.1じゃできないようだ。自前で何とかしないとダメなのか?
0104nobodyさん03/02/17 02:54ID:U++jXk1/
>>103

ストリーミング機能付きのWOFileUploadはWO5.2からの新機能です。
5.1でやるからには独自の機能拡張が必要かと。
01058203/02/17 16:59ID:LzPBxf8f
>>88

亀レスでごめんなさい。

> n番目のqualifierFormatを("リンクテーブルs.会員."×(n-1))+"リンクテーブルs.関心のある分野.分野 = %@"

つまり、アダプターがテーブルを出現順にt0,t1,t2・・・と連番でふっているのを利用しています。
おばかな手段と思ったのは将来的にもこの法則が適用されるのかなー、見た時ふと思っただけです。
(JDBCの詳しい仕様とかは全く理解していませんが)

ちなみに、そのコードには思いっきりオンコードで上記のようなqualifierFormatがいくつも書かれて
おりました。最初は何やっているのかさっぱり判らなかったです。

いちおう、WO5.2のWOMovieでためしたらうまくいったのでとりあえず今のところは大丈夫なようです。
0106nobodyさん03/02/17 17:46ID:VGnBF5TZ
http://yahoo.55street.net/
↑どうだ?
0107nobodyさん03/02/17 22:18ID:???
>>104
ありが��
0108nobodyさん03/02/19 20:40ID:iIVh2s0C
以下のような処理では、Passwordを上書きできません。saveChangesを実行したところで
Error: com.webobjects.eoaccess.EOGeneralAdaptorException: updateValuesInRowDescribedByQualifier -- com.webobjects.jdbcadaptor.JDBCChannel method failed to update row in database
Reason: updateValuesInRowDescribedByQualifier -- com.webobjects.jdbcadaptor.JDBCChannel method failed to update row in database
が出てしまいます。原因と対処法を教えて下さい。

----------
EOFetchSpecification fetchSpec =
new EOFetchSpecification ("Masterstudent", qualifier, sortOrderings);

arrayStudent =
session().defaultEditingContext().objectsWithFetchSpecification(fetchSpec);

if (arrayStudent.count() == 1) {
Session.currentStudent = (Masterstudent)arrayStudent.objectAtIndex(0);
Masterstudent theStudent = (Masterstudent)arrayStudent.objectAtIndex(0);

String string = theStudent.password();
if (string == null) {
//Session.currentStudent.setPassword("TESTPASSWORD");
theStudent.setPassword("TESTPASSWORD");
session().defaultEditingContext().saveChanges();

}else{
0109nobodyさん03/02/19 21:57ID:5fvPzEii
>>108

これだけだとなんとも・・・。
WOのバージョン、DBなんかも教えれくれないと。

いちおう、似たようなエラーを吐いた事象としては以下のものがあります。
参考にしてくださいまし。

http://www.tech-arts.co.jp/macosx/webobjects-jp/htdocs/1900/1960.html
からのスレッド全部。

ただ、ちと古いんですよね。
0110nobodyさん03/02/20 09:02ID:???
モデルファイルの当該Attributeのロック制限(錠前アイコン)を外せば良いカモ。
0111nobodyさん03/02/20 09:56ID:v9eyipuG
>>109
すいません。WO5.2、Openbase7、Mac OS X Serverです。

>>110
はずしても問題ないんですかね?
011210903/02/20 13:41ID:VW1SZJC9
>>111

あの鍵マークは自分以外に該当のレコードを更新していないか
をチェックするために使用してます。

生成されたSQLを見るとわかるのですが、PK以外にも鍵マークの
ついている項目についてもWHERE文を発行しています。

だから、外しても問題ありません、そのかわりロック機構が甘く
なります。

ただ、日付型については外した方が吉です。(というか外さないと駄目)

あと、Openbaseとのことですので、MLから

日付関係のカラム(あれば)は全て
Date/time → Datetime

変更してみてはいかがでしょうか?
0113nobodyさん03/02/20 16:54ID:v9eyipuG
>>112
ありがとうございます。
カギマークはずしてみましたがダメでした。
日付はすべてdatetimeになっています。

単純にfetchしてきたものをNSArrayに入れて、変更後に書き戻したい
だけなんですが・・・なんでこんなに苦労するのやら。
0114nobodyさん03/02/20 21:26ID:???
>>113
鍵マークを、Pky以外全部外してみたら?
それでもだめ?
0115nobodyさん03/02/21 09:45ID:3/B6iMn7
>>114
だめでした。
theStudent.setPassword("TESTPASSWORD");
を呼ばなければsaveChangesのとこでエラー吐かなくなるんですが、
これって変更点がないからスルーされてるわけですよね・・・。
011611203/02/21 10:36ID:2Gb1xm+N
>>115

この例外ってtech-artsのMLでもたまーに出てきていますが、いずれも
解決していないようです。

tech-artsのMLに出てきた話を総合すると、

1)OpenBaseのJDBCが悪い(2001/9頃)
 → Data/TimeをDatetime型に変更して対応
2)開発中に急に例外が出るようになった(2003/2/17)
 → EOModelerの鍵マークを外す

あと、同じ例外がOracleでも出ています。
そのときはEOModel上のValue Typeに適切な値を設定して回避しています。

念のため、EOModelをDBから直接生成してみて、Value Typeの値がどうなるか
確認してみてはいかがでしょう。(こちらでOpenBaseから自動生成したら
なんかいろいろつけてきました。)

あとは、ECにたまっているEOと、実際に変更しているEOが同一かどうかを調べて
見るのも手かもしれません。(MLより転載)

System.out.println ("Student = " + theStudent);
System.out.println ("registeredObjects=" +ec.registeredObjects());
System.out.println ("updatedObjects=" +ec.updatedObjects());

最後に、生成されるSQLがどうなっているかも確認して下さい。

あまり役に立たなくてすいません。

#EOModelが壊れている可能性も・・・・
0117nobodyさん03/02/21 13:48ID:3/B6iMn7
>>116
ありがとうございます。
MLでも解決してないんですか・・・。
とりあえずEOModelを作り直してみます。
0118nobodyさん03/02/21 14:56ID:???

It also controls which JDBC methods are used to send and retrieve the data
to and from the database. For attributes with a Value Class of
java.lang.String the following value types are defined:
<none>
c
S
C
E

These Value Types affect which method on the java.sql.PreparedStatement are
used to transfer text data between the database and the JDBC adaptor. An
empty Value Type is backward compatible behavior with WebObjects v4.5 and
uses the setString() method if the text is less than the database's
advertised maximum varchar length, and setCharacterStream(), if it is too
large. If the database fails to advertise a maximum length, the default is
256 characters. A Value Type of 'S' uses setString() regardless of the
text's length. A Value Type of 'C' uses setCharacterStream() regardless of
the text's length. A Value Type of 'E' converts the text into raw UTF-8
bytes, and then uses setBinaryStream() to save them in a binary typed column
in the database. The Value Type of 'c' tells the adaptor to generate SQL
using RTRIM to strip off all trailing spaces, such as those found in CHAR
columns.

'S' is appropriate for most text columns. 'C' is good for columns which
usually contain large amounts of data. 'c' should be used when trailing
spaces are not significant in a CHAR column. (It's better to use a VARCHAR
column if possible.) We recommend against using 'E', except in extreme
cases. It is the database's responsibility to handle text encoding issues,
and using 'E' is usually an indication the database is not correctly
configured.
0119あぼーんNGNG
あぼーん
0120nobodyさん03/02/22 22:05ID:YltA2gAD
>>117は>>118の情報で解決できたのだろうか。報告キヴォンニュ
0121nobodyさん03/02/23 04:12ID:Zw6X7JIs
うーん、>>117を見てもどう使っていいのかわからないです。
寝てないから頭働かない・・・。
0122nobodyさん03/02/23 11:26ID:QXOQDmtK
とりあえず、文字列型のAttribute のValue Typeに、c S C E のいずれかを使って試してみれば。

0123あぼーんNGNG
あぼーん
0124nobodyさん03/02/23 14:38ID:???
ここでくだらねー質問してるバカどもへ
解決策は東大だよ 東大生をバイトに使え
彼らがすべて解決してくれる
東大生はキミらのような低学歴とは違うんだよ
何?東大なんて縁がない?
だったら会社を東大の近くに移転し、バイト募集の貼り紙を
勝手に大学構内に貼りまくるんだよ
何?それは違法じゃねーかって?
キミらみたいな零細会社はそれくらいやらないと生き残れないぞ
根性出せよ、根性!
012511203/02/23 16:00ID:DWsalvWk
>>121

こちらでも、簡単なテストしてみました。

同一例外が出たのは、DB上のフィールド長とEOMODEL上のフィールド
長が異なっている場合(たとえばDB上は8カラムなのにEO上は1024
カラムとっているとか)で発生しました。

ちなみにEO上のフィールド長をこえて更新しようとすると
きちんとValidationExceptionが発生します。(追加はなぜかOK。
ただし、Nullで書き込まれる)

参考になれば幸いです。
0126nobodyさん03/02/23 17:52ID:???
(´・ω・`) o o O~ {( 釣れませんねぇ )}
0127nobodyさん03/02/23 18:53ID:???
ごめんなさい、質問です
EOModelerのSQLGenerationでCreate Tablesにチェックを入れると

ObjCJava WARNING: An error has occurred in the Java Bridge.
You should try to save changes and restart your application.

というエラーが出るのですが、この対処方法&原因が分かりません。
多分どうしようもない、ミスなんでしょうが、お分かりの方いらっさいますか?

EOModeler 5.2、WebObjects 5.2、MacOSX10.2
0128nobodyさん03/02/23 19:36ID:???
>>127
あ、それ、漏れも出る。今までは、EOModelorを再起動して解決はした。
あと、一つのプロジェクト内に2つ以上のモデルファイルが登録されていて、
EOModelor上でその2つが開かれていない時に出た。
012912703/02/23 21:02ID:???
すいません、やっぱりどうしようもないミスでした、Entityの一つのExternalTypeが
いつの間にかからっぽになってました。
Omniのメーリングリストにも同じような話がありました。
ただ今度はJDBCエラーでうまくExecuteSQLいかなくなってしまいました…
また変なところでミスってるんだろうな…ふぅ…がんばろ…
0130nobodyさん03/02/23 21:12ID:???
プッ、東大でなんとかなるなら某社は偏差値30にはならんよ。
0131nobodyさん03/02/23 21:23ID:QXOQDmtK
>>129
解決して何より。

ところで、ガンダム種をみたんだが、あんまし面白くねぇな。漏れにとっちゃガンダムはゼータでおしまい。0083だけが例外で良しとする。他は全部だめ。
0132nobodyさん03/02/23 21:27ID:???
ところで、Servlet+JDBCとWOF+EOFとではどちらがパフォーマンス良いですか。
経験豊富な皆さんのご意見求ム。
0133nobodyさん03/02/24 14:18ID:l2bFd7Rj
>>122
ありがとうございます。
やってみます。

>>125
文字型の幅をチェックしてみましたが、
DBのもEOのもすべて同じ幅にしてありました。
うーん。何が悪いのやら。
0134あぼーんNGNG
あぼーん
0135nobodyさん03/02/25 01:40ID:???
>>132
WOFD5.xのEOFはJDBC経由でDBにアクセスするので、データベースアクセスに
関しては間違いなくServlet+JDBCの方が速いと思います。

「FORTHはアセンブラより速い」理論で言えばヘボプログラマが書いたSQLより
EOFの吐くSQLの方が効率的ならServlet+JDBCが負ける可能性もありますが。
0136nobodyさん03/02/25 02:30ID:2laNS2FK
みなさん色々ありがとうございます。
とりあえずSQL投げてUPDATEかけたらうまくいったので、これでよしとします。
動いたものを一応はっておきます。(WO5.2用)
なんか余計なもんがついてるとか、こうしたほうがいいってのがあったら
お教え下さい。

EOModel aModel = EOModelGroup.defaultGroup().modelNamed("モデルファイル名");
EOAdaptor aAdaptor = (EOAdaptor)EOAdaptor.adaptorWithModel(aModel);
EOAdaptorContext aContext = aAdaptor.createAdaptorContext();
EOAdaptorChannel aChannel = aContext.createAdaptorChannel();

EODatabaseContext dbContext = EOUtilities.databaseContextForModelNamed(ec,"モデルファイル名");
EOSQLExpressionFactory afactory = new EOSQLExpressionFactory(aAdaptor);
EOSQLExpression expression = afactory.expressionForString("実行したいSQL");

aChannel.openChannel();
aChannel.evaluateExpression(expression);
0137nobodyさん03/02/25 03:42ID:???
某社の糞社員はどんなにケナされても文句も言えない玉無し野郎
ママー、怖いよー、また2ちゃんになんか書かれたよー
Acrobat起動した僕が悪いんです〜、土下座しますから許してくださ〜い〜
0138nobodyさん03/02/25 12:53ID:6pkn8/5n
>>136

単純にSQLを投げたいんであれば、

EOUtilities.rawRowsForSQL(ec ,"モデル名","実行したいSQL");

でいけませんか?
(実行したいSQLがSELECT文なら、戻り値としてNSArrayが必要)

更新した後は、当然のことながら再Fetchする必要がありますが。
0139nobodyさん03/02/25 13:05ID:6pkn8/5n
>>135

ベンチマークみたいなテストをすれば負けるでしょうね。>WO

ただ、EOFの仕組みとしてFaultやキャッシング機構などがあるので、
体感上は同等か、それ以上のものができると思います。
(ただし、EOFの考え方を理解した上での話)
#まぁ、それがあだになることもありますが。

明らかに不得手なものとしては、大量データ処理でしょうね。
とってきたレコードを一旦EOというオブジェクトに展開するので
めちゃめちゃメモリーを食います。

EOFの仕組みを使って、何も考えずに一度に取得できるレコード数は
1000件ぐらいが限界ではないかと思います。

以前、10万件くらいをバッチに取り込む画面を作ったことがありますが、
EOFそのままでは使えず、結構回りくどい手を使いました。
0140nobodyさん03/02/25 19:35ID:???
>>138
それって、update系は実行できなかったんじゃなかったっけ。
0141nobodyさん03/02/25 20:13ID:???
>>139
なにも、WebObjects(EOF)だから大量データ処理が不得手というわけじゃなくって
Javaを使うAP鯖なら、どいつもこいつも弱いと思う。というかJavaそのものが
弱い感じ(対RDBMSに対して)。Javaを使った業務システムを何十件とみてきた
けど、大量データ処理そのものは汎用機なんかに任せてるのが実態。
0142nobodyさん03/02/25 20:47ID:???
すんません。初心者的な質問なんですが。

WOF5.2をWinで使ってます。
大量のデータ(500件ぐらい)をDBからフェッチしてリストにする処理があるのですが、
これを実行するとメモリを40MBぐらい消費してしまい、nullを代入してからSystem.gc()
しても離してくれません。このままだとOutOfMemoryになるので困っています。

これはWOFが勝手にメモリをつかんでいるからなのでしょうか?
0143nobodyさん03/02/25 20:51ID:???
>>このままだとOutOfMemoryになるので困っています。

起動オプションでメモリ使用量を上げれば済む話じゃないの?
いっとくが、一度確保したメモリはgcされようが、
アプリの使用メモリそのものは
減ることはないぞ。(WOFの仕様とかじゃなくて)
014414203/02/25 21:18ID:???
>>143

インスタンスは3つで、起動オプションは-Xmx192mをつけてます。
実メモリは1GBですが、DBも同居しているのでこのぐらいが限界です。

この状況でも、一度に40MBぐらい食って、また同じ処理が走ると更に40MBぐらい
食うのであっという間にメモリがなくなってしまいます。しかも、一度OutOfMemoryを
起こすとゾンビのようになってしまい(強制終了は可能)、他のインスタンスに負荷が
集中するという悪循環に陥ってしまいます。
014513803/02/25 21:18ID:bTv6fMun
>>140

できますよ。
0146nobodyさん03/02/25 21:25ID:???
>>145
そうでしたか、昔やってもできなかったんで、ダメなもんだと思ってました(恥
ありが�d
>>144
アプリの仕様を見直した方が良いのでは。ロジック一つでメモリ喰う量がだいぶ違うし。
0147nobodyさん03/02/25 23:16ID:I7JMksdr
おまえら、JavaDeveloperみましたか。

漏れはNTTのマリオスだとか位置情報検索システムが本当にWebObjectsで構築されているとは知りませんですた(;´Д`)ハァハァ
WebObjectsすごすぎです。
0148WO1年生03/02/26 12:42ID:3R/YWb3W
>>142

500件くらいで40MBはちょっとメモリを消費し過ぎだと思います。
(分母のデータ件数はどれくらいですか?)

チェックポイントとしては以下の通りでしょう。

1)DB上に大きなバイナリデータがある。
 → バイナリデータを別テーブルに切り出して1:1のリレーションにする。
   当然、バイナリデータはドリルダウンした時に表示。

2)WODisplayGroupを使っている。
 → 全件よみこんでいないかどうか確認する。
 → よみこんでいるなら、fetchSpecを指定して絞り込むか、qualifiDataSource()
  で絞り込むようにする。

3)その他

 (1) setPageCacheSize()を調整する。
 (2)明示的にLogoutをユーザーに実行させ、セッションをターミネートする。
 (3)データを使わなくなったら、ec.fogretObject(eo)とか、invalidateObjectsWithGlobalIDs(gids)
  を試してみる。(ただ、forgetの方はたまに忘れてくれない)
 (4)sheardEditingContextを使ってみる。
 (5)rawrowForSQLでデータを取得する(最後の手段)
 (6)大量データ検索用のEditingCotextを用意し、検索の前に作成、検索ページを閉じる際にnull
  (さらに最後の手段)

私が思い付くのはこれくらいです。

識者の方、他にありませんか?
0149WO1年生03/02/26 12:49ID:3R/YWb3W
>>142

ちなみに、何にnullを設定してgcかけているのかは判りませんが、一度
検索したEOはEditingContext配下のレイヤーにキャッシュされていますので、
表示用のArrayとかDisplayGroupにnullを設定しているのであれば
あまり効果がないと思います。
0150nobodyさん03/02/26 15:40ID:???
ちょこっと質問
DarwinもしくはOpenDarwinにWebObjects Deploymentはインストール
できるのでしょうか?
0151nobodyさん03/02/26 16:01ID:???
jdk1.3.1以降がインスコされていれば、たう゛ん。やって報告しる。
0152WO1年生03/02/26 19:20ID:3R/YWb3W
MACお宝鑑定団より。

MacOSXのJDK1.4.1配布が来週とのこと。
(Sun Super Tech Daysで発表になったらしいので
ほぼ確実でしょう。)

WOもきますかね〜。
0153nobodyさん03/02/26 19:41ID:???
WOがアプデートされないと困るなぁ。1.4.1対応してくれよ、マジ。
0154WO1年生03/02/26 20:29ID:3R/YWb3W
>>153

JDKウプデータン(;´Д`) ハァハァがきたら、WOウプデータン(;´Д`) ハァハァ
も来てほしいです。

でも、10.1のときの放置プレイの快楽・・・・もとい、悪夢が
忘れられません。

それを考えると、うれしさ半分、鬱半分。
0155nobodyさん03/02/26 23:31ID:???
>>148

DBには全部で30,000件程度入っています。
そこから、500件をobjectsWithFetchSpecificationしていますが、表示時にリレーションで
マスタから値を取ってくる項目がほとんどです(これが重さの原因?)。
生成されるHTMLは500KBぐらいあります。。。

ec.invalidateAllObjects()もやってみましたが、駄目でした。
ただ、該当セッションを切ってから何トランか経つと一気に使用メモリ量が減るので、
eoあたりかなぁという感触です。

setPageCacheSizeは盲点でした。試してみます。
これって、0を設定すると「戻る」ボタンが一切使えなくなる、という認識で
正しいのでしょうか?
0156WO1年生03/02/27 00:40ID:???
>>155
それって1:Nのリレーションが張ってあって、Nの一覧を表示する際に
1が複数回呼び出されるということですか?
とすると、スナップショットが悪さしているかもしれません。
こちらもぼけた頭で以下の方法を思い付きました。
(唯今VB(ver6)のデバック中。だれだよ、こんなものつくった香具師)

やったことがないのでどれだけ効果があるかどうかは不明ですが。
(ちなみに、できるかどうかも(w)

1)Entityを新たに生成。テーブルは「1」を使用。

2)新しいEntityとNとのリレーションを設定。
リレーションキーは1:Nと同様。
(このとき、新しいEntityと1をPK同士で1:1のリレーションを張っておくと
いいかもしれません。更新の必要が発生したらリレーションでたどれますし)

3)新しいEntityのロック(鍵マーク)を全て外す。

4)念のため、新しいEntityはRead Onlyにしておく。

5)1から表示するアイテムをすべて新しいEntityにバインドし直し。

要は1で取得されるスナップショットを極力少なくしようというわけです。
もしかしたら駄目かもしれないので実験してみてから適用して下さい。

>setPageCacheSizeは盲点でした。試してみます。
> これって、0を設定すると「戻る」ボタンが一切使えなくなる、という認識で
> 正しいのでしょうか?
そうです・・・といいたいところですが、IEは期待どおりの動きをしないことが
あります。(勝手に自分のキャッシュから持ってこようとする)
ちなみにデフォルトとは30のハズ
0157WO1年生03/02/27 02:53ID:2eHsOCCL
<追加>

アポーのドキュメントちょっと見たんですけど、

ec.refaultAllObjects();
ec.setFetchTimestamp((new NSTimestamp()).getTime());

をfetchのまえに呼べばいいかも。
0158nobodyさん03/02/27 11:18ID:bmhb7shD
WO始めたばかりです。
DB(Oracle)の任意のテーブルを表示するような
簡単なWebアプリを試しに作りたいのですが
何から始めればよいかわかりません。

ProjectBuilderでXXして、
WebObject BuilderでXXして
と言う具合に大体の大まかな手順を教えて下さい。
0159nobodyさん03/02/27 11:52ID:???
>>158
まずはEOModelerでXXしてください。
0160nobodyさん03/02/27 13:46ID:???
神の領域:先輩等からの口伝
---------------------
富豪  :Appleのセミナー
上流階級:テクニカルピットHomeWork
庶民  :書籍&ML&掲示板
0161WO1年生03/02/27 17:28ID:???
>>158

> ProjectBuilderでXXして、
> WebObject BuilderでXXして
> と言う具合に大体の大まかな手順を教えて下さい。

うぁぁぁ。ずいぶんとおおまかすぎでし。

せめて、アポーの日本語PDFを読んで下さいまし。

ttp://www.apple.co.jp/webobjects/pdfs/WebObjectsForHtml_J.pdf
0162nobodyさん03/02/27 19:41ID:???
<
<             >>158 ハァァァ???
<
  ∨∨∨∨∨∨∨∨∨∨∨\  /∨∨∨∨∨∨∨∨∨∨
          /:|.       | |     /:|
        /  .:::|       ∨    /  :::|
        |  ...:::::|           /   ::::|
       i       ̄ ̄⌒゙゙^――/    ::::::::|
      /_,,___       . _,,,,__,_     :::::::::::\
      /   ゙^\ヽ..  , /゙   ¨\,.-z   ::::::::::\
      「 ●    | 》  l|  ●    ゙》 ミ..   .::::::\
     /i,.      .,ノ .l|  《       ..|´_ilト    ::::::::::\
    / \___,,,,,_/ .'″  ^=u,,,,_ v/..       :::::::::::::l!
    |            ̄ ,,、         i し./::::::::.}
   |  /  ,,____ _,/ ̄ \ \      ノ (  ::::::::::|
    |  |.. | /└└└└\../\  \    '~ヽ ::::::::::::::}
    |   .∨.|llllllllllllllllllllllllllllll|          ::::::::::{
    |    |.|llllllllllll;/⌒/⌒  〕         :::::::::::}
     |   |.|lllllllll;   ./ .   . |          ::::::::::[
     .|   |.|llllll|′  /    . |    .|      :::::::::::|
     .|   |.|llll|    |     .∧〔   /    :::::::::::::/
    / }.∧lll    |    ../ /  /   :::::::::::::::::\
   /   /| \┌┌┌┌┌/./ /:::      :::::::::::::::::\
      ( ゙゙^^¨^¨゙゙¨  ̄ ̄ ̄ /:::::::::::         ::::::::::\
0163nobodyさん03/02/27 21:22ID:Aca6UbcP
>>162
激しくワロタ.
0164nobodyさん03/02/27 23:31ID:???
>>156

色々試したところ、どうやら巨大なページを生成する際に巨大なpageCacheが
出来てしまい、それがなかなか消えてくれないようです。

setPageCacheで0を指定すると、確かにメモリは食わなくなりますが、
直前に表示したコンポーネントクラスまで消えてしまうので使えません。。。

pageCacheSizeはそのままで、session内のpageCacheを消す方法があれば
いいのですが。。。
0165nobodyさん03/02/28 01:21ID:???
>>164
あまりお薦めじゃないけど、表示のみの部分はサブコンポーネントを入れ子にしたり
せずに、WOString一個にHTMLをプログラム的に合成して表示するという方法も
ありますよ。WOF1.0時代からの伝統的なチューニングです。

というかそこまでするならWebObjectsを使わない選択もあるかと思うけど。
0166WO1年生03/02/28 09:44ID:???
> 色々試したところ、どうやら巨大なページを生成する際に巨大なpageCacheが
> 出来てしまい、それがなかなか消えてくれないようです。
>

効果があるかどうかは不明ですが、WOComponentに

setCachingEnabled(boolean aFlag)

というメソッドがあります。
これをfalseにしてみてはどうでしょう?

JavaDoc眺めてたら、ほかにもいろんなメソッドがありましたので、
試してみてください。
016715803/02/28 15:28ID:9CbCgWt7
とりあえずWebObjectsワークブック(広文社)という本を参考に以下をやってみました

EOModelerにてJDBCでOracleに接続するモデルを作成
ProjectBuilderにてJava WebObjects Applicationのプロジェクトを作成、
WebComponents→Main.woをクリックすると立ち上がるWebObject Builderにて
上記で作成したモデルをMain枠にドラックし追加(displayGroupという名で)
Edit SourceのAdd Keyにてモデル作成時に指定したテーブルを選び追加(aKeyという名で)
HTMLをデザインする枠で
Add WORepetitionの一つ目の空欄にdisplayGroup.displayObjects、二つ目の空欄にaKeyを指定
loop部にAdd WOStringを使ってaKey.列名を指定

この後、ProjectBuilderからBuild and Runを行ったところ
Add WORepetitionを使った部分がブラウザに表示されませんでした
原因の調べ方がわかりません

ちなみにWOは5.2です

0168WO1年生03/02/28 15:51ID:???
>>167

判らないことがいくつか。

1)aKeyってEOModelerで作ったカスタムEOでしょうか?
 (Javaってアイコンがついているボタンを押すと生成されます)
 それとも、EOGenericRecordのサブクラスでしょうか?

2)aKey.列名は手動で設定されましたか?それとも、WOBuilderのバインド
  で指定しましたか?(aKeyの列名(というかフィールド)をドラッグすると
  線がのびてきてつなげるような感じ)

あと、displayGroupの設定で「fetch on Load」を指定していますか?
(WOBuilder上のDiplayGroupの左側にチェックマークがありますので、
それをダブルクリックすると設定画面が現れます)

こちらの予想とおりであれば、これで表示されるはずです。
 
0169WO1年生03/02/28 15:53ID:???
>>164

ありゃ、ずれちゃいました。

>>165は >>164へのレスです。
0170WO1年生03/02/28 15:58ID:WrIaSxHK
あれれ、2ちゃんブラウザがおかしい。
きちんとレスできてる。(なんでだろ)

というわけで、169は取り消し。
0171nobodyさん03/02/28 19:55ID:???
今日Sun Super Tech Daysに行って来たけど、
WebObjectsセッションで
WebServiceAssistantのデモをやっていたのは
ひょっとしてさやかタン? (´Д`;)
0172nobodyさん03/02/28 20:05ID:???
>>171
おまえは、その姿をデジカメでおさめてこなかったのか?えぇ?
なんとかいってみろゴラァ!(#`Д´)/
(興奮状態)
0173WO1年生03/02/28 20:17ID:WrIaSxHK
>>171

で、

どうでしたか? 内容。
0174ぷぷぷっ03/02/28 20:36ID:???
うーーむ、あの娘さんはさやかタンなのかなぁ?
名前を名乗らなかったのでわからんぽ。
すまんなデジカメ持っていくの忘れたんだよ。悪かったな。。。(171に期待)
DEMOの内容はWEBサービスだったような気がするけど、、、
0175nobodyさん03/02/28 21:03ID:???
ええと、さやかタンの容姿を簡単に…

・色白
・「おねぇタン!」て感じ(;´д`)ハァハァ
・メガネはかけてない。極端な茶髪でもない。髪質はサラサラ系。
・オパーイは大きくない。多分Aカプ。
・身長はそんなに大きくない。

0176WO1年生03/02/28 21:06ID:WrIaSxHK
>>174

さやかタン

ttp://www.mosa.gr.jp/topics/webapli-repot.html

参考にして下さいまし。
0177nobodyさん03/02/28 21:12ID:???
さやかタン (´Д`;)ハァハァ さやかタン (´Д`;)ハァハァ さやかタン (´Д`;)ハァハァ
http://www.mosa.gr.jp/topics/images/webapli-report-phonomu.jpg
さやかタン (´Д`;)ハァハァ さやかタン (´Д`;)ハァハァ さやかタン (´Д`;)ハァハァ
0178nobodyさん03/02/28 21:15ID:???
>>166

原因がわかりました。WOTableStringがメモリをバカ食いしていました。
WOTableStringって非推奨になってたんですね。知りませんでした。。。
お騒がせしました。
0179nobodyさん03/03/02 22:56ID:???

ううー納期がくるー、納期がー
0180WO1年生03/03/03 12:33ID:???
>>178

よかったでつね。

実は私はWOTableStringなんて知らなかったりします。(w
使ったことがあるものなんて両手で数えるくらいしかない・・・。
できれば、どんな標準でどんなコンポーネントの一覧があるかっていう
のが日本語であればいいんですけどね。

>>179

うちも来月くるぅぅ->脳気。

ただし、糞VBでできたシステムだったりします。
担当者がバックレたために、半年前から泣く泣く担当に・・・。
テーブル設計も画面遷移もむちゃくちゃ。
(どう戻れば?つー画面が至る所に・・・。初心者じゃないんだから)

関係ないのでsage
0181WO1年生03/03/03 19:41ID:???
ちなみに、私が使ったことのあるコンポーネント

WOForm
WOTextField WOText
WOSubmitButton WOResetButton
WOCheckBox
WOPopUpButton
WOString WOHiperLink WORepitation WOConditional WOImage
WOCollapsibleComponentContent
WOSortOrder WOSortOrderManyKey

ざーっとこんなもんです。うろ覚えですが。

ちょっと少ないですよね。
(カスタムでちょこまかとは作りましたが)

社内イントラ向けに作ったものが主なんで、あまり種類は多くないです、はい。
0182nobodyさん03/03/03 19:48ID:???
きみきみ、それらはコンポーネントではなく、ダイナミックエレメントだぞ(w
0183WO1年生03/03/03 20:33ID:???
>>182

ありゃ、まちがって覚えてましたねぇ。お恥ずかしい。

でも社内でこの名称で広めちゃったんだなぁ。どうしよ。
0184nobodyさん03/03/03 20:36ID:???
>WOCollapsibleComponentContent

初めて見た。。
今までコリコリとコードを書いて同じようなことやってた俺って何?ショボーン
0185nobodyさん03/03/03 22:15ID:MnPmt/Bl
>>181
WOTabPanelもハァハァするぞ。

WOKeyValueConditionalも使いこなせ。もっとハァハァするぞ (;´Д`)ハァハァ

0186nobodyさん03/03/04 00:47ID:???
自作派の漏れはWOGenericContainerとかWOComponentContentを愛用していますよ。
後はotherTagStringとhandleTakeVa...
0187nobodyさん03/03/04 00:47ID:yMVgtNrW
>>185
マジレスするが、VBをバカにしてはいかん。アレもアレで適材適所なんだ。未だに金融系では使われている。
しかし、WebObjectsをいじると、絶対にもとに戻ろうと思うことがなくなるんだが(;´Д`)

ペガサス流星拳〜
0188nobodyさん03/03/04 00:53ID:???
>>186
そうそう、WebObjectsってコンポーネントを自作して他プロジェクトでも簡単に
再利用できちまうところがイイよなー。APIエディタでオブジェクト公開してさー。
ここらへんがOOPしてるなって実感しちまう。
もう、たまらんハァハァ(;´Д`)
0189WO1年生03/03/04 21:36ID:???
>>184-186
全然知らないものばかりですねぇ。おはずかしい。
ちなみにどんな機能なんですか?(自分で調べろって)

>>187
金融系ではしっかり現役なのは身をもって体験しています(藁
でも、あまりこの言語好きじゃないです。IDEは使いやすいですが。

しかしその前にやってたのはCOBOLのみと言うのは内緒(藁)
0190nobodyさん03/03/04 22:42ID:yMVgtNrW
あげ
0191nobodyさん03/03/04 23:01ID:???
おい、おまえら、セイラ・マス(アルテイシア)の声をやってた井上瑶さんがガンで他界されたのを知ってるか。
0192nobodyさん03/03/05 00:09ID:???
>>191

激しくスレ違いの感もあるが・・・・


ご冥福をお祈りいたします。
019315803/03/05 09:19ID:MbATG8ZS
>>168
レス遅れてすいません

> displayGroupの設定で「fetch on Load」を指定

これがチェックされてなかったのでチェック後
Build and Runを行ったところ
?????
I/O????????
という文字が。。

> 1)aKeyってEOModelerで作ったカスタムEOでしょうか?

Edit Sourceってボタンを押して出てくる選択肢のAdd Keyにて作成したものです
カスタムEOという概念自体、理解してうません。スイマセン。。

> 2)aKey.列名は手動で設定されましたか?それとも、WOBuilderのバインドで指定しましたか?

WOBuilderのバインドで行いました
0194WO1年生03/03/05 12:41ID:qGGFcyI8
>>193

>?????
>I/O????????
>という文字が。。

これはブラウザに表示された文字列でしょうか。それともPBのコンソールに
表示された文字でしょうか?

データに日本語を表示しようとしているのであれば、日本語エンコード用
メソッドを追加する必要がありますが、この対応は済んでいますか?

ちなみに、メソッドは以下の通りです。

public void takeValuesFromRequest(WORequest aRequest,WOContext aContext){
aRequest.setFormValueEncodingDetectionEnabled(true);
aRequest.setDefaultFormValueEncoding("SJIS");
super.takeValuesFromRequest(aRequest,aContext);
}
public void appendToResponse(WOResponse aResponse,WOContext aContext){
aResponse.setContentEncoding("SJIS");
aResponse.setHeader("text/html; charset=Shift_JIS","Content-Type");
super.appendToResponse(aResponse,aContext);
}
0195WO1年生03/03/05 12:56ID:qGGFcyI8
>>193

あと使用されているDBがOracleとのことなので、いちおうDBと接続されているか
確認してみて下さい。(EOModelerでテータの入っているテーブルを選択して
ドラム缶に虫眼鏡をかざしているボタンをクリックしてみて下さい。データの
一覧が表示されるはずです)
0196nobodyさん03/03/05 22:10ID:???
おまえら、設計にUMLはデフォでつか。
■ このスレッドは過去ログ倉庫に格納されています