プロパティタグをフィールドで指定する方法だとsuperclassでの定義を取得できないからセッターメソッドで指定するように変更。
でもネストしたcomponentは対応できてない…そしてparamNameのvalueでparam="\"value"\""なんてしても結果としてvalueが"で囲われてるとXDocletで除去してしまう。なのでparam="\"\"value"\"\""としないといけない。
このソースから ・Component.java package seasar.xdoclet; /** * コンポーネントの説明 * * @seasar.component name="Component" */ public class Component { /** @seasar.property val="100" */ private int propety1; /** @seasar.property val="false" …
コンポーネントの場合は特にタグを付けなくてもクラス名取得するだけで登録はできる←これじゃ何でもかんでもdiconに登録してしまうやん… メソッドタグとしてモックタグを用意してモックコンポーネントを出力したら便利かな(フラグで注入先にどっちを設定す…
いつもコンポーネントを作ってdiconに登録するのを忘れる(Kijimunaちゃんと使え)ので試しにXDocletでdiconファイルを生成してもらうことにしようかと考え中。ってことで練習がてらj2ee.diconを生成してみた。 ・テンプレート(j2ee.dicon.xdt) "" "" "" "…
JSP2.0で${POJOForm.hoge}として値を取得する場合に、requestの”hoge”にはBeanValidatorFormのインスタンスがセットされているため、${POJOForm.hoge}がエラーになってしまいその回避策として。
POJOをActionFormとして使ってみたのはいいけれど、Viewで値を取り出そうとしたら実はBeanValidatorFormなので全然駄目だった…POJOActionだったのでリクエストが触れずAction実行後にAOPを使ってリクエストにPOJOのインスタンスに戻して突っ込むことにした。…
・S2DaoV1.0.17 例えば、 INSERT INTO ITEM (ID, NAME) VALUES (/*id*/1, /*name*/'名前') というsqlファイルを用意しておいてS2Daoで実行させると、 INSERT INTO ITEM (ID, NAME) VALUES (/*id*/1, /*name*/'名前' てな感じで右括弧が消えた状態で実行され…
さっそくお目当てのScriptingをやってみる。まずはどかっと必要なもんをゲットしておいて、どんっとリスナを登録する。 // Forces the canvas to always be dynamic even if the current // document does not contain scripting or animation. canvas.setDo…
理想としては、 ViewerPort上でマウスクリック ポイント上のElementでイベントFire Elementを使ってフガフガ… ってのを追い求めていたのだけれど、一向にやり方が、というか出来るのかもよくわからない。Scriptingのドキュメントを見たら独自にbatikで定義し…
いいかげん疲れたのでちょっと便利なサムネイルを自分で作ったスカスカアプリで使えるように改造しよう。で、すぐに出来てしまった。そりゃ該当部分をコピペするだけだもの。さて後何して遊ぼうか。とりあえず以下の2点について調べることにしよう。 DOMの…
UserAgentについて調べてみることにした。そもそも、UserAgentなるものは以下の二つがある。 org.apache.batik.bridge.UserAgent org.apache.batik.swing.svg.SVGUserAgent それぞれ、 public interface UserAgent An interface that provides access to the…
JSVGCanvasへの機能追加は、Interactor なるインタフェースを実装すればいいらしい。デフォルトでは以下のInteractor が組み込まれている。 /** * An interactor to perform a zoom. * Binding: BUTTON1 + CTRL Key */ protected Interactor zoomInteractor …
ってことでさっそくサンプルアプリとして付属しているSVGBrowserを見てみることに。Browserの起動はこんな感じ。バイナリ版を解凍したディレクトリのbatik-squiggle.jarがSVGBrowser本体。 cd java -jar batik-squiggle.jar とりあえずサムネイル機能はナイ…
ひょんな事からSVGを触ることになったので、Javaだと何か便利そうなのないかなと探したら、batikなるものを見つけた。他にもないか探したが、特に目に付くものはなかったので早速インストールからはじめてみる。 ・System Requirements -JVM:A Java 1.3 or …
非常に非常に貴重なサンプルを見る限り、フォントの指定は名前で行っていたので真似してみたが一向にフォントが変わらない。別段間違ったフォント名を指定してもエラーにはならない。でもってググってみたら、PerlMagickで同じようにハマった人がいてその時…
しかしspringframeworkがわからないからどんな感じで動作してるのかよーわからん。何とかBeanがいっぱいある。既存のロジッククラスの任意のメソッドのスケジューリングができるっぽいので結構興味あり。Quartz自身はなんとなく雰囲気が掴めたのでおっかける…
で調べてみたら、JobInitializationPluginなんてのがいて設定ファイルからJob/Triggerを読み込んでくれます。 org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin org.quartz.plugin.jobInitializer.fileName = jobs…
ここでやっとJobの登録。 long ts = TriggerUtils.getNextGivenSecondDate(null, 15).getTime(); いきなりご登場のTriggerUtilsはTriggerに対するユーティリティクラス。このgetNextGivenSecondDateってのは指定Dateから指定秒数経過後のDateを返してくれる…
サンプルプログラム:SchedTestを弄ることにした。 // mainにて schedTest(new org.quartz.impl.StdSchedulerFactory()); まずはSchedulerFactoryを調べてみる。デフォルト実装としてStdSchedulerFactoryが提供されている。ほとんどの場合こいつを使えば事足…
数あるJobStoreの違いを理解し、適切な選択を行いなさいと書いてあるっぽい。プロパティファイルで設定ができるらしい。SchedulerFactoryなんてのも出てきてる。JobStoreは裏方さんだからおまえのコード中で直接使うなと言ってらっしゃる。結局何者なのかは…
こいつはこんなイベントを受け取る。 ・Trigger/Jobの追加、削除 ・Schedulerの深刻なエラー ・Schedulerのシャットダウン、その他 Globalとかnon Globalの区別はない。org.quartz.SchedulerListenerを実装する。
それぞれ以下のイベントを受け取る。 TriggerListener ・Triggerのfire/miss-fire ・Triggerの終了 JobListener ・Jobの実行 ・Jobの終了 リスナの作成はorg.quartz.TriggerListener、org.quartz.JobListenerを実装する。 リスナは必ず名前を持つ→getName()…
スケジューリングされたタスクの例とかJavaのTimerを使った場合のサンプル等…そして本題へ >Beyond the Ordinary とりあえずQuartzの利点が紹介されている。ダイナミックなトリガ、PersistentなJob等。どうやらレポートツールを作っていきながらQuartzを解説…
ProxyActionでLookupDispatchAction使ったら、NullPointerExceptionが発生した。どうやらActionにActionServletが設定されていないようだ…ソースを見るとActionUtils#createActionでActionオブジェクトを取得しているのだが、ActionUtils#processActionCreat…
>Plug-Ins いわゆるプラグインでどうこうができるらしい。詳細はorg.quartz.plugins パッケージのドキュメントを見なさい、と。 >Jobs メール送信とかEJBのinvokeとかのユーティリティJobsがあるんだってさ。org.quartz.jobs にあるってさ。メール送信は、or…
>Clustering org.quartz.jobStore.isClusteredをtrueにして使うらしいんだけど、差し当たり必要ではないので無視1 >JTA Transactions org.quartz.scheduler.wrapJobExecutionInUserTransactionがどうとか…正直JTAは理解していないのでようわかりません。
ってことでこいつらの設定が必要です、と。 ・ThreadPool ・JobStore ・DataSources (if necessary) ・The Scheduler itself >ThreadPool 適切なサイズを見極めて設定しなさい、と。Poolが空だと待ち時間が発生するからmiss-fireになっちゃうこともあるんだ…