ひがやすを技術ブログ

電通国際情報サービスのプログラマ

S2Adapter

予想通り、Flex純正AMFGatewayを使って、Seasar2と接続できました。


package org.seasar.amf;
...
public class S2Adapter extends JavaAdapter {

public Object invokeFunction(ActionContext ctx,
String name,
String methodName, List argList)
throws Throwable {

S2Container container =
SingletonS2ContainerFactory.getContainer();
Object component = container.getComponent(name);
BeanDesc beanDesc = BeanDescFactory.getBeanDesc(
component.getClass());
return beanDesc.invoke(component, methodName,
argList.toArray());
}

public boolean supportsService(ActionContext ctx,
String name,
String methodName, List argList, String arg4)
throws Exception {

S2Container container =
SingletonS2ContainerFactory.getContainer();
return container.hasComponentDef(name);
}
}

次に、WEB-INF/flex/gateway-config.xmlにAdapterの定義を足します。
<adapter type="stateless-class">org.seasar.amf.S2Adapter