JavaEE

eclipseでJPAのメタモデルを自動生成する設定

プロジェクトのプロパティを開く Project FacetsでJPAにチェックを付けてプロジェクトにJAPサポートを追加 プロジェクトのプロパティをいったん閉じる(重要!これをしないとJAPの設定項目が現れない) プロジェクトのプロパティを再び開く Java Persistence…

JAX-RSを使う

JavaEE6でJAX-RSを使う手順のメモ。 JAX-RSで処理するパスのルートを設定 具体的にはjavax.ws.rs.core.Applicationクラスを継承したクラスを作りjavax.ws.rs.ApplicationPathアノテーションを付けます。 以下サンプル。 /** * */ package sandbox.resource; …

ファイルアップロードの最大サイズ指定

久々のエントリです。過去のエントリで あと、セキュリティ面からアップロードファイルのサイズ制限などの設定は必須ですが、アノテーションでしか指定出来ないのは困ります。今回調査したJSFのように、既存フレームワークとの連携が非常にやりにくくなりま…

JSFで会話スコープを終わらせつつ自画面に遷移

若干はまったのでメモ。あるBeanの会話スコープを終わらせるにはConversation#end()を呼ぶわけですが、このメソッドを呼んだからと言ってプロパティが初期化されたりはしません。当たり前と言えば当たり前ですが。このことが若干問題になることがあります。 …

会話スコープとAjax

Converasationオブジェクトによる手動スコープ制御を実現する会話スコープ(@ConversationScoped)。 タブブラウザにも対処できる優れものなんですが、制約があります。それは、URLに特定のクエリパラメータを含めないと会話スコープが有効にならないという…

JSFを拡張子htmlで動くようにする

これまでJSFの動作対象URLを「拡張子xhtml」にしていたのですが「html」で動くようにしたい。 ついでに、xhtmlへの直接アクセスを禁止したい。というわけでちょっと手を加えました。 web.xml FacesServletが動作対象とするservlet-mappingを書き換えます。旧…

JSFのAjaxで外のh:formを再描画する

JSFのf:ajaxで、f:ajaxが囲まれているh:formを再描画するときは <f:ajax render="@form"/> のように書けます。 のように書けます。もちろん、h:formのidを書いても構わないけど、こっちの方が変更に強いです。さてf:ajaxを囲んでいないh:formを再描画するときは? このときは <f:ajax render=":form1"/> のよう</f:ajax></f:ajax>…

Servlet3.0で追加されたファイルアップロードを使う

Servlet3.0から、HttpServletRequest#getParts()というメソッドが追加され、ついにJavaEE標準でファイルアップロードが使えるようになりました。JSFと連携する方法を調査したので、過程と結論をメモしておきます。 @MultipartConfigアノテーションの付いたSe…

JSFのAjaxでValidationが動かない

と思ったらh:messageタグのid値をf:ajaxのrenderに書き忘れてただけでした。 つまりValidationされてたけど結果が描画されてないだけ。Wicketでもこのミスをよくやるんだよな・・・

ui:repeatの中のf:ajax

自分メモ。ui:repeatの中でf:ajaxを使う場合、renderの指定の仕方に注意が必要です。例えばui:repeatでボタンを配置し、自身を含む親タグ全体を再描画したい場合、 <f:ajax render=":f:list" /> のように根元からのパスを指定しないといけないようです。 頭の : を忘れるんですよね。。</f:ajax>…

CDIで管理されるオブジェクトを得る

CDI管理のオブジェクトを得るには以下のようにします。 @Inject private BeanManager beanManager; @SuppressWarnings("unchecked") private <T> T getBean(final Class<T> pType) { final Set<Bean<?>> beans = this.beanManager.getBeans(pType); final Bean bean = this</bean<?></t></t>…

CDIのAOPはAOPプロキシ

当分の間、ビール1杯につき50円貯金することにしました。せこいですが、義援金にしようと。さてCDIではまった点について。 CDIのAOPは「AOPプロキシ」という技術で実現されているようです。 「AOPプロキシ」とは 大雑把に言うと オリジナルを継承していて…

JAX-RSでEJBを使う

タイトル通りだけど、はまったのでメモ。 こちらのサイトを参考に解決。 http://www.coppermine.jp/hasunuma/weblog/2010/05/jax-rsejbinject.htmlなぜこうしないといけないかは分かっていないので勉強が必要です。

JSFでエラーのある項目の背景色を変える

さて今回はJSFで「エラーのある項目の背景色を変える」をやってみます。 Strutsにある機能だし、これくらい簡単にできるだろう、と思ってたら・・・けっこうめんどくさいことになっています。 基本的なアイデア 標準で提供されているh:inputTextを使って試し…

JSFでのメッセージにpropertiesファイルを使う

JSFでメッセージをpropertiesファイルに書く方法を調べてみました。具体的には、以下を行う方法の調査です。 メッセージをpropertiesファイルに書く メッセージにはプレースホルダを含める そのメッセージからFacesMessageを作る(もちろんプレースホルダを…

ConversationScopedを使ってみる

EntityManagerで困っているのはちょっと置いておいて、ConversationScoped(会話スコープ)を使ってみます。 ポイントはConversationインターフェイスを持たせるクラス @ConversationScopedアノテーションはConversationインターフェイスと共に使う、という…

JavaEE6ではまったことをいくつか

組み込みGlassfish3.0.1でJavaEE6を試していてはまったところをいくつかメモしておきます。 JSFのXHTMLからは@Namedアノテーションが付いたBeansにしかアクセス出来ない JSFのXHTMLの中からアクセスするBeansには@Namedアノテーションが必須らしいです。 と…

JSF2.0+JPA2.0+eclipse 構築編:JPAでの例外の解消(その4)

引き続き例外の調査です。前回Glassfishのサーバを立ててデプロイしてみて、persistence.xmlのtransaction-typeをRESOURCE_LOCALにしているために起動に失敗している、ということが分かりました。今回はここをJTAに変えて動作させてみます。 データソースの…

JSF2.0+JPA2.0+eclipse 構築編:JPAでの例外の解消(その5)

さて前回、GlassfishサーバでJPAを動作させることに成功しました。 persistence.xmlのtransaction-typeをJTAにすればいいようです。 今回は組み込みGlassfishでこれをやってみます。 データソースの追加 組み込みGlassfishでデータソースを追加するにはどう…

JSF2.0+JPA2.0+eclipse 構築編:JPAでの例外の解消(その3)

相変わらず例外の原因が分からず苦しんでいます。前回、persistence.xmlに誤りがないことを確認しました。今回は組み込みではなく、サーバ形式のGlassfishにWARをデプロイしても同じ現象が起きるかどうかを見てみたいと思います。 Glassfish 3.0.1 のインス…

JSF2.0+JPA2.0+eclipse 構築編:JPAでの例外の解消(その2)

前々回から苦しんでいる例外の原因、さっぱり分かりません。ちょっと目先を変えて、persistence.xmlの書き方がまちがってないことを確認しておきます。 テスト用mainメソッドの作成 EmployeeServiceにmainメソッドを作ってgetAllメソッドを呼び出してみまし…

JSF2.0+JPA2.0+eclipse 構築編:JPAでの例外の解消(その1)

JPAを使おうとしたら例外が出たので原因を調査して解消を目指します。 なんで素直に動作してくれないんだろ?例外スタックトレースの肝(と思われる)は以下。 java.lang.IllegalStateException: Unable to retrieve EntityManagerFactory for unitName null…

JSF2.0+JPA2.0+eclipse 構築編:JPAを動かす

前回までのプロジェクト構成にミスがありました。 src/java/test下のパッケージが「sandbo.***」になっていました。 正しくは「sandbox.***」です。さてJPAに入りましょう。persistence.xmlを書かないといけません。なんかトラブる予感がするなぁ。 DBの選定…

JSF2.0+JPA2.0+eclipse 構築編:やり方を見直す

前のエントリで glassfish-embeddedの起動が遅い web.xmlを書くのがめんどい とぼやいていたらid:shinさんにコメントで耳寄り情報をいただいたので早速試してみました。 glassfish-embeddedは再起動せずに再デプロイするようにする 今まではクラスに変更入れ…

JSF2.0+JPA2.0+eclipse 構築編:JSFに触れる

JSFがちゃんと動いているかどうかを検証するために、ちょっとした動的ページを作ってみます。 拡張子の変更 前回までの設定でJSFのページには拡張子「.jsf」でアクセス出来るようにしていました。でもこれではサーバ側の実装がJSFというのがバレバレです。こ…

JSF2.0+JPA2.0+eclipse 構築編:現時点のプロジェクト構成

前のエントリでBootクラスの作りを見直し、更にweb.xmlをなくすという暴挙(?)に出たので、ここでいったんプロジェクトの中身を確認しておきます。 ファイル構成 現在のファイル構成です。 web.xmlを削除してServletRegistererを追加しています。 ファイル…

JSF2.0+JPA2.0+eclipse 構築編:glassfish-embeddedを動かす

プロジェクトを作ったところで、次は何をするか・・・選択肢としては JPAのエンティティを作る glassfish-embeddedを動かす と2つくらいでしょうか。まだ私がJSFを触ったことがないので、そちらにつなげるために、まずはJavaEEコンテナを動かすのを目標にし…

JSF2.0+JPA2.0+eclipse 構築編:eclipseプロジェクトの作成

JSF2.0+JPA2.0をeclipseで開発する環境の構築に挑戦してみます。 glassfish-embeddedを利用 プロジェクトで完結した環境を作るためにglassfish-embeddedを利用します。 GlassfishはオープンソースのJavaEEコンテナで、Glassfish3.0.XはJavaEE6の仕様を実装し…

JSF2.0+JPA2.0+eclipse 導入編

JSF2.0+JPA2.0をeclipseで開発する環境の構築に挑戦してみます。 結果でなく過程をなるべく省略せずにメモしていきます。 ちなみにこの組み合わせで仕事したことはありません。 この組み合わせのメリット JavaEE標準の技術なので特定ベンダにロックオンされ…

JSF2.0+JPA2.0+eclipse 感想編:JSF

まだ途中ですがJSF触ってて思ったことのメモ。 URLの拡張子が「.jsf」なのは、「.do」なのと同じくらいいただけない なので次からは「.xhtml」でアクセスできるようにします。 glassfish-embeddedの起動が遅い JSFに慣れるためにTry&Errorで何度もweb.xmlやM…