WebLogic + SpringFramework 最新事例「第5回WebLogic Server勉強会@東京」資料
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

WebLogic + SpringFramework 最新事例「第5回WebLogic Server勉強会@東京」資料

on

  • 4,161 views

第5回WebLogic Server勉強会@東京の資料です。当資料は講演者 日本Springユーザ会会長長谷川裕一 氏の資料です。

第5回WebLogic Server勉強会@東京の資料です。当資料は講演者 日本Springユーザ会会長長谷川裕一 氏の資料です。

Statistics

Views

Total Views
4,161
Views on SlideShare
4,148
Embed Views
13

Actions

Likes
1
Downloads
45
Comments
0

1 Embed 13

http://www.slideshare.net 13

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

WebLogic + SpringFramework 最新事例「第5回WebLogic Server勉強会@東京」資料 Presentation Transcript

  • 1. 第5回WebLogic Server勉強会@東京 資料 2009年11月27日 合同会社Starlight&Storm
  • 2. Javaアプリケーションプロジェクトを成功に 導くための肝 Webアプリケーションの改善 Springを使ったアーキテクチャ・リファクタリング 2
  • 3. 問題外のWebアプリ Find FindAction Oracle Employee ブラウザ • 時々見かけるパターン • 機能追加はクラスの追加 – 重複コードが山ほど存在 • Unitテストは99.999%おこなっていない • 設計書も99.999%ない。UMLでの記述など論外 3
  • 4. 真面目に作ったWebアプリ Employee Employee Service Dao <<Singleton>> <<Singleton>> FindAction Employee Employee Oracle ServiceImpl DaoOracle ブラウザ 利用 利用 生成 生成 Factory • 自前で真面目に作ったWebアプリ • 設計的には問題なし – 色々作り込むのは面倒 • Unitテストやメンテナンスに問題 4
  • 5. 真面目なWebアプリのSource • 分岐が多いため、Unitテストが困難 • 共通化できる部分が未分離 Employee ServiceImpl • 例外処理とConnectionの引き渡しが連続性を阻害 public class EmployeeServiceImpl } catch(Exception e) { implements EmployeeService{ conn.rollback(); ・・・ ・・・  public List findAll() throws Exception { } finally { if(Log.flag) { System.out.println(“***Start”); } conn.close(); Connection conn = null; ・・・ ・・・ } EmployeeDao dao if(Log.flag) { System.out.println(“***End”); } = (EmployeeDao)Factory.create(KEY); return employeeList; List employeeList = null; } try { ・・・ employeeList = dao.findAll(conn); conn.commit(); 5
  • 6. 共通部品を導入してても… Transaction Utility • 共通処理の実装が面倒 Class Class • 共通処理の使い方を覚える必 要がある Employee ServiceImpl • …etc public class EmployeeServiceImpl implements EmployeeService{ transaction.commit(conn); ・・・ } catch(Exception e) {  public List findAll() throws Exception { transaction.rollback(conn); log.start(); } Connection conn = null; log.end(); ・・・ return employeeList; EmployeeDao dao } = (EmployeeDao)Factory.create(KEY); ・・・ List employeeList = null; try { conn = transaction.start(); employeeList = dao.findAll(conn); 6
  • 7. Springを利用したWebアプリ Employee Employee Service Dao Employee Employee FindAction Oracle ServiceImpl DaoOracle ブラウザ 生成 生成 Injection Injection Spring Transaction Utility Class Class • Factoryを実装する必要がない – クラス(開発者)はDIコンテナに依存しない • 共通処理はAOPで後から追加 – ソースコードには記述しない 7
  • 8. Springを利用したWebアプリのSource • 作るの簡単 • Unitテストも簡単 public class EmployeeServiceImpl implements EmploeeService { @Autowired private EmployeeDao dao; 書くことがなくなりました・・・   public List findAll() { return dao.findAll(); } ・・・ 8
  • 9. メンテナンス性が重要 • エンタープライズ系のシステムはメンテナンス性が 重要 – システムの寿命は長い – 機能追加/変更は頻繁に発生する 価値 大きな障害 従来の考え方 機能変更 障害の修正 ビジネス環境 機能追加 の変化 経過時間 9
  • 10. Springの利用事例(国内) • JSUG調べ(2006/4) – Webアプリ(イントラ)や社内フレームワークなど • 最近の利用傾向 – 大規模ミッションクリティカルな案件での利用が増加 – 大手SIerのフレームワークのベースとして利用 – OLTPだけでなくバッチでも利用 – 技術的な傾向 • リッチクライアントの利用、レガシーシステムとの統合 – 今後の注目 • SpringDM(OSGi)、Grails 10
  • 11. WebLogicとSpring • Springはサポート対象です – WebLogic 8.1~ • WebLogic Server 10g Release 3 (10.3) – SpringFramework 2.0.2 • OTNの「BEA WebLogic Server でサポート 対象のコンフィグレーション」ページからサポー ト対象をたどってください 11
  • 12. 経験を重ねて最近、分かってきたこと こういうことを 伝えてきた
  • 13. こんなことになっていた 維持するのがやっと 機能追加や変更を加えると…
  • 14. Javaフレームワークで生産性向上 Struts + SpringFramework連携 14
  • 15. Struts • 国内ではMVCフレームワークのデファクトスタンダー ド – Apacheプロジェクト – 根強い人気の 1.x と、イマイチ人気がない 2.x 定義 ファイル Struts Action Model Action Form JSP (Tag) 15
  • 16. Struts1.x + Spring1.x 連携 • リクエストプロセッサを置き換える方法がお薦め – AutowiringRequestProcessor この関連が問題 イベント Xxx Struts 生 成 ServiceImpl Action 注入 生成 struts- struts- config.xml config.xml application application Context.xml Context.xml Spring 16
  • 17. AutowiringRequestProcessor struts-config.xml RequestProcessor ・・・ の置き換え。 <controller processorClass ="org.springframework.web.struts.AutowiringRequestProcessor" /> ・・・ Actionクラス public class HelloAction extends Action { private HelloService hello; ・・・ public void setHelloService(HelloService hello) { この他に、ActionFormだと this. hello = hello; か、定義ファイルに記述する } 内容も多くて、ここに書きき れないくらい大変! ・・・ 17
  • 18. Struts2.x + Spring2.x 連携(1) • Struts2は、Struts1.xとWebWork2(DIコンテ ナ付き)が合体したもの – ActionはPOJOとして作成可能 – 定義ファイルは最小限(もしくは不要) • JSPはcontentフォルダに配置 • Actionクラスは、actionフォルダに配置 • xxxActionという名前で、xxx.jspが呼ばれる • etc... – そして、Easy Spring integration! 18
  • 19. Struts2.x + Spring2.x 連携(2) • struts-spring-plugin-x.x.x.jarを入れると ActionがSpringのDIコンテナで管理されるよ うになり、直接ServiceをDIできるようになる 最小構成の例(定義ファイル無し) イベント Xxx Struts ServiceImpl Action 注入 生成 生成 Spring 19
  • 20. サンプル hello.jsp ・・・ <html> <body><s:property value="message"/></body> </html> HelloAction public class HelloAction { private String message; @Autowired private HelloService hello; public String getMessage() { return message; } public String execute() throws Exception { message = hello.message(); この例だと、struts.xmlは不 return "success"; 要。Springの定義ファイルも } 2行程度。 } 本当にこれだけでOK! 20
  • 21. 合同会社Starlight&Storm (since 2008) • 最近のコンサル事例 – B2B ECサイト構築 • Seasar2, Teeda, DBFlute... – 基幹システム統合 • Spring, Flex/AIR, iBATIS... – 標準フレームワーク構築 • Spring, Velocity, SpringJDBC, iBATIS... – B2Bサイト構築 • Spring(WebFlow,Portlet,Batch...), ESB Mule... • 教育コース – Spring2入門など – 詳しくは「www.starlight-storm.com」をご参照ください • お問い合わせ先 – info@starlight-storm.com 21
  • 22. JSUG(日本Springユーザ会) • 2006年7月に発足 – 国内でのSpringに関する情報の発信や収集を目 的に、活動 – http://springframework.jp/ • 主な活動内容 – 勉強会 • 2ヶ月1回程度(不定期開催) – ML • 現在約600名 • http://groups.google.co.jp/group/jsug 22