2008年11月18日火曜日

JPA:TopLinkEssential

NetBeans6.5にてJPAとSwingのサンプルを作成中、SQLでOrder By をかけると奇妙なエラーが発生。

select b from XXX ORDER BY b.JOB_INSTANCE_ID
token null
select b from XXX ORDER BY b.JOB_INSTANCE_ID
illegal
select b from XXX ORDER BY b.JobInstanceId
illegal

どうやら、使用できるカラムは、Entityとして使用しているクラスのフィールド名であり、大小文字もクラス定義に合わせて先頭が小文字でないとだめだったお。

select b from XXX ORDER BY b.jobInstanceId

2008年11月17日月曜日

AppServerからの自Servletアクセス

先週末は、RmtWebプロジェクトのバグをほぼつぶした。しかし、実行してみるとAppServerにRenderをさせる場合も、Proxyをさせる場合もTimeoutが発生したりして思うように動作しない。(初回はまず間違いなく失敗するが、数回やると成功する、、、とか安定しない)
■Servlet仕様
RenderServlet JEditoPane を利用して他サイトのURLをRenderし画像として返すもの
例) xxx/scrn.render?url=http://xxx.example.com/yyy/zzpage.html

DelegateServlet Proxy的に動作し、指定のURLの出力をそのまま返すもの
例) xxx/scrn.wget?url=http://xxx.example.com/yyy/scrn.capt?Size=25

そこで、さらに切り替えを増やして直接画面キャプチャを指定できるようにした。
外部ネットからだとアクセス不可になってしまうが、安定した。

■不安定な理由の推定
1)Render:
SwingのイベントモデルはSingleのため、HTTP接続で待ちが発生するとすべてが待ちになってしまう。
これは、通常のJEditoPaneがHTMLの解釈と要素のDonwloadが非同期であり、終了したことを検知しにくいことから、同期式の取得に変更した場合に発生した。
 もともとのJEditorPaneでは非同期でHTMLを解釈するために、上記のような詰まりは発生しないと思われるが、今度は画像リンクの解釈がうまくいかなかった。たとえば、xxx/scrn.capt で、「PNG画像」が来るのだが、これを画像と認識してくれず変な表示となる。同期式に変えた場合にはきちんと表示できるので、JEditorPaneのバグっぽい。

2)Proxy:
AppServerのServletから自分自身へHTTP接続することになるのだが、これが問題のようで、頻繁にConnectionTimeoutする。リトライするようにコードを追加したが、ちょっとましになった程度で安定せず。Servletのスレッドから自AppServerの他ServletへのNetアクセスに制限があるのかもしれない。

2008年11月13日木曜日

SwingはSingleThraedなので、、、

JEditoPaneのHtml表示のスレッドからSwingを使用するような
コードを呼び出してそこが invokeLater() などとしていると
デッドロックになってしまう!!!
 ところで、robot ってSwingスレッドを使用するの?
Maven2でPON.XMLで使用しているVersionをJavaのソースやリソースの中と同期させたいのだが、やり方がわからない。

たとえば、Java側で 特別なクラスを作成し、そこに
static final String VERSION = "0.2-SNAPSHOT";
などど定義しておいて、これをPOM.XMLから
$XXX.YYY#VERSION
などのように、使用することなのだが、未だやり方が可能なのかも含めて見つからず。
Pluginを自作するしかないのか?

2008年11月12日水曜日

世界のとらえ方

オブジェクト指向に限らず、システム分析の重大な関心事項の1つは対象とする世界(ドメインということが多い)をどうとらえ、どう表現するかということだ。分析の主眼が現状認識であることから、認識したものをシステム的な表現に落とし込むことが主たる作業となる。

対象とするものは複雑なものであったり、変動するものであったり、出来事や関係だったりする。よってそれを理解し管理しやすい塊へと分解してゆくことが求められる。そして、分解の仕方は、「それらをどう取り扱うのか」というシステム目的によって恣意的に変化し、大まかな捉え方から精密なものまで種々のくくり方ができる。

こうしてくくりだした事象をシステム的に表現する場合、塊(事象の枠組み)に対して名称を与え、その事象が持っている属性(プロフィール)を設定することになる。

プロフィールの記述には、「記述可能」特性を使用する。
「記述可能」とは、数値、文字、日付のような、何らかの文字や記号で記録し、他者とコミュニケーション可能なものという意味で用いる。また、記述可能特性には、「比較性」を持つものと持たないものがある。

「比較性」とは、~より大きい小さい、~より長い短い、~より広い狭い、など等号・不等号の関係でとらえることができるものである。言い換えれば数値に換算できるものと言ってもよい。比較可能でないものとしては、たとえば、「名前」や「国籍」などの同じだとか一部が似ているだとかの評価はできるが、不等式での評価ができないものをあげることが出来る。

「記述可能」でない特性としては、音楽や絵画などの時空間との関連でしか意味を持たないものなどがある。

たとえば、対象とする世界を乗り物と考え、子供が使う三輪車と、多くの乗客を乗せるジャンボジェット機を取り上げてみる。この2つのものは具体的なものとして存在し、触れることができるし、それぞれの機能性を持っている。

2008年11月4日火曜日

S2BatchでRestart

BatchがRestartableである時は、Execution_Contextに途中経過が保存され、再実行の時にそれを利用して続きから実行するようになる。
誰が何を書き込めばいいかを調査中。SampleではLOGN:2などの取得番号が保存されている。

2008年11月3日月曜日

大阪王将

また家族で行った。オーダーバイキングなので、できたてでおいしくて、満足度が高い。