今回はサーバ側です。
Eclipseを起動して、新規にプロジェクトを作成します。
TomcatプラグインとDoltengプラグインを使用していますので、事前に入れておく必要があります。
(以下、諸般の事情でEclipse3.3英語版での例)
メニューからFile -> New -> Projectを選択します。
プロジェクトの種類はDolteng Projectを選択して「Next」を押下します。
プロジェクト情報を以下のように指定します。
「Finish」でプロジェクトを作成します。
雛型ができあがります。
ここから、いくつか設定ファイルを修正します。
src/main/resources/convention.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="org.seasar.framework.convention.impl.NamingConventionImpl"> <initMethod name="addRootPackageName"> <arg>"examples"</arg> </initMethod> </component> </components>
src/main/resources/aop.dicon
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" "http://www.seasar.org/dtd/components24.dtd"> <components namespace="aop"> <component name="traceInterceptor" class="org.seasar.framework.aop.interceptors.TraceInterceptor"/> <component name="traceThrowsInterceptor" class="org.seasar.framework.aop.interceptors.TraceThrowsInterceptor"/> <component name="classLoaderAwareTraceInterceptor" class="org.seasar.framework.aop.interceptors.ClassLoaderAwareTraceInterceptor"/> </components>
src/main/resources/cooldeploy.dicon
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" "http://www.seasar.org/dtd/components24.dtd"> <components> <include path="convention.dicon"/> <include path="customizer.dicon"/> <component class="org.seasar.framework.container.creator.DtoCreator"/> <component class="org.seasar.framework.container.creator.LogicCreator"/> <component class="org.seasar.framework.container.creator.ServiceCreator"/> <component class="org.seasar.framework.container.cooldeploy.CoolComponentAutoRegister"/> </components>
src/main/resources/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="convention.dicon"/> <include path="aop.dicon"/> <include path="remoting_amf3.dicon"/> <include condition="#ENV != 'ut'" path="cooldeploy.dicon"/> </components>
設定ファイルは、ほとんどおまじないです。
詳しくはSeasar - DI Container with AOP -を参考にしてください。
以降はJavaファイルを作成していきます。
src/main/java/examples/dto/HelloDto.java
package examples.dto; public class HelloDto { private String myName; private String message; public String getMyName() { return myName; } public void setMyName(String myName) { this.myName = myName; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
まずはサーバ側のDTOを作成します。
Flex側のHelloDtoクラスに付けたメタデータタグと対応しますので、パッケージ名を含めて同じになるようにします。
[RemoteClass(alias="examples.dto.HelloDto")]
src/main/java/examples/service/HelloService.java
package examples.service; import examples.dto.HelloDto; public interface HelloService { public HelloDto remotingAction(HelloDto helloDto); }
次にサービスクラスです。
interfaceクラス内に、外部からアクセスできるメソッドを定義しておきます。
今回はパラメータと戻り値にHelloDtoクラスを返すremotingAction()メソッド1つだけを定義します。
src/main/java/examples/service/impl/HelloServiceImpl.java
package examples.service.impl; import org.seasar.flex2.rpc.remoting.service.annotation.RemotingService; import examples.dto.HelloDto; import examples.service.HelloService; @RemotingService public class HelloServiceImpl implements HelloService { public HelloDto remotingAction(HelloDto helloDto) { helloDto.setMessage("こんにちは、" + helloDto.getMyName() + "さん"); return helloDto; } }
最後にサービスの実装クラスです。
HelloServiceのremotingAction()をオーバーライドして、処理を実装しています。
Flex側からこのサービスを呼び出すと、HelloDtoのmessage変数に"こんにちは、○○さん"といったメッセージが格納されて返されるようになります。