Beanと結合していきます。当たり前ですがFaceletでもコード補完が動きますので、ホイホイやっていきましょう。完成版はこんな感じです。Tagsといって、ふつうのHTMLに対してjsf:valueやjsf:actionを追加で入れていく感じになっています。これならば誰でもできますね。昔のh:inputTextとかを忘れて思い出せずイライラするといった非生産的な状況とはおさらばです。注意点としては、form要素に対してjsf:idを(名前は何でも良いので)入れておかないと動かないという点だけでしょうか。めんどくさいのでformとか何とか入れておいて下さい。最後に完了画面も作っておきましょう。index.xhtmlと同じ場所に「thanks.xhtml」をおいて下さい。index.xhtmlをコピーして削るのが良いかと思います。終わったらもう一度実行ボタンを押しましょう。うまく行けばこんな画面が出てくるかと思います。入力してボタンを押したら完了画面が出ておしまいです。いう作りにしたので・・・データベースの中身を見てみましょう。正常に登録されていました。一発で動いてホッとします(笑)。はい、これでおしまいです。この記事はスクリーンショット等を取りつつ書きつつやったので2時間ちょい程度かかりましたが、そんなことをしなければここまで最速で10分から30分くらいでしょうか。データベースの設定を一度やっておけば、あとは上記2.以降をやればいいので、10分くらいでできるかな。EEも簡単になりましたね。1.2時代のめんどくささと比較しても、雲泥の差です。最初からこうあってほしかった(笑)。EEのこの安定感は素晴らしいですね。繰り返しになりますが、上記の作業手順や生成方法、生成されたファイル群は、本物のお仕事でもそのまま使えるものです。今回は画面遷移や入力値チェック等は省きましたが、その辺は別記事等でフォローしたいなぁと思っています。上記のコードについてダウンロード提供しようと思ったんですが、生成されたコード群がアホみたいに小さいので、是非ご自身でやっていただきたいなと考えまして一旦見送ります。自分でタイピングしないと覚えないので、30分時間を作って是非やってみてください。※ご要望があれば上げます。Ameenさんの記事になります。Calendarの続きなんですが、前回はWebLogicをターゲットにしたんですけど、それだけだとちょっと物足りない感じもするし、何だかOracleの回し者のような気もする(笑)ので、とりあえず他の会社のも簡単に補足しておきたいと思います。EEにはそれぞれ対応バージョンがあり、各社から下記のような形で出ています。7対応は残念ながらまだ出ていないです。JBossのオープンソース版であるWildFly(改名)が最初に出るのではないかな、とは思いますが、現時点では何とも言えませんね。6以前に関しては、概ね選り取り見取りと思ってもらっていいでしょう。最新版さえ選べば、対応しています。ベンダーによっては、最新版の提供は勧めない変な所もありますが、そういったところは品質に問題を抱えているか、もしくはサポート部隊が心許なくクレームを恐れているか、どちらかかなと思ってもらってもいいですし、何て石橋を叩いて渡る顧客思いの会社なんだ、と思ってもらっても良いと思います(笑)。個人的にはサポートライフサイクルが最長である最新版を選択することをお勧めしたいですが、まあそこはご自身で総合的に判断してもらった方が良いでしょう。EEの商用サーバーシェアについては、いろんな調査会社があれこれ出しており、しかも会社によってバラバラの順位だったりするので眉に唾を付けて見る方がいいでしょうが(笑)、国際的にはWebLogic、WebSphereが二強、プラスJBossの三つ巴の戦いと考えてもらえれば良いかなと思います。国内を見た場合には、これに富士通のInterstageやCosminexus辺りがドカーンと参戦している形かなと思います。わたし自身は過去これらのサーバーをだいたい使ったことがあるのですが、残念ながら最近のCosminexusを知らないというのと、WebOTXだけは実物を一度も見たことが無い、という制約はあります。※使った(苦労した)or知ってるけど消えてしまったJava商用サーバーも多いです。(OC4J)とか・・・J2EE前後でかなりの興亡がありましたね・・・で、このなかのどれがお勧めか、と問われると、どうかなぁ、と。どれも一長一短あり、なかには絶対使いたく無いものもありますが、そんなものをここで明け透けに発表したところで私自身には何の得も無いため、まあそこはオブラートに包むとしても、評価基準は幾つか持っておいた方が良いでしょう。基準のひとつとして個人としてお勧めなのは、サポート力です。これは国内にどれだけのサポート部隊を抱えているか、バグなどが発覚した場合に、どのくらいのリードタイムでパッチ等を提供してもらえそうか、営業さんがどれだけ熱心に対応してくれるか、などなど、ここだけ見てもチェックすべき所は多数あります。これは勿論国内ベンダーが強い面もありますし、そうでない所もあります。何が何でもGlassFishを商用サポート付きで使いたいたいんだ!という場合さて、最終手段というか究極の話なんですが、でもGlassFishを愛してやまない、何とかして商用で使いたいんだ、という場合の話なんですけど、選択肢が無くは無いです。実は、上記の製品のなかに、GlassFish互換品が含まれているんです。どれだと思いますか?何と、富士通のInterstageの最新版なんです。2.xを丸ごと取り込みました。3系も取り込んだんですが、しばらく「本番用途サポート不可」という謎のステータスを経て、最新版でようやく正式に対応したようです。6対応になってしまいますが、基本エンジン部分はだいたい同じであり、サーバーの乗り換えに際しての挙動変更を嫌う場合、実は良い選択肢かも知れません。違う箇所もかなりあり、サポートOSの縛りがあるとか、インストーラーが独自すぎてわけわからんとか、管理コンソールとがGlassFishのと違うとか、周辺ライブラリーがごっそり違うとか、過去の遺産を引きずっているところも多分にあります。決める前に実際に試用版を使ってみることをお勧めします。ServerやLinuxなどを用意してもらえれば良いかと思います。4.x系をそもそも採用するかどうか、また仮に採用したとしてもそれはいつなのか、というのは全く不明なので、もし気になる方は富士通の営業さんに実際に問い合わせてみましょう。富士通の場合、国内ベンダーらしく、サポート終了までの数年間は、ひたすら延々と黙々とサポートを続けてくれると思います。GlassFish側も現時点では2.x系および3.x系のサポートについては一応続けています。将来を見据えての乗り換え先としてはそもそも微妙でもありますし、とにかく「最終手段」です。EEサーバーの選択とまあ、一般に結構珍しいのではと思う観点でEE商用サーバーを私の視点で軽くまとめてみましたが、この辺りは意外にも公平な情報に欠ける点が多く、営業さんの営業力や技術者の趣味とか、はたまたお偉いさんによる星取表で決まってしまいがちな所でもありますけど、まあ何せプラットフォーム(土台)でもありますので、ちゃんと頭を使って選んだ方が良いですよ、という当たり前の話としてまとめておきましょう。14:46)こんにちは。Calendarな時期になりましたね。2013の12/7の担当回です。EE界隈でプチ騒動が起きました。何とGlassFishの商用サポートが切られてしまったのです。いった話を以下つらつらと続けてみます。EEは企業用途であり、商売が直接絡む話でもあって、こういった話はソフトウェア発売元もしづらいと思います。困ってる所も結構多いと思いますので、ベンダー各社と全く無関係な筆者が私見をまとめてみました。GlassFish商用版が必要だったのか?この辺りに詳しくない方に一応説明だけしておきましょう。GlassFishは過去2.x系より「商用サポート」というSunおよびその買収会社であるOracleによって提供されてきた「パッチ」が存在します。4.0とバージョンを重ねてきましたが、この「商用サポート」には、何と、例えば3.1.2.2と4.0の間のバージョン、および4.0公開後に修正された一般未公開のバージョンが存在するのです。これまでは、これを購入する場合にはOracleの営業さんに話をして、商用サポート権を購入していた訳ですね。知ってた人は知ってた話ですが、あんまり知らない人は全然知らないという系の話でしょう。この辺りを見れば掲載されています。3系の最新版(最終版?)は何と3.1.2.6なんですね。https://blogs.oracle.com/GlassFishForBusiness/※念のため補足しますと、2.x系および3.x系のサポートについては、まだ一応継続しています。将来のバージョンのサポートが無くなるという話になります。特定の機能がちゃんと動かないとか、緊急の脆弱性が発見された場合に、その一般未公開バージョンがリリースされ、契約者はそれを適用して動作させていたのです。(企業)であり、何が何でも安定運用することが使命付けられたサイトやシステムに使われる事が大前提となっているから、ですね。金融系だと、さらに厳しくて、サービスによっては監督省庁に報告せねばならなかったりします。企業はお金を払って、バグ修正版をもらう権利を買っていたわけです。それはそうですが、修正したことで他の正常に動いていた機能が動かなくなったらヤバいですよね。新しいバージョンが出るたびに、自分が修正した差分を適用していく必要が出てきてしまいます。ここらへんはGitやSubversionのbranchの関係を考えてもらえれば良いでしょう。公式の修正版を買った方が安い・早い・安全なのです。Systemの独特な所なので責めないで下さいね。世界中どこでも、大規模サイト、特に金融系など落ちたら大変なことになる所は、同じ事をやっています。オープンソースだからと自前で改変して独自バージョンをひたすらメンテナンスしているところは、現実の世界では実は多くはありません。GlassFishが使えなければ、WebLogicがあるじゃないかさて、話を元に戻しましょう。EE準拠アプリケーションサーバーを選択する必要が出てくるでしょう。Frameworkとは異なり、多数のベンダーが多数のアプリケーションサーバーとその商用サポートを提供しています。(ウェブロジック)を販売し続けています。EEサーバーの世界シェアNo.1、デファクトスタンダードと言われているものです。一応言い訳をしておくと、筆者はJ2EE仕様準拠前よりWebLogicを使い続けているので、最も詳しいということがあるので、この記事ではWebLogicとしているだけです。6準拠サーバーはありますので、よりどりみどりです。※こちらにWebLogic以外のサーバーを補足しました。EEはさておき、その元ネタであるWebLogicは馴染みが薄いと思いますので、こちらも簡単に説明しておきましょう。Inc.という会社が開発していたJava上で動くアプリケーションサーバーでした。当時はアプリケーションサーバーという名前もあるのかないのか、微妙な時代でした。(テンガー)というものでした。Edition)よりもさらに前の話です。WebLogicはT3というプロトコルを持ち、それを土台としたEJBという独自仕様を持っていました。これはCORBAのモデルを忠実に移植したものであり、現在のEJBとほぼ同じものでした。Brokerと呼ばれる製品と一緒に利用されていました。有名なところとしてはTuxedoやOpenJP1などがあります。トランザクション処理が可能なリモート通信を既に実現していたんですね。Serverという名前になり、トランザクション処理が更に強化されていきました。JPEを経て1999年末にJ2EE仕様の初版(1.2)を出し、そこにWebLogicからEJBが持ち込まれたという経緯があります。WebLogicはJ2EEよりも古い、恐らくJavaで現存する最古の歴史を持つアプリケーションサーバーとなります。Tomcatの登場よりもずっと前です。JServとか別の名前でした。Serverとして販売されている現状となります。7には現状未対応です。7対応をしてくるのでは、と見立ててますが、残念ながら私はOracleの人ではないため、あくまで単なる推測になります。気になる方はOracleの営業さん辺りに聞いてみましょう。2系・3系からWebLogicへ移行するさて、またもや話が逸れてしまったので元に戻り、実際にWebLogicへGlassFishから移行するパターンを考えてみましょう。EEの対応バージョンです。5以降の仕様に準拠しているので、これは問題ありません。EEを開発する場合にはEclipseではなく是非NetBeansを使って頂きたいと日頃から言い続けている筆者ですが、NetBeansは幸いWebLogicにも当然ながら対応しています。サーバーのタブからWebLogicを追加すれば、GlassFishと全く同じように開発ができます。Swap」があります。Beanやその他Javaのファイルも書き換えると思うんですが、GlassFishの場合、Facelet以外を反映するためには再配備が必要になります。Swapはこれが必要ないんですね。NetBeansで書き換えて保存して再実行したら即時反映してくれます。実際の開発作業はこれが無いと結構やってられないので、現実の近代的なエンタープライズ開発現場には必須の機能です。GlassFishには残念ながらこういうプロ仕様の機能は無いので、ここはさすがに商用製品になります。開発にもコストがかかるか、というと、何と先日WebLogicの開発作業のためのライセンス費用が無料になりました。GlassFishと同じように、誰でもいつでもじゃんじゃん使えるわけです。商用サポート締結時に入手可能な膨大なるパッチの入手はできませんので、まあそういう風に割り切って、ですね。developers!http://orablogs-jp.blogspot.jp/2012/10/weblogic-application-server-free-for.html勿論、入手はWebから普通にダウンロードできます。wls_121200.jar」と実行するだけです。下記のようなビジュアルなインストーラーが出てきますので、これを進めるだけです(多少面倒なところあり)。CUI版でもOKですので、Xが起動できない現実の本番サーバーでも普通に作業可能です。開発環境は是非NetBeansを使いましょう。GlassFishと同じく、サービスタブから追加します。Serverに指定を切り替えます。あとは普通通りアプリケーションを「実行」すると、WebLogicが起動してWeb画面が表示されます。何だ、環境的にはほぼGlassFishと同じじゃん!!!プログラムの修正は必要か?基本的にWebLogicは、特に最近のものは、内部のコンポーネントがオープンソース主体にどんどんシフトしてきています。GlassFishと比較しても、特に新しい仕様であるJSF2は同じMojarraが使われていますし、JPAもEclipseLinkです。EE仕様のweb.xmlなどの標準がそのまま動きますので、WARを作成して配備して終わり、だったりします。非互換面はあるのか、と問われると、残念ながら、はい、あります。設定ファイルとしては、Web系の設定ファイルがGlsssFish側は「WEB-INF/glassfish-web.xml」、WebLogic側は「WEB-INF/weblogic.xml」、EJB系がGlassFishが「META-INF/glassfish-ejb-jar.xml」でWebLogicが「META-INF/weblogic-ejb-jar.xml」とファイル名も中身の構成も全く違います。元々の出自が違うのでしょうがない面もありますね。※一応最新版でどっちでも動くようになってますが、そもそも設定できる項目自体が色々違うので、あくまで暫定利用目的と思った方が良いです。挙動的な非互換面としては、古い系のものがあります。違うのが、EJB周りです。WebLogicのEJB周りの仕様は2001年-2004年辺りで実装されたものが延々と使われ続けている経緯があり、初期化タイミングからリモートインタフェースの挙動、あとはWebLogic独自の(WebLogicのWebLogicたる所以でもある)T3プロトコル周りまで含めて、結構GlassFishと異なります。この辺りをGlassFishの挙動をアテにしていたら、結構裏切られることが多く、最悪プログラムの修正も必要でしょう。サーバー内部の実装もOSGI準拠の近代的な後発のGlassFishと比較して、WebLogicはいかにも重厚で巨大であり、何とも古くさい感じがします。6.0であり、そこからディレクトリー構成、設定ファイルを含めあんまり変わってない所も、イケてないところとよく非難される所ではあります。いえアプリを作る側からすると、ちゃんと動いてくれればぶっちゃけどっちでもいい話でもあるかもしれません。これらはかなり細かい面でもあるので、「だいたいそのまま動くよ、但し追加の独自設定ファイル(weblogic.xmlやweblogic-ejb-jar.xml)が必要だよ(特に本番目的だと)」と憶えておいてもらえればと思います。運用にあたっての違いGlassFishの運用も結構細かい知識が必要ですが、WebLogicの運用知識はGlassFishのものとはかなり異なります。Redeploymentという、古いアプリを動かしながら新しいバージョンのアプリを再配備するという、アクロバティックな機能です。これは24時間ノンストップ運用のために必須でありますが、結構きわい挙動もたまにあり、常に安定して動作させるためには現場の知見の蓄積が必要です。無視すればまあ、GlassFishのようにも使えます(笑)またWebLogicにはかなり多くのパッチが提供されており、定期的にマイナーアップデートも出ます。商用サポートに入っていれば専用サイトで提供されていますので、それらを定期的に適用していく作業も必要になります。専任の技術者を育てる必要があります。GlassFishについても本番運用する場合は同じ話ではありますが、WebLogicの方がより多くの(数倍の)項目を設定できるため、そこは注意が必要でしょう。Databaseの関係みたいなもんだと思ってもらえれば良いかなと思います。3系以前からの移行については上記の通り、やることをやればだいたい問題ないと思います。7対応待ちになります。繰り返しになりますが、オラクルの営業さんに聞いて下さい(笑)。私も残念ながら正確なところは知りません。7対応の商用アプリケーションサーバーはどこからも出てません。移行先はこの2013年度末時点で、無いのです。出してね!!まとめ凄く面白くないまとめになってしまいますが、当たり前のことはそれはそれで重要なので、まとめておきます。6対応アプリケーションサーバーになります。Serverになります。6に準拠していれば、(当たり前ですが)基本的なところは互換性があり、動きます。互換性のないところもあり、特にEJB周りと設定ファイル周りは注意が必要です。本番運用に際しては便利な機能も多い判面、パッチ適用も含め注意の必要な箇所も多いため、専門の技術者を揃える方が賢明でしょう。Agetsumaさんの回です。5やら6から逃れられない全国のエンプラ開発現場の方々お疲れ様です。6の場合、そんなもの使えないのである。Scopedで誤魔化すしか無いのである。Scopedは会話(Conversation)の開始・終了を明示的に行わないといけないので、結構めんどくさいということと、どうやれば綺麗に開始・終了できるのかイマイチ成功例がわからなかったのであるが、やっぱり避けられなくなったので改めて何パターンか試してみた。いうのが見つかったので、メモ代わりに紹介しておく。2.1でも実現できるかも知れない。2.2仕様で書いているが、2.1仕様であればjsfc=”h:inputText”とかで書き換える必要がある。※JSFの基本的な作り方については、先週発表のスライドにまとめてあるので、そっちば参照してはいよ。http://www.slideshare.net/iwasakihirofumi/java-ee-7-jsf-22とりあえず、ポイントは一体どこで会話をスタートさせるのか、だ。Viewで引っかけて強引に呼ぶ例をWebで見つけた。他にもGetterメソッドを作ってFaceletの先頭で表示させるついでに#{bean.property}で強引に呼び出す方法もあるが、こっちの方がスマートかも知れないし、タイミングは早いから安全ではある。f:eventを書くのめんどくさいけど。注意点としては、開始と終了の書き方はほとんど固定で、下記のように書くしかなさそう、という点だ。間違って2回conversation.start()が呼ばれると、前に格納されていた値は全消去されてしまうので、あくまで最初に1回だけ呼んでやる必要がある。ここを間違えると「?」な挙動になるので注意するべしである。1頁目の先頭でf:eventにて強制的に呼び出す。ポストバックでなくて、且つ、会話が開始されてなかったら開始する。1画面目でボタンが押された際のメソッド。書かなくても行けるけど念のため。2画面目でボタンが押された際のメソッド。書かなくても行けるけど念のため。3画面目でボタンが押された際のメソッド。会話を完了させて遷移する。会話が開始されてたら終了する。value="completed"/></form></h:body></html>[/html]実行結果1画面目。入力された値が表示されている。入力された値は生き残ってる。下のボタンを押すと会話が完了し値が消え、1画面目に戻る。Conversationが再度startされているので、値は消えて再度状態が開始されている(つまり空っぽ)。7が出てもそのまま持って行ける。7への移行の際には画面に影響があるのである。2013報告会の2回目を福岡でやってます。技術編http://atnd.org/events/45326数日前に日本Oracle本社で喋らせて頂いたのですが、今年の5月、去年同じ場所で喋らせてもらった時と比較して考えても、現場の熱がだいぶ上がってきたなぁという感じがしています。EEが凄いですね、という話です。やってきた身としては、ああ、そうなんだ、という感じではあります。1.3が出た頃辺りかなと。要するに、これから盛り上がりますよー、という前兆が見える状況にようやく至ったと考えるわけです。いつもどっちかというと煽る側に立つ身としては、使えるものじゃないと煽ってもしょうがないよね、というのもあります。5は放置してきた経緯があります。6っていいよ、と言い続けてきた甲斐があったものというものです。EE仕様の部分部分の情報はある程度みなさん共有できているものの、こうやったら上手く作れる、という知見については、やはり日本語書籍がほぼゼロという状況もあり、これからという非常に悲しい状況ではあります。2.2について、NetBeansを使ってウルトラ超簡単な作り方のコツを1ステップずつやってみるものを作ってみました。Shareに掲載しようかと思ってますので、興味のある方は後ほどご覧下さいませ。Shareに上げました。6の座談会に出ることになった。福岡より飛行機で行きます。(受付終了)http://www.oracle.com/webapps/events/ns/EventsDetail.jsp?p_eventId=170343&src=7863984&src=7863984&Act=31この座談会のセミナーは既に受け付け終了してしまっているのだが、講演の様子は後日記事になるらしく、そこで參照していただければと。私も告知を知らなかったので案内出來ませんでしたことよ(×_×)ちなみに前回・前々回のものは既にWeb記事になっているので、そちらを参照して頂きたい。7ネタを入れたので前回と少し違う方向性になるのではと思う。思うだけなのでどうなるかは不明であるのだが、大筋はあまり変わらない予定である。7対応版がいよいよ来年より登場してくると考えている。手を付けても罰は当たらない(投資が無駄にならない)頃かなと思っているのだが、どうだろうか。大量なので一朝一夕に追いかけられないため、徐々にキャッチアップしていくのが賢い戦略であろう、と思う次第である。