mina框架中有一个Handler和Controller起着很关键的作用,特别是Controller,
<!-- 下行短信controller的配置 -->
<bean id="dynlenghtcontroller" class="com.huateng.smsserver.bussiness.system.controller.DynamicLengthController">
<property name="sysservice" ref="systemService" />
<property name="mapService" ref="bomap" />
<property name="actionMap">
<map>
<entry key="140500" value-ref="serverActionTrans" />
<entry key="140503" value-ref="serverActionTrans" />
<entry key="140700" value-ref="serverActionTrans" />
<entry key="140900" value-ref="serverActionTrans" />
<entry key="141100" value-ref="serverActionTrans" />
<entry key="141400" value-ref="serverActionTrans" />
<entry key="141500" value-ref="serverActionTrans" />
<entry key="141600" value-ref="serverActionTrans" />
<entry key="141700" value-ref="serverActionTrans" />
<entry key="141800" value-ref="serverActionTrans" />
<entry key="141801" value-ref="serverActionTrans" />
<entry key="141900" value-ref="serverActionTrans" />
<entry key="142000" value-ref="serverActionTrans" />
<entry key="142100" value-ref="serverActionTrans" />
<entry key="142200" value-ref="serverActionTrans" />
<entry key="142300" value-ref="serverActionTrans" />
<entry key="142400" value-ref="serverActionTrans" />
<entry key="142500" value-ref="serverActionTrans" />
<entry key="142600" value-ref="serverActionTrans" />
</map>
</property>
</bean>
通过spring注入一个MAP来控制过来的报文触发哪个交易。
在有spring的地方可以用类似这种访问控制:
<!-- 上行短信controller的配置 -->
<bean id="transcontroller" class="com.huateng.smsserver.bussiness.system.controller.TransController">
<property name="sysservice" ref="systemService" />
<property name="actionMap">
<map>
<!-- 回复Y|y获取电话提货码,触发BACKSERVER040800交易 -->
<entry key="040800" value-ref="SendRandCodeNotifyTrans" />
<!-- 回复S|s Q|q获取单次授权码,触发BACKSERVER061400交易 -->
<entry key="061400" value-ref="applySingleLicenseTrans" />
<!-- 回复A|a查询本人所有票券信息,触发BACKSERVER040600交易 -->
<entry key="040600" value-ref="QueryPersonAllTickTrans" />
<!-- 回复中文查询本人匹配票券信息,触发BACKSERVER041000交易 -->
<entry key="041000" value-ref="QueryPersonTickWithNameTrans" />
</map>
</property>
</bean>
其中
<!-- 040800交易 -->
<bean id="SendRandCodeNotifyTrans" class="com.huateng.smsserver.bussiness.system.entity.TransInitBean">
<property name="fromSmsAction" ref="SendRandCodeNotifyAction" />
</bean>
TransInitBean为:
public class TransInitBean {
/** 接收报文action处理类. */
private IRecFromMsgAction fromMsgAction;
/** 接收短信action处理类. */
private IRecFromSmsAction fromSmsAction;
/** b2o报文接收mappid. */
private String receiveMapperId;
/** o2b报文应答成功 mappid. */
private String responseSuccessMapperId;
/** o2b报文应答失败mappid. */
private String responseFailureMapperId;
}