intra-mart im-JavaEE Framework

Similar documents
intra-mart WebPlatform/AppFramework

intra-mart WebPlatform/AppFramework

intra-mart WebPlatform/AppFramework

intra-mart im-JavaEE Framework

intra-mart im-J2EE Framework

intra-mart WebPlatform/AppFramework

intra-mart マスカット連携ガイド

IM-FormatCreator


intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版  

intra-mart WebPlaform / AppFramework

intra-mart WebPlatform/AppFramework

(Microsoft PowerPoint - Java\221\3462\225\224\211\357\224\255\225\\\216\221\227\ ppt)

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版   None

IM-SecureBlocker

intra-mart WebPlatform / AppFramework

intra-mart im-J2EE Framework

Seasar.NET入門

intra-mart im-J2EE Framework

2. バージョンアップ内容 intra-mart WebPlatform/AppFramework Ver.7.1 および Ver.7.2 に対応いたしました SAP JCo 3.0.x に対応いたしました 3. 製品概要 IM-ERP リアルコネクトは SAP システム内のデータをリアルタイムに取

2. 製品概要 IM-ERP リアルコネクトは SAP システム内のデータをリアルタイムに取得 更新するための API SAP リアルタイム連携 API を提供いたします またこれらの API を利用した業務テンプレートが同梱されています 各機能の詳細や設定方法に関しては 各マニュアルまたはセットア

intra-mart Accel Platform

intra-mart Accel Platform

intra-mart e Builder

intra-mart e Builder

— intra-mart Accel Platform セットアップガイド (WebSphere編)   第7版  

S2Pradoの紹介

intra-mart FormatCreator Version6.1

IM-Mail

IM-社内便

intra-mart ワークフローデザイナ

intra-mart AppFramework

V8.1新規機能紹介記事

intra-mart Accel Platform

操作ログ仕様 Version 6.1

intra-mart WebPlatform/AppFramework

PowerPoint プレゼンテーション

ゆみる は こうげきりょく が 2 あがった!

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

J2EEフレームワークプログラミングガイドチュートリアル補足(初級編)

intra-mart WebPlatform/AppFramework

4. 環境要件 WebWrapper および WebWrapper 管理サーバ <Windows 版 > Windows2000Server ( サービスパック 3 また 4 適用済 ), Windows Server 2003 <Solaris 版 > SPARC CPU を搭載する Sun 製ワ

intra-mart Accel Platform — 外部ソフトウェア接続モジュール 仕様書   第3版  

intra-mart Accel Platform — アクセスコンテキスト 拡張プログラミングガイド   第2版  

intra-mart WebPlatform/AppFramework

ハピタス のコピー.pages

Copyright 2008 All Rights Reserved 2

相続支払い対策ポイント

150423HC相続資産圧縮対策のポイント

IM-Mobile Framework

intra-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド   初版  

T2でつなごう! -つなぐつながるWebフレームワーク「T2」の紹介

S2DaoでもN:Nできます

intra-mart Accel Platform — Slack連携モジュール 利用ガイド   初版  


IM-SecureSignOn

今さら人には聞けないAOP入門

intra-mart Accel Platform — IM-BloomMaker プログラミングガイド   初版  

intra-mart WebPlatform

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

Microsoft PowerPoint - グリッド協議会GT4演習資料_2007_配布用

intra-mart WebPlatfrom/AppFramework

IM-Workflow

スライド 1

intra-mart EX申請システム version.7.2 事前チェック

S2BaseとZend Framework

intra-mart Accel Platform — 招待機能プログラミングガイド   初版  


intra-mart WebPlatform/AppFramework

S2Dao入門

OpenRulesモジュール

初心者にもできるアメブロカスタマイズ新2016.pages

- 2 Copyright (C) All Rights Reserved.

Java演習(4) -- 変数と型 --

Copyright 2006 KDDI Corporation. All Rights Reserved page1

intra-mart 販売管理パッケージ

Copyright All Rights Reserved. -2 -!

SpringSecurity

intra-mart WebPlatform/AppFramework

03_さらなる開発生産性向上へ.pptx

IPA:セキュアなインターネットサーバー構築に関する調査

プレポスト【問題】

1 Dependency Injection glue glue glue glue glue GluonJ GluonJ glue Dependency Injection Aspect-Oriented Programming Meets Dependency Injection Rei Ish

! Copyright 2015 sapoyubi service All Rights Reserved. 2

IOWebDOC

intra-mart e-Builder ver 5

Microsoft Word - 最終版 バックせどりismマニュアル .docx

intra-mart Accel Collaboration — ファイルライブラリ ユーザ操作ガイド   第3版  

IM-SecureSignOn

intra-mart Accel Platform — OData for SAP HANA セットアップガイド   初版  



untitled

OpenRulesモジュール

intra-mart e Builder Version7.0 リリース ノート 第 3 版 2009/5/19 1 はじめに (1) intra-mart e Builder が動作するには Java-VM が必要です (2) intra-mart e Builder で開発を進めるには intr

IM-FormaDesigner

intra-mart EX申請システム version.7.2 PDFオプション リリースノート

intra-mart WebPlatform

Microsoft PowerPoint - JavaFesta.ppt

JBoss Application Server 入門

JPA & Kuina-Dao入門

Transcription:

intra-mart im-javaee Framework Version 6.1 Seasar2 連携ガイド 第四版 2008 年 5 月 30 日

<< 変更履歴 >> 変更年月日変更内容 2007/7/31 初版 2007/8/31 第二版 2.1.1 jta.diconの設定誤字 脱字の修正 2007/10/19 第三版 2.1.1.3 UserTransactionの設定を追加 2008/5/30 第四版 2.2 データベースログを追加

目次 << 目次 >> 1 はじめに...3 1.1 目的...3 1.2 Seasar2 プロダクト...3 2 セットアップ...4 2.1 トランザクションマネージャとコネクションプール...4 2.1.1 jta.diconの設定...4 2.1.2 jdbc.dicon...6 2.2 データベースログ...6 3 アプリケーションの作成...7 3.1 前提...7 3.2 im-javaee-frameworkのコンポーネントにdiを適用する...7 3.2.1 アスペクトの適用...11 3.3 イントラマートのセッション情報を取得する...12 3.4 イントラマートのデータベース接続設定を利用する...13 f 作成者 : 株式会社 NTT データイントラマート Page i

intra-mart intra-mart im-javaee Framework(Seasar2 連携ガイド ) Page ii Copyright 2003-2005 株式会社 NTT データイントラマート All rights Reserved.

1 はじめに 1 はじめに 1.1 目的 Seasar2 は DI (Dependency Injection) と AOP (Aspect Oriented Programming) をサポートした軽量コンテナである ここでは im-javaee-framework と Seasar2 の連携方法について述べる 1.2 Seasar2 プロダクト intra-mart 6.1 にはいくつかの Seasar2 プロダクトが組み込まれている 以下が組み込まれているプロダクトの一覧である S2Container 2.4.12 S2Struts 1.3.0 RC-1 S2Dao 1.0.42 Seasar2 プロダクトについては The Seasar Foundation の Web サイトに詳しい情報が記載されている http://www.seasar.org/ 作成者 : 株式会社 NTT データイントラマート Page 3

intra-mart intra-mart im-javaee Framework(Seasar2 連携ガイド ) 2 セットアップ 2.1 トランザクションマネージャとコネクションプール S2Container は独自にトランザクションマネージャやコネクションプールを実装しているがイントラマートが動作するアプリケーションサーバ上で利用するには S2Container はアプリケーションサーバのトランザクションマネージャとコネクションプールを利用してデータベースにアクセスする必要がある ここではその連携方法を記載する 2.1.1 jta.dicon の設定 S2Container が使用するトランザクションマネージャの設定を行う 2.1.1.1 intra-mart WebPlatformを使用している場合 intra-mart WebPlatformを使用している場合はあらかじめ設定されている インストール時にResinを選択した場合はApplicationRuntimeのインストールディレクトリ以下の /doc/imart/web-inf/classes/jta.diconに リスト 2-1 Resinのjta.dicon の設定が記述されている リスト 2-1 Resin の jta.dicon <!-- Resin --> <component name="transactionmanager" class="javax.transaction.transactionmanager"> @org.seasar.extension.j2ee.jndiresourcelocator@lookup("java:comp/transactionmanager") JBoss を選択した場合は j2ee.dicon に リスト 2-2 JBoss の jta.dicon の設定が記述されている リスト 2-2 JBoss の jta.dicon <!-- JBoss --> <component name="transactionmanager" class="javax.transaction.transactionmanager"> @org.seasar.extension.j2ee.jndiresourcelocator@lookup("java:/transactionmanager") intra-mart WebPlatform を使用している場合はこれらの設定があらかじめ行われている Page 4 Copyright 2003-2005 株式会社 NTT データイントラマート All rights Reserved.

2 セットアップ 2.1.1.2 intra-mart AppFramework を使用している場合 intra-mart AppFramework を使用している場合は jta.dicon を使用する Web アプリケーションサーバにあわせて書き換える必要がある 以下のようにトランザクションマネージャやコネクションプールの設定を行うか コメントアウトされている記述を解除することで有効となる リスト 2-3 WebSphere の jta.dicon <component name="transactionmanager" class="javax.transaction.transactionmanager"> @com.ibm.ws.transction.transactionmanagerfactory@gettransactionmanager() リスト 2-4 WebLogic の jta.dicon <component name="transactionmanager" class="javax.transaction.transactionmanager"> @org.seasar.extension.j2ee.jndiresourcelocator@lookup("javax.transaction.transactionmanager") 2.1.1.3 UserTransaction の設定 UserTransaction の設定は intra-mart WebPlatform intra-mart AppFramework どちらの場合でも行う必要がある Jta.diconに リスト 2-5 UserTransactionの設定 が設定されているが デフォルトではコメントアウトされているため これを有効にする必要がある リスト 2-5 UserTransaction の設定 <!-- UserTransaction from JNDI --> <component name="usertransaction" class="javax.transaction.usertransaction"> @org.seasar.extension.j2ee.jndiresourcelocator@lookup("java:comp/usertransaction") 作成者 : 株式会社 NTT データイントラマート Page 5

intra-mart intra-mart im-javaee Framework(Seasar2 連携ガイド ) 2.1.2 jdbc.dicon S2Containerが使用するデータソ-スの設定を行う intra-martはログイングループ毎に異なるデータソ-スに接続しなければならない ユーザがログインするグループ毎に動的にデータソースを取得しなければならないため 通常のデータソースでは動的な取得はできない AutoDetectedDataSourceを利用することで ログインしたユーザによって 動的にデータソースを利用することが可能である intra-martには リスト 2-6 jdbc.diconの設定 の設定が標準で有効になっている リスト 2-6 jdbc.dicon の設定 <component name="initialcontext" class="javax.naming.initialcontext"/> <component name="datasource" class="jp.co.intra_mart.framework.extension.seasar.util.autodetecteddatasource"> <arg>initialcontext</arg> 2.2 データベースログ intra-mart にはトランザクションやコネクションの処理内容をログに出力するデータベースログ機能が存在する データベースログの出力設定に関しては intra-mart WebPlatform/AppFramework 設定ガイド ( サービス編 ) に詳しい仕様が記載されている S2DaoなどS2Containerのコネクションやトランザクションを利用したデータベース処理の内容をデータベースログに出力するためには設定を変更する必要がある リスト 2-7 データベースログの出力設定 はResinの場合の変更例である WebアプリケーションサーバのTransactionManagerやUserTransactionをLoggingTransactionManager LoggingUserTransactionでラップすることで トランザクションのbegin commit rollbackがデータベースログに出力される リスト 2-7 データベースログの出力設定 <!-- Resin --> <component name="transactionmanager" class="jp.co.intra_mart.framework.extension.seasar.jta.loggingtransactionmanager"> <arg>@org.seasar.extension.j2ee.jndiresourcelocator@lookup("java:comp/transactionmanager")</arg> <!-- UserTransaction from JNDI --> <component name="usertransaction" class="jp.co.intra_mart.framework.extension.seasar.jta.loggingusertransaction"> <arg>@org.seasar.extension.j2ee.jndiresourcelocator@lookup("java:comp/usertransaction")</arg> コネクションの処理内容をデータベースログに出力するためには intra-mart が提供するデータソースを利用する必要がある 以下がそのデータソースである jp.co.intra_mart.framework.extension.seasar.util.autodetecteddatasource jp.co.intra_mart.framework.extension.seasar.util.logingroupdatasource jp.co.intra_mart.framework.extension.seasar.util.systemdatasource これらのデータソースを リスト 2-6 jdbc.diconの設定 のように設定することで コネクションの処理内容がデータベースログに出力される Page 6 Copyright 2003-2005 株式会社 NTT データイントラマート All rights Reserved.

3 アプリケーションの作成 3 アプリケーションの作成 ここでは intra-mart と Seasar2 を連携させたアプリケーションの作成方法を説明する 3.1 前提 ここでは以下の内容を前提とする intra-mart がインストール済みである 2 セットアップ の手順に従いセットアップ済みである 3.2 im-javaee-framework のコンポーネントに DI を適用する im-javaee-frameworkのコンポーネントはs2containerによって管理されている サービスフレームワーク イベントフレームワーク データフレームワークの設定ファイルに定義されている各オブジェクトは自動的にS2Containerに登録されオブジェクト同士のバインド対象となる 具体的にDI 可能なオブジェクトを リスト 3-1 DI 対象のオブジェクト 記す リスト 3-1 DI 対象のオブジェクト サービスフレームワーク イベントフレームワーク データフレームワーク ServiceController Transition Event EventListener DAO 例として ServiceController に DI を適用する例を以下に示す まず doc/imart/web-inf/classes/examples/dicon/foo.dicon を作成し ServiceController にバインドするコンポーネ ント定義を記述する リスト 3-2 foo.dicon <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" "http://www.seasar.org/dtd/components24.dtd"> <components> <component class="examples.service.impl.fooserviceimpl"/> </components> 作成者 : 株式会社 NTT データイントラマート Page 7

intra-mart intra-mart im-javaee Framework(Seasar2 連携ガイド ) doc/imart/web-inf/classes/app.dicon に foo.dicon をインクルードする リスト 3-3 app.dicon <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" "http://www.seasar.org/dtd/components24.dtd"> <components> <include path=" examples/dicon/foo.dicon" /> </components> バインドするコンポーネントのインターフェースと実装を作成する リスト 3-4 FooService.java package examples.service; public interface FooService { String dosomething(); リスト 3-5 FooServiceImpl.java package examples.service.impl; import examples.service.fooservice; public class FooServiceImpl implements FooService { public FooServiceImpl() { public String dosomething() { return "bar"; 以上で ServiceController にバインドするコンポーネントの準備は完了である 次に ServiceController 本体と設定フ ァイルを作成する Page 8 Copyright 2003-2005 株式会社 NTT データイントラマート All rights Reserved.

3 アプリケーションの作成 リスト 3-6 BarServiceController.java package examples.controller.service; import jp.co.intra_mart.framework.base.service.requestexception; import jp.co.intra_mart.framework.base.service.servicecontrolleradapter; import jp.co.intra_mart.framework.base.service.serviceresult; import jp.co.intra_mart.framework.system.exception.applicationexception; import jp.co.intra_mart.framework.system.exception.systemexception; import examples.service.fooservice; public class BarServiceController extends ServiceControllerAdapter { private FooService service_ = null; public void check() throws RequestException, SystemException { public ServiceResult service() throws SystemException, ApplicationException { System.out.println(service_.doSomething()); return null; public void setfooservice(fooservice service) { service_ = service; リスト 3-7 service-config-foo.xml <?xml version="1.0" encoding="utf-8"?> <service-config> <service> <service-id>do_something</service-id> <controller-class>examples.controller.service.barservicecontroller</controll er-class> <next-page> <page-path>/index.jsp</page-path> </next-page> </service> </service-config> service-config-foo.xml に設定した BarServiceController は自動的に S2Container に登録され 自動バインドの対象となり 実行時には FooService の実装が自動的にインジェクションされる 同様にイベントオブジェクトも以下のようにイベントフレームワークの設定ファイルに記述するだけで DI が適用される 作成者 : 株式会社 NTT データイントラマート Page 9

intra-mart intra-mart im-javaee Framework(Seasar2 連携ガイド ) リスト 3-8 FooEvent.java <?xml version="1.0" encoding="utf-8"?> <event-config> <event-group> <event-key>do_something</event-key> <event-class>examples.model.event.fooevent</event-class> <event-factory> <factory-class> jp.co.intra_mart.framework.extension.seasar.event.s2eventlistenerfactory </factory-class> <init-param> <param-name>listener</param-name> <param-value>examples.model.event.fooeventlistener</param-value> </init-param> </event-factory> </event-group> </event-config> package examples.model.event; import examples.service.fooservice; import jp.co.intra_mart.framework.base.event.event; public class FooEvent extends Event { private FooService service_ = null; public void setfooservice(fooservice service) { service_ = service; public FooService getfooservice() { return service_; Page 10 Copyright 2003-2005 株式会社 NTT データイントラマート All rights Reserved.

3 アプリケーションの作成 3.2.1 アスペクトの適用 im-javaee-framework のコンポーネントにアスペクトを適用する方法について記述する im-javaee-framework のコンポーネントはサービスフレームワーク イベントフレームワーク データフレームワークの各設定ファイルに記述するだけで S2Container に登録されている このとき各コンポーネントにはコンポーネント名が設定されている 以下がそのコンポーネント以下のようになる リスト 3-9 コンポーネント名 ServiceController Transition Event EventListener DAO applicationid - serviceid -controller applicationid - serviceid -transition applicationid - eventkey -event_object applicationid - eventkey -event_listener applicationid - daokey -dao このコンポーネント名を指定することで im-javaee-framework のコンポーネントにアスペクトを適用することができる 以下がその例である <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" "http://www.seasar.org/dtd/components24.dtd"> <components> <component class="examples.service.impl.fooserviceimpl"/> <component name="foo-do_event-event_object" class="sample.model.event.sampleevent"> <aspect pointcut="getuserinfo"> <component class="org.seasar.framework.aop.interceptors.traceinterceptor"/> </aspect> </components> 作成者 : 株式会社 NTT データイントラマート Page 11

intra-mart intra-mart im-javaee Framework(Seasar2 連携ガイド ) 3.3 イントラマートのセッション情報を取得する イントラマートのセッション情報を S2Container コンテナで利用するために doc/imart/web-inf/classes/imart.dicon に以下のコンポーネントが登録されている リスト 3-10 AutoDetectedUserInfo <component name="userinfo" class="jp.co.intra_mart.framework.extension.seasar.util.autodetecteduserinfo" instance="request"/> AutoDetectedUserInfo は UserInfo インターフェースを実装したコンポーネントである S2Container が保持するコン ポーネントが UserInfo インターフェースのバインド対象である場合 自動的に AutoDetectedUserInfo はインジェク ションされる 以下がその例である リスト 3-11 Client.java package examples; public interface Client { String execute(); リスト 3-12 ClientImpl.java package examples.impl; import jp.co.intra_mart.framework.base.util.userinfo; import examples.client; public class ClientImpl implements Client { private UserInfo userinfo_; public void setuserinfo(userinfo userinfo) { this.userinfo_ = userinfo; public String execute() { return userinfo_.getuserid(); Page 12 Copyright 2003-2005 株式会社 NTT データイントラマート All rights Reserved.

3 アプリケーションの作成 リスト 3-13 example.dicon <?xml version="1.0" encoding="utf-8"?><!doctype components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" "http://www.seasar.org/dtd/components24.dtd"> <components> <include path="imart.dicon" /> <component name="client" class="examples.impl.clientimpl" instance="prototype"> <property name="userinfo">userinfo</property> </components> このように設定することで Client コンポーネント取得時に UserInfo が自動的にインジェクションされる 3.4 イントラマートのデータベース接続設定を利用する イントラマートに設定されているデータベース接続設定を利用してデータソースを取得することが可能である リスト 3-14 LoginGroupDataSource <component class="jp.co.intra_mart.framework.extension.seasar.util.logingroupdatasource"> <arg>initialcontext</arg> <arg>"default"</arg> リスト 3-15 SystemDataSource <component class="jp.co.intra_mart.framework.extension.seasar.util.systemdatasource"> <arg>initialcontext</arg> <arg>"default"</arg> LoginGroupDataSourceとSystemDataSourceはそれぞれjavax.sql.DataSourceの実装である コンストラクタの第一引数には初期コンテキストを与え 第二引数にはLoginGroupDataSourceの場合にはログイングループID SystemDataSource はシステムには識別子を設定する必要がある 2.1.1 jta.dicon の設定 で設定した AutoDetectedDataSourceを利用することで接続先を自動的に解決することも可能だが LoginGroupDataSourceや SystemDataSourceを利用することで明示的に接続先を指定することも可能である 作成者 : 株式会社 NTT データイントラマート Page 13

intra-mart im-javaee Framework Seasar2 連携ガイド 第四版 :May 30, 2008 Copyright 2000-2008 ( 株 )NTT データイントラマート All rights Reserved. TEL: 03-5549-2821 FAX: 03-5549-2816 URL: http://www.intra-mart.jp/