Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Jsf アプリ作ったった

2,254 views

Published on

2014/08/23 関西WildFly 8(旧JBoss AS)勉強会
http://connpass.com/event/7529/

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Jsf アプリ作ったった

  1. 1. JSF アプリ作ったった ~EE サーバー載せかえ祭り~ 2014/08/23 関西WildFly 8(旧JBoss AS)勉強会 @shinsukeoda
  2. 2. 自己紹介 • 織田信亮@shinsukeoda • 大阪で開発者やってます • http://odashinsuke.hatenablog.com • SQLWorld http://sqlworld.org/ Micorsoft MVP for SQL Server 2012/10~2014/09
  3. 3. アジェンダ • なぜJSF なのか • GlassFish 4.0 に載せる • WildFly 8.0.0 に載せ替え • WildFly 8.1.0 に載せ替え • おまけ(JDBC Driver for SQL Server)
  4. 4. なぜJSF なのか
  5. 5. RDB を使うシンプルなWeb アプリ • Struts やSeasar からの脱却 • 今後Java8 対応の新機能とか入らなさそうだし… • Spring/Grails/Play/Java EE どれにしようか • でかいORM はあんまり好きくない • JPA/.NET Entity Framework 等々 • 諸々の事情で言語はJava (Xtend)が都合よさげ • どうせなら標準のが良くね?
  6. 6. 選ばれたのはJava EE でした
  7. 7. JavaEE 使うとして何で作る? • 一般的なギョームアプリを作るときに… • Pure Servlet + JSP • JavaEE 感が無い • JAX-RS + テンプレートエンジン • 標準っぽくない(偏見?) • JSF • そのままで使えそう
  8. 8. 使ったやつら • JSF + PrimeFaces4.0 => PrimeFaces5.0 • CDI • Bean Validation (JSF のValidation では使わない) • JTA (JPA は無し) • Doma1 => Doma2 • Java7 + Xtend => Java8
  9. 9. 使ったやつら • トランザクションは、リクエスト単位では無くメソッド単位 • @Transactional 使いたかった=> JTA • FlowScoped(Faces Flows) は微妙 • 要件に合わなかった • JSF のValidation にBean Validation はまだ早い感 • Default Group しか対応してない(OmniFaces つかったらいける?) • JSF のValidation は使わずにCDI のinterceptor でUI にエラー 通知
  10. 10. GlassFish 4.0 に載せる
  11. 11. 当時EE7 サーバーがGlassFish 4.0 しか無かった • JTA の@Transactional が上手く動かない • JPA 使った場合は、上手く動いたので何か設定ファイル等の問題? • XADataSource が上手く取れてなかった? • CDI のinterceptor を使ったDoma のLocal Transaction で対 応 • Local Transaction を使いたい箇所と使いたくない箇所が混在 • xmlns:f=“http://xmlns.jcp.org/jsf/core” が動かない • http://java.sun.com/jsf/core に変えるか、javax.faces.jar を 差し替え
  12. 12. GlassFish 4.0 に陰りが… • Oracle の(4.1からの)商用サポート予定が打ち切り • 他に選択肢無いし別に良いけど… • 悪い話しが目につくように… • そんな時WildFly8.0.0 Final が登場! • ついでにJava8 も同時期に登場! • さらにDoma2 も!
  13. 13. WildFly 8.0.0 に載せ替え
  14. 14. WildFly 8.0.0 Final に載せ替え • glassfish-web.xml => jboss-web.xml • 設定してる内容は違うけど… • JTA の@Transactional がちゃんと動いた! • interceptor 使った似非Transactional から移行 • javax.facex.jar を差し替えなくてもOK • Java8 もほぼ問題無し!
  15. 15. WildFly 8.0.0 Final に載せ替え(ダメな所) • Java8 のinterface にstatic method 実装するとCDI でエラー • Weld の問題(https://issues.jboss.org/browse/WELD-1664) • @nekop さんが直してくれました! • Weld 2.2.1 で直ってるけど、諸々の事情でWildFly には載ってない… • StereoType でCDI のScoped を指定しても効かない • CDI のデプロイエラー • 仕様?不具合?
  16. 16. ついでにやった事 • Java7 + Xtend => Java8 + Lombok • 若干不満もあるが、まあそれなりに • Java8 + Xtend ってのもありかも • Xtend のラムダがJava8 ラムダに置き換わってくれたら迷わずGO • Gradle + Doma + Lombok はapt の順番等でハマる • Doma1 => Doma2 • Optional/Date and Time API 対応は良いね!
  17. 17. Java8 にして困ったこと • UI(JSF) 側がDate and Time API に対応していない • 自前でConverter 用意 • Doma のDomain クラスもConverter 書かないとダメなので しゃーない • Optional がSerializable じゃないので使いどころに注意 • そのくらいであまり困らなかった
  18. 18. WildFly 8.1.0 に載せ替え
  19. 19. WildFly 8.1.0 Final に載せ替え • CDI のViewScoped がSerializable じゃないとダメになった! • 仕様?今まで動いてた方が問題? • StereoType でCDI のScoped を指定しても効かない • 8.0.0 から引き続き • Java8 interface static method 問題はそのまま • 8.2 or 9.0.0 Final でWeld のバージョンを上げる https://issues.jboss.org/browse/WFLY-3601 • GlassFish が4.0.1 でWeld のバージョンを上げる https://java.net/jira/browse/GLASSFISH-20922
  20. 20. WildFly 8.1.0 Final に載せ替え(困った所) 今の所無し!
  21. 21. WildFly 8.1.0 Final で起きた問題(他サーバー未検 証) • src/main/resources に日本語のファイルがあるとデプロイエ ラーERROR [org.jboss.as.controller.management-operation] (DeploymentScanner-threads - 2) JBAS014613: Operation ("full-replace-deployment") failed - address: ([]) - failure description: {"JBAS014671: Failed services" => {"jboss.deployment.unit."stereotypetest.war".STRUCTURE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit."stereotypetest.war".STRUCTURE: JBAS018733: Failed to process phase STRUCTURE of deployment "stereotypetest.war" Caused by: java.lang.IllegalArgumentException: MALFORMED"}}
  22. 22. おまけ (JDBC Driver for SQL Server)
  23. 23. SQL Server との組み合わせ • SQL Server 2014 が4月に出たけど、JDBC Driver 繋がるの? • 最新(4.0) はサポートしています • Microsoft Azure のSQL Database はどうなん? • 最新(4.0) はサポートしています • SQL Server JDBC Driver は、Java8 なEE サーバーで使える の? • とりあえず動くけどサポート外です • EE サーバーっていうより、Java8 がサポート外(JRE 7 までが対象)
  24. 24. JDBC Driver for SQL Server • SQL Server 2014 サポート明記 http://www.microsoft.com/en- US/download/details.aspx?id=11774 • JRE7 サポート明記 http://blogs.msdn.com/b/jpsql/archive/2013/09/30/jdbc-jdbc- java-7.aspx
  25. 25. Java8 + JavaEE7 WildFly ( + SQL Server) どんどん試してみましょう!

×