月別アーカイブ: 2010年11月

EJB例外

職場で議論があったので整理してメモ。。。

を見ると

チェック例外

Exception拡張。トランザクションを原則ロールバックしない。させたい場合は、setRollbackOnlyでマーキングが必要。

非チェック例外

RuntimeException拡張。ローカルEJB呼び出しの場合はEjbExceptionを、リモートEJB呼び出しの場合は、RemoteExceptionにてラップして応答を返す

とある。Oracleのページでは

チェック済み例外

対象となる EJBメソッドがチェック済み例外 (RuntimeException を拡張しない例外) を送出する場合は、その例外を try-catch ブロックで捕捉する必要があります。一般的には、EJB メソッド内で発生する (EJB メソッドが使用する別のメソッドによって送出される) 例外を捕捉し、その例外を克服するか、それができない場合は、その障害の原因がシステムレベルのエラーまたはビジネス ロジックのエラーのいずれであるか、あるいはトランザクションによって自動的にロールバックされるべきかどうかに応じて、これらの例外をアプリケーション例外または EJBException のいずれかとして再送出することがベスト プラクティスであると考えられています。

アプリケーション例外は、Bean の開発者によって定義された、RemoteException を拡張しないチェック済み例外であるか、または javax.ejb パッケージ (CreateException、DuplicateKeyException、FinderException、ObjectNotFoundException、または RemoveException) であらかじめ定義されているチェック済み例外です。EJBメソッドでは、throws 文でアプリケーション例外が明示的に定義されます。

実行時例外

EJBException などの、java.lang.RuntimeException とそのサブタイプは、対応する EJB コントロールを介して EJB メソッドで送出できます。これらの例外はコード内で明示的に捕捉する必要はありませんが、通常は EJB のローカル インタフェースを使用する EJB コントロールを呼び出すクライアント アプリケーション内でこれらの例外を捕捉することをお勧めします (リモート インタフェースの場合は、EJBException が RemoteException として EJB コンテナによって再送出されます)。

 

最後、JavaDocを見ると

RemoteException は、リモートメソッド呼び出しの実行中に発生する多くの通信関連の例外で使用する共通のスーパークラスです。java.rmi.Remote を拡張するインタフェースであるリモートインタフェースの各メソッドは、その throws 節に RemoteException を記載する必要があります。

リリース 1.4 では、この例外は汎用目的の例外チェーン機構に準拠するように改良されています。「ラップされたリモート例外」は、例外を構築するときに指定し、publicdetail フィールドを介して取得していました。この例外は、リリース 1.4 では「原因」と呼ばれるようになり、前述のフィールドだけでなく、Throwable.getCause() メソッドを介して取得できます。

 

チェック例外を投げるような実装は、あんまり見てない事を思い出した。多分、どっかで細工をしてるんだろう。

明日見てみよう。

もし高校野球の女子マネージャーがドラッカーの『マネジメント』を読んだら

ベストセラー本。発売当初から名前は気になっていたのだけれども、ようやく購入。直前読んでた、難しい本とは違って読みやすく、会社3往復で完了。

内容はもちろん良いですし、言うこと無いんだけれども、しょーじき、程高野球部と全く同じような状況な部活をやっていただけに、当時に読んでいたら、違う自分があったのではと思う。今年のトップ3に入ることは確定。

内容自体は、『マネジメント』のエッセンスを抜粋しているし、その抜粋されている数も消して多く無いんだけれども、その少ないながらの抜粋だけでも、いかに奥の深い洞察が行われているのか、というのが伝わってくる。疲れてるのか、作品が秀逸なのか、そもそもドラマとか映画をろくに見ないので涙腺が緩いのか、ストーリーに感動するような局面もあり、そして『マネジメント』が今の自分が欲しい内容が書かれていることも容易に教えてくれる。

読破に時間がかかりそうな、手付かずになっている本も多くあるなか、気分転換にとして浮気する感覚で買って、読んで良かった。

万人にオススメできそうです。

PS:『マネジメント』は速攻購入。

明解J2EE+アプリケーションサーバ 実践プログラミング

以前書いた行方不明の本。会社で後輩に聞かれて、再度amazonで探してみたところ、見つかったので購入予定。

中古で100円で出てるし。

2005年当時では最も簡単だったJ2EE本。JSP/Servletは10日でできるシリーズで触り始めたものの、EJBに関しては適当な本がなく探しまわって見つけた本。

これを見て、JMSのフレームワークを作った思い出が蘇ります。J2EEも当時からはバージョンも上がっていて、JPAJSFWebサービスやら、新しいテクノロジーも多くなったけど、それでも古典的なEJBを知るには良い本です。

経験知に欠けた勉強会

WebLogic勉強会も、スピーカーが自分の知る限りの知識を披露しただけの会の印象は拭えず。

WebLogicに明るい若手が説明するというお題目もあるのは、設定方法メイン。アプリ開発者に設定方法教える必要があるの?という疑問をそのままに、、、

Javaでは接続プールを使うことでゴニョゴニョ。。。

接続プールでは同時接続数とかを設定してます。

とりあえず、インスタンスごとに別の接続プール使ってるみたいです。。。

虚無僧で接続プールの利用状況は分かって、ここがこーなってると危険ぽいです。。。

ん~。本人は必要なエッセンスだと思ってるんだろうが、全般的に話が表面的でかつ、言葉の端々からその点を臭わせてしまっているようにも感じる。(ハッタリ不足。

また、誤解も多く本なりWebなりでバックボーンは作れてないのは良く分かる。

接続プールってそもそも何ですか?という設問が無いまま新人始め若手に説明して効果があるんだろうか。。。

どの程度成長したかな?とも思って若手向け勉強会と呼ばれる会に参加したものの、悪い意味で想定通り。

#自分が同じ年次だった時の事はさておき

ただ、エキスパートが1年目に教えるよりも2年目が1年目に教えたほうが効率良いことも多いので、そこに期待してます。。。ついで、WebLogicの研修に何人か行かせるようだけれども、J2EEなり、行かせるメンバーを選ぶなりした方が良いのでは?という不満も。

 

つまるところ、勉強会にしろ研修にしろ、然るべきプロセスを経て決まったと印象を、与えられる出来事に対して、自分が持ってる知識や問題認識、経験知がチームと大きくずれている(と思ってしまう)点が、非常にストレスの種。

開発機会が無いとはいえ、フレームワークJ2EEの仕組み、といった点も、ミドルウェアの設定や研修を受けることと同じくらい重要という事に大半の人が気がついていないのか、重要と思っていないのかが・・・。

さて。

「経験知」を伝える技術 ディープスマートの本質

後輩を育てろと言われて久しい中、経験知を伝えるシリーズの完結編。

完結編に辿り着く前に読んだ書籍は別途備忘録レビューします^^

アメリカの学者がリサーチを重ねた結果、たどり着いた結論は、古典的な時間をかけてのOJTが重要と、述べている点は興味深い。とはいえ、そこにたどり着くための要素・分析は非常に細かく驚かされるものも多くありました。

個人的にも引継ぎをしようとすると、言葉では表現できない点や、あたりまえ・常識ではないけれども今更教えること、というような経験があっただけに、考え込む事もありましたが、この本を読んでみると引継ぎ時に悩んでいた局面が全て出てきたようにも感じます。

ということで、殿堂入り(w。

ただ、それにしてもワインバーグもそうだけど、この手、時間とエネルギーをかけずにサクサク読めるようになりたいものです。

特に気に入ったフレーズを抜粋。

無意識的学習により獲得した知識は大雑把に言えば、知識の所有者の表現能力を常に上回る。

無意識の推論に基づく選択や判断の理由を説明しろと言われると、人間は実際の行動と明らかに関係の無いことを口にする

 

 「経験知」を伝える技術 ディープスマートの本質

iPadがやってきたから、もう一度ウェブの話をしよう

いつも読んでいるブログに釣られて購入。電子書籍ってのも興味ありました。

ということで、初めてiTunesにて電子”書籍”を購入。

梅田さんの新聞の連載からの抜粋、ということもありますが、内容としては若さとインターネットの可能性と勇気と、をまとめた感じでしょうか。あとは、この本を読むと一にも二にもiPadが欲しくなります。

そして、中島さんの視点の広さ、鋭さには毎度のこと感服。

こんな人の元で働いてみたいと思わされつつ、連載を読むためだけにWebDBPressを買おうかとすら思うほど、心酔中。

電子書籍アプリとして見た際は、本の重み、厚さを感じられないあたりが、個人的には物足りなく、せめて全体のうちの何ページを読んでいるのかは知りたい、といった印象。

多分、新書で見たら100ページ前後だと思うけれども、モッチー本を読みたいし、電子書籍をひやかしたい人には適当な一冊でしょう。

 

AxisでのTCP Connection Timeout(1)

参考にした実装がイケてなくて、TCPコネクションタイムアウトが実装されていなかったorz

CONNECTIONTIMEOUTPROPERTY トランスポートセンダーが利用するタイムアウト(ミリ秒) Integer

という記述があるので、できそうだ。

もとあった実装は、Stubのタイムアウト設定のみ。せっかくなのでGlassFishで動かしてみることにする。

インストールと思ったけど、すでにインストール済みだった(w。

http://localhost:4848/ が管理画面。

インストーラでポートバッティング起こして気がついた。

C:\glassfishv3\glassfish\bin\startserv.bat を実行したら起動。

この辺は勘だけで何とかなるあたり、捨てたもんじゃない(w。

Axisのライブラリのサンプルに含まれる、webapps/axisをデプロイして、http://localhost:8080/axis/にアクセスしたところ

HTTP Status 500 –


type Exception report

message

descriptionThe server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: java.util.MissingResourceException:

Can’t find bundle for base name i18n, locale ja

root cause

java.util.MissingResourceException: Can’t find bundle for base name i18n,

locale ja

note The full stack traces of the exception and its root causes are available in the GlassFish v3 logs.

 

どうも、サンプルのライブラリには本来は、/web-apps/axis/WEB-INF/classes/配下に

 

という2つのファイルがあるはずなのだが、どういう訳か俺の環境には無かった。

配置して再デプロイで表示を確認。

本当は、Webサービスクライアントを作って、タイムアウトが効くところまで試したかったけど時間切れ。

に、してもこの手の作業が一番楽しい。

スケジュール書いたり、進捗報告したり、ミーティングしたりする事に比べて、どれほどわくわくする事か。。。

続きは(2)として書こう。