More Related Content Similar to Glass fishで作ったアプリをweblogicに移植してみた Similar to Glass fishで作ったアプリをweblogicに移植してみた (20) More from Satoshi Kubo (14) Glass fishで作ったアプリをweblogicに移植してみた4. 自己紹介
• 名前 久保智
• Twitter_id @megascus
• Java が好きです。
• 仕事では Java 書いてません。
• JavaEE6 で作りたい・・・・・
• Weblogic 経験
延べ 20 時間 ( これ作ってる時間だけ )
5. 注意点
• これは個人がやってみた範囲での内容で
す。
• 内容については Oracle 社には問い合わせ
をしないでください。
• Java SE6 はオワコンなので、実際に
動作させる場合は Java SE7 を使用し
てください。
6. 概要
• GlassFish 上で動くように作成されたウェ
ブアプリケーションを WebLogic で動く
ようにするまでの記録です。
• GlassFish3.1.1+Derby から WebLogic
12c+OracleDB へ移植しました。
• 趣旨としては JavaEE6 は便利なので
、とりあえず動くものを体験して
JavaEE6 で作ろうぜ。
7. GlassFish って何?
• 2009 年 10 月に JavaEE6 に対応してい
たウェブアプリケーションサーバー。
• JavaEE6 の RI( 参照実装 ) 。
• NetBeans インストールするとついてく
る。
• 基本無料。
• だけど Oracle 社のサポートも受けられる
よ。
• 詳しくは Oracle 社営業まで !
14. 1. 何も変更せずに
war をデプロイしてみる (5)
そういえば、 DB の設定してなかったよ
ねーということで、 OracleDB への
JDBC 接続を作成。
作成方法の詳細は
Oracle WebLogic
Server 11g
構築・運用ガイドを参照
# ステマ
15. 1. 何も変更せずに
war をデプロイしてみる (6)
JDBC データソースをアプリに設定してみ
る。
デプロイメント→ scrumtoys→ 構成→永続
性→ scrumToysPU→ データ・ソース
から JTA データソースを設定
※GlassFish のデフォルトのデータソースの名前に併せて
ます。
17. 1. 何も変更せずに
war をデプロイしてみる (8)
しょうがないのでアプリケーションに手を
加える。
META-INF/persistence.xml
に jta-data-source の設定を追記。
※GlassFish のデフォルトのデータソースの名前に併せて
ます。
21. アクセスしてみる (3)
org.jboss.weld.exceptions.CreationException: WELD-000079 Could not find
the EJB in JNDI: class
jsf2.demo.scrum.application.scrum_management.impl.ScrumManager$772
932747$Proxy$_$$_Weld$Proxy$ at
org.jboss.weld.bean.SessionBean.create(SessionBean.java:303) at
org.jboss.weld.context.AbstractContext.get(AbstractContext.java:107) at
org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanI
nstance.java:89) at
org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandl
er.java:104) at
org.jboss.weld.proxies.ScrumManager$772932747$Proxy$_$
$_WeldClientProxy.reset(ScrumManager$772932747$Proxy$_$
$_WeldClientProxy.java) at
jsf2.demo.scrum.web.controller.scrum.ProjectAction.reset(ProjectAction.ja
va:122) at jsf2.demo.scrum.web.controller.scrum.316313216$Proxy$_$
$_WeldSubclass.reset(316313216$Proxy$_$$_WeldSubclass.java) at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
~~~
24. 余談: CDI の簡単な説明 (1)
• JavaEE6 での新機能。
• CDI とは Contexts and Dependency
Injection の略で以前は WebBeans と呼
ばれていた。
• 今まで JavaEE の範囲だと Servlet 等し
か DI できなかったのを広範囲に拡張し
たもの。
• オブジェクトのスコープの制御もできて
便利。
• JavaEE6 の ( 個人的 ) 目玉機能の一つ
25. 余談: CDI の簡単な説明 (2)
使い方 ( 一例 )
1. WEB-INF/beans.xml を作成。
2. Injection したいクラスに @Named ア
ノテーションを記述。
3. Injection 先に @Inject アノテーション
を記述。
これだけで DI が!
もう Seaser とか Spring とかいらない!
30. アクセスしてみる (10)
• どうも CDI 使用して継承したクラスの親
のメソッドを呼び出すとエラーになるら
しい。
• 今回 EJB のインジェクションに失敗した
のはたまたま。
• WebLogic の修正パッチお待ちしており
ます。
調べていただいた某お方ありがとうございます。
31. 余談: Ajax 対応
JavaEE6(JSF2.0) では Ajax に対応しまし
た。
使い方はそのまま、
<h:ajax>
タグを使用するだけ。
※ ただし、機能はそれほど多くないので、
RichFaces や PrimeFaces 等を追加で
使ったほうがいいです。
※ 今回のエラーの原因は多分これ。
41. JPA について
• 今回、 GlassFish から Weblogic への移
植と同時に DB を Derby から OracleDB
に変更。
• DML や DDL 等 SQL は一行も修正せずに
移植している。
• そもそも SQL なんて使用していない。
→JPA のおかげ
42. JPA って何? (1)
• 正式名称 :Java Persistence API
• Hibernate 等いろいろある O/R マッピン
グツールを標準仕様化したもの。
• JavaEE5 では v1.0 だったのが JavaEE6
では v2.0 に。
• SQL を書かなくてよくなる分、開発コス
トは削減できる。
43. JPA って何? (2)
• DB 移行なんて今まで現実的ではなかった
けど、今回無修正でできたよ!
• アプリ作成当初は MySQL で作成して、
高可用性が必要になったら OracleDB へ
乗り換えるとかも現実的な範囲で出来
る!
• iBatis なんて不完全な O/R マッピング
ツールはもう古い。 SQL 直書きで DAO
パターンは太古の技術。
44. JPA って何? (3)
• 最近流行っている Play! Framework や、
Google Apps Engine でも使用されてい
る。
• 今後、主流になるのは間違いないので、
まだやったことがない人も必ず触ってお
いてください。
※ もうすでに主流というツッコミは無しで
51. JPA 使用上の注意 (1)
• JPA1.0 は機能が弱いので、 1.0 しか使用
できない場合は使用しないほうが良い。
• その場合は、 Hibernate 等を直接使用す
る方がおすすめ。
• 使うならぜひ 2.0 を。 Weblogic10.3.4
から使えるよ。
52. JPA 使用上の注意 (2)
• すでに設計してある DB に適用する場合相
性が非常に悪い場合がある。
• 非常に沢山のテーブルが数珠のように
延々とつながっている場合はあまり使わ
ないほうが良い。
• そんな DB は設計が悪い。 ( ー `д ー ´) キ
リッ
53. JPA 使用上の注意 (3)
• 既存のものに使うなら JPA に合わせる形
である程度設計変更する気持ちで。
• DDD(Domain Driven Design) とは相性
が良いので、そちらも併せて。