系统的层结构就像开始我用字符所画的
系统共分为三层结构
Client ---> Server <---- Collection
Server层部署在Jboss中
Client 与 Server之间需要大量的数据交互 其中有Client主动请求的信息 也有从底层上来通过Server层主动发给Client的信息。
目前的设计为Server层到Client层的消息利用JMS通道进行消息传递,其中既有PTP模式的也有SUB模式的JMS信息。
Server层与Collection之间同样为不定时的多类型交互信息 出于性能考虑collection层采用C++实现。因此Server 与 Collection之间通过Socket进行消息通讯。
在这种情况下Server层上层为Session bean提供的调用层 下层为Mbean实现的Socket Server层
目前由于业务要求 Collection 所传递的消息和数据在经过Mbean处理后要通知不同的Client连接做相应处理。
同时Session在接收到请求后也要将请求处理后再传递到Mbean然后进行Socket传递。而且部分操作要实现同步处理。
本来对于Session bean想在Jboss容器管理的基础上建立自己的池保存每个Client对stateful Session bean的请求并与Mbean共享,客户端在断开连接时或主动调用Ejb的@remove方法时触发Session bean的@PreDestroy方法移除自定义池中的相应对象。
目前的没有查清楚Jboss的容器管理机制。不知道在有外部引用的情况下如果Client出现异常断开Jboss容器是否能正常销毁容器中的对象。同时建立自己的池后Mbean会引用池中的对象,在引用的过程中如果客户端断开,Jboss容器会不会产生异常。