session pool design
1. 利用apache common-pool实现一个session pool(非常简单)
2. 如何避免代码中的returnobject()?
xxx() invoke
--------> poolproxy ---> poolinterceptor sessionpool
borrowobject()
--------------->
<---------------
xxx() session (be borr
owed)
-------------------------------->
returnobject()
---------------->
--
rmi design
xxx() invoke serialize call to remote
-----> clientproxy ---> rmiinterceptor ------------------->
find serverproxy, xxx() xxx()
rmiserver----------------> serverproxy --->....-->serverobject
method cache design
1.用hashmap做cache
xxx() invoke
-----> proxy ---> mcinterceptor
1. get attribute @timeout
2. 用object[]作为key,看cache中的
结果是否超时
3. 如果超时 invoke
------------------> nextinterceptor...
4. 如果不超,返回被cache的结果
draw activity uml diagram:
1. 实现绘图模块
xxx() invoke
---> proxy ---> activityintercpetor
draw xxx()
--------------->绘图模块
invoke
--------------------------->nextinterceptor...
persistence and descriptive transaction
1. persistence直接使用hibernate
xxx invoke
---->proxy-->hibernateinterceptor
1. 取得@tx,应该为required,requiresnew
,supports,notsupported中的一种
2. 判断当前的transaction状态
3. 决定本次调用是否在transaction当中
folder-node关系的复用
getfolder() getfolder() invoke getfolder()
--->userproxy ------> nodeproxy -->sideentityinterceptor--> node
return folder
<-----
根据folder创建group proxy
返回groupproxy
<----
in the code, like this:
...
user user = userfactory.find("guty"); //user is actually a proxy
group group = (group)((node)user).getfolder();
闽公网安备 35060202000074号