佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1014|回复: 5

[请教][Java]Client/Server 多用户设计

[复制链接]
发表于 27-4-2006 07:52 PM | 显示全部楼层 |阅读模式
我现用java开发一个two ties system(Server & Swing Client). 这个server需要支持多用户同时连接。例如: 当user A 加新的member(Alex)时, server 需要broadcast给其它用户知道。当user A 正在更改member(Alex)时,其他的用户不能delete/edit 这个member(Alex),但可以 delete/edit 其他member.

此外,如果有用户更改member(Alex)时, member(Alex)的 memberGroup(VIP)是不能delete, 但可以更改。因为member(Alex) 是depends 这memberGroup(VIP),delete memberGroup(VIP)将会导致delete member(Alex).他们的关系是one-to-many.

注:以上所说的都是object,Member(Alex) 是一个object。

这system我面对的难题是data integrity 及 consistency。我不知有什么好的方法来lock 一些critical 的object 不让其他用户干涉。

请问谁有这方面的经验?有什么好的idea 来control 用户 concurrent access. 或者有什么framework 是可以用来解决这问题?有谁可以分享吗?
回复

使用道具 举报


ADVERTISEMENT

发表于 8-6-2006 10:48 PM | 显示全部楼层
原帖由 黑木头 于 27-4-2006 07:52 PM 发表
我现用java开发一个two ties system(Server & Swing Client). 这个server需要支持多用户同时连接。例如: 当user A 加新的member(Alex)时, server 需要broadcast给其它用户知道。当user A 正在更改member(Ale ...


给用户的object加一个boolean的variable。
平时就true,也就是可以让人更改,
当某个thread edit着这个用户的时候,就改成false,
离开edit时再改回true。
这个方法不可以吗?
回复

使用道具 举报

 楼主| 发表于 9-6-2006 09:37 AM | 显示全部楼层
首先谢谢你,这问题我已经有解决方案。

就如你所说的一样,把正编制的object加锁。但做起来,这真的很吃脑力。首先我必须把连锁相关的object都通通加锁,例如 harddisk(Disk 0)-->Pc(PC 01)-->PCGroup(Account Group),当你正在edit harddisk(Disk 0), 其他用户就不能edit & delete harddisk(Disk 0), delete Pc(PC 01) 及 PCGroup(Account Group)但、可以edit Pc(PC 01) 及 PCGroup(Account Group). 不相关的object,例如 PC(02),PCGroup(Admin Group)其他用户是可以edit 及 delete. 当然一但edit/delete 这些object, 同样的连锁加锁也回出现。

此外,我还须负责tackle connection lost 的问题, e.g while你正在edit harddisk(Disk 0), 忽然你的connection session lost 了, 我必须把你加锁的object通通解锁, 不然就行成一种deadlock.

你看的明白吗?哈, 我做的时候会觉得很乱, 但一步一步,问题就能迎刀而解。。
回复

使用道具 举报

发表于 9-6-2006 11:44 AM | 显示全部楼层
。。。。。。
看是看得懂
可是不会实现啦
我一早就知道你问得出就不是那么简单的。。。
回复

使用道具 举报

发表于 6-7-2006 02:30 PM | 显示全部楼层
Try to use J2EE - JMS can solve your problem or simple EJB session bean can solve the problem as well.
回复

使用道具 举报

 楼主| 发表于 6-7-2006 06:25 PM | 显示全部楼层
原帖由 pcstory 于 6-7-2006 02:30 PM 发表
Try to use J2EE - JMS can solve your problem or simple EJB session bean can solve the problem as well.


有想过用 hibernate + jboss + spring ,可是需要花很多时间去做,因为各自都有很长的learning curve. 还有一点是,我们这team不是很专这方面的东西,如果有少微问题,可能会把我们推进低谷。

不信,看看它们的call stack.


Reference
=========
http://ptrthomas.wordpress.com/2 ... -jdbc-as-a-picture/
回复

使用道具 举报

Follow Us
您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 12-11-2024 03:04 AM , Processed in 0.105739 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表