Your SlideShare is downloading. ×
Glass fishで作ったアプリをweblogicに移植してみた
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Glass fishで作ったアプリをweblogicに移植してみた

2,320

Published on

#wlstudy

#wlstudy

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,320
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 祝WebLogic 12cJavaEE6 対応
  • 2. JavaEE6 で作ったアプリケーションを GlassFish から WebLogic に 移植してみた 久保智 タイトル長すぎる・・・・
  • 3. こんにちは。
  • 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 社営業まで !
  • 8. 今回移植したアプリケーション• 名前: jsf-scrumtoys-refactord• JavaEE6 の基本機能だけで作成。• JavaEE6 の入門としては最適。詳しくは達人プログラマーを目指してhttp://d.hatena.ne.jp/ryoasai/20110724/1
  • 9. ということでやってみた
  • 10. 1. 何も変更せずに war をデプロイしてみる (1)動くわけがないと知りつつ動かしてみる。管理コンソールからデプロイ。
  • 11. 1. 何も変更せずに war をデプロイしてみる (2)デプロイメント→制御→インストールから war を選択してデプロイ。
  • 12. 1. 何も変更せずに war をデプロイしてみる (3)準備完了になったので選択して起動してみ る。
  • 13. 1. 何も変更せずにwar をデプロイしてみる (4)エラー
  • 14. 1. 何も変更せずに war をデプロイしてみる (5)そういえば、 DB の設定してなかったよ ねーということで、 OracleDB への JDBC 接続を作成。作成方法の詳細はOracle WebLogicServer 11g構築・運用ガイドを参照# ステマ
  • 15. 1. 何も変更せずに war をデプロイしてみる (6)JDBC データソースをアプリに設定してみ る。デプロイメント→ scrumtoys→ 構成→永続 性→ scrumToysPU→ データ・ソースから JTA データソースを設定※GlassFish のデフォルトのデータソースの名前に併せて ます。
  • 16. 1. 何も変更せずにwar をデプロイしてみる (7)エラー
  • 17. 1. 何も変更せずに war をデプロイしてみる (8)しょうがないのでアプリケーションに手を 加える。META-INF/persistence.xmlに jta-data-source の設定を追記。※GlassFish のデフォルトのデータソースの名前に併せて ます。
  • 18. 1. 何も変更せずに war をデプロイしてみる (9)デプロイしなおす。アクティブに ( ゚∀゚ )
  • 19. アクセスしてみる (1)せっかく動いたので、そのままアクセスし てみる。http://localhost:7001/scrumtoys/home.jsfここで動いて、終了の予定でした・・・・
  • 20. アクセスしてみる (2)
  • 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)~~~
  • 22. アクセスしてみる (4)jsf2.demo.scrum.web.controller.scrum. ProjectAction.reset(ProjectAction.jav a:122)ProjectAction.reset の呼び出しあたりが怪 しい。
  • 23. アクセスしてみる (5)実際にソースを見るとこんな感じ。・・・・・・見慣れないアノテーションが 。これは CDI のアノテーション。
  • 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 とかいらない!
  • 26. アクセスしてみる (6)CDI が怪しい?ということで、 SessionBean に ついている @Inject アノテーションを @EJB に 付け替えてみる。※JavaEE5 の範囲です。
  • 27. アクセスしてみる (7)※ 注意今回 EJB 以外も色々インジ ェクションしているので、 これで動かなかったら詰み !心は折れてます。
  • 28. アクセスしてみる (8)動きました。 ( ただしエラー )
  • 29. アクセスしてみる (9)エラーは置いておいて
  • 30. アクセスしてみる (10)• どうも CDI 使用して継承したクラスの親 のメソッドを呼び出すとエラーになるら しい。• 今回 EJB のインジェクションに失敗した のはたまたま。• WebLogic の修正パッチお待ちしており ます。 調べていただいた某お方ありがとうございます。
  • 31. 余談: Ajax 対応JavaEE6(JSF2.0) では Ajax に対応しまし た。使い方はそのまま、<h:ajax>タグを使用するだけ。※ ただし、機能はそれほど多くないので、 RichFaces や PrimeFaces 等を追加で 使ったほうがいいです。※ 今回のエラーの原因は多分これ。
  • 32. 動かしてみる (1)JavaScript のエラーが解消すれば動くはず。
  • 33. 動かしてみる (2)しかし原因が思いつかない
  • 34. 動かしてみる (4)どうすれば
  • 35. 動かしてみる (4)そういえば
  • 36. 動かしてみる (5)別件でこんなリプライをもらったことが。 ※ 念のため名前にはモザイクをかけています
  • 37. 動かしてみる (6)weblogic.xml を入れて起動。
  • 38. 動かしてみる (7)うごいた!
  • 39. 移植のまとめ• JDBC 接続プールを作成するのを忘れずに 。• CDI は現状動作が怪しいのでパッチ待ち 。• weblogic.xml がないと Ajax でエラー。
  • 40. おまけ
  • 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 でも使用されてい る。• 今後、主流になるのは間違いないので、 まだやったことがない人も必ず触ってお いてください。※ もうすでに主流というツッコミは無しで
  • 45. JPA って何? (4)実際のソースはこんな感じ。アノテーションで DB とのマッピングを指 定。
  • 46. JPA って何? (5)• insert はこんな感じ。 em.persist(entity);
  • 47. JPA って何? (6)• update はこんな感じ。 em.merge(entity);
  • 48. JPA って何? (7)• delete はこんな感じ。 em.delete(entity);
  • 49. JPA って何? (8)簡単でしょう?
  • 50. JPA って何? (9)とりあえず試してみては ?
  • 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) とは相性 が良いので、そちらも併せて。
  • 54. JPA 使用上の注意 (4)• 裏では SQL が流れているので、開発は SQL を見ながら!
  • 55. まとめ• JavaEE6 便利なので使用してください。• せっかく動くものがあるので、ぜひ使用 しながら覚えてください。• 個人的には JPA だけでも使用して欲しい 。• Java SE6 はオワコン。• 以下自重。
  • 56. まとめのおまけやっと JavaEE6 の日本語本が出ました。使用する場合はお供に!
  • 57. ご清聴ありがとうございました。

×