多OA的分布式问题

现在准备在某集团的总部和多个子公司(异地)部署OA系统(jsp+mysql),因为OA本身并没有提供多OA之间的通信和数据共享功能,因此必须在此基础上重新提出一套分布式解决方案。

主要问题:
1、不想大范围改动产品
2、OA本身的组织结构比较简单
3、其中有BBS,某些板块是对子公司的,某些板块是全集团共享的

初步想法:

控制中心 + OAs

数据流:OA ---> cc ---> OA
|
-----> OA
传输方式: (soap + xml) ---> database
or
(ftp) ---> database

不知道大家有什么好的想法,请指教!

用soap可以,不过对于数据同步这种以传输为主要目的而不是调用结果为主要目的应用来说有点不恰当。

其实用熟悉的http post把更新数据传给对方服务器负责数据同步的servlet岂不是更简单?为了安全可以考虑https。

传输的数据包括:1、数据库纪录;2、附件。

如果用soap,就可以直接添加上附件,数据库纪录可以用xml来传输,这样可以保证事务执行,这两方面数据不会出现不统一的情况。

如果通过servlet提交,一是不能保证异步处理;二是附件要通过ftp来传输(也可以用http),这样事务保证是不是有难度。

soap就是走http的,没有本质区别。

至于附件,呵呵,用post multi-part就可以了,就像我们在论坛上贴图或上载文件一样。

你说的保证异步处理是指什么?能详细说说么?

我所谓的异步处理主要是指如果Servlet提交处理失败,则需要它再次提交,因为控制中心有可能出现down机现象。

现在的主要问题:
1、如何保证整个分布式环境的可靠性
2、如何维护整个集团的人员信息(要实现单点登录)
3、OA中有一个BBS,其中某些专题需要各个OA共享

> 我所谓的异步处理主要是指如果Servlet提交处理失败,则需?> 它再次提交,因为控制中心有可能出现down机现象。
>

如果对方当机,应得到http 404错误。如果对方出故障,应得到http 5xx错误。读取错误信息,发送方就知道该重发还以以后再发。

我说错了,如果对方当机,那么得不到http错误,但是能捕获一个connect failure。

实际上你是需要增加一个分布式的用户权限系统。

不错,在控制中心一定会维护一套用户权限系统,当然还有各OA的配置信息表。

如何保证分布式用户系统的统一性?

我想同步用户信息时,主要有两种方式:
1、各个OA维护自身的用户信息,最后一次性同步到控制中心
2、每次创建用户时,都由控制中心产生ID
最后,把各个控制中心的用户信息发布到各个OA系统。