Dr.Magic
I know you know!
BlogJava
首页
新随笔
新文章
联系
聚合
管理
posts - 9,comments - 3,trackbacks - 0
<
2005年11月
>
日
一
二
三
四
五
六
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(3)
给我留言
查看公开留言
查看私人留言
随笔分类
Just think a little(2)
随笔档案
2007年10月 (2)
2006年7月 (2)
2005年12月 (3)
2005年11月 (2)
My New Spaces
For freedom !
My main spaces from now on.
If you want to see something new about me,please go to here.
搜索
最新评论
1. re: SAP JCO tutorial chapter Two
me cagüen la ostiaaaaaaaa
--feisimo
2. re: Think a little about life
评论内容较长,点击标题查看
--Askimor
3. re: JCreator Pro 3.5注册码
您好
最近要开发sap portlet,需要sap的sapjco.jar等几个文件,您能否提供给我一份?谢谢
--baturu
阅读排行榜
1. SAP JCO tutorial chapter Two(1994)
2. SAP JCO tutorial chapter Four(1937)
3. SAP JCO tutorial chapter one ...(1376)
4. 进行SAP连接时同步(synchronizd)的重要性(1196)
5. JCreator Pro 3.5注册码(1085)
评论排行榜
1. Think a little about life(1)
2. JCreator Pro 3.5注册码(1)
3. SAP JCO tutorial chapter Two(1)
4. 进行SAP连接时同步(synchronizd)的重要性(0)
5. SAP JCO tutorial chapter one ...(0)
进行SAP连接时同步(synchronizd)的重要性
这是最近在一个web项目开发中遇到的问题。项目快验收时,我负责对项目进行压力测试(JMeter)。在测试中发现凡是涉及到SAP函数调用的页面最高只能达到30秒内50个并发,而且还不稳定。于是察看SAP函数的调用代码:
1
public
SimpleResource()
throws
SapInterfaceException
{
2
pool
=
JCO.getClientPoolManager().getPool(POOL_NAME);
3
if
(pool
==
null
)
{
4
try
{
5
Properties properties
=
new
Properties();
6
BufferedInputStream in
=
new
BufferedInputStream(
7
SimpleResource.
class
8
.getResourceAsStream(PROPERTIES_FILE));
9
properties.load(in);
10
in.close();
11
JCO.addClientPool(POOL_NAME, MAX_CONNECTION_COUNT, properties);
12
pool
=
JCO.getClientPoolManager().getPool(POOL_NAME);
13
}
catch
(Exception ex)
{
14
throw
new
SapInterfaceException(
"
saply
"
, ex);
15
}
16
}
17
}
每个调用SAP函数的Java方法都会首先实例化一个SimpleResource类来建立连接池。同步就是这个问题的关键点,在不改变原有结构的基础上(项目中涉及这个SAP函数调用的地方超多)通过修改代码,添加同步特性后能达到10秒100~120个并发,基本能够满足业务需求,至于如何在提高并发数我觉得跟服务器配置有很大关系,除此我还没想到解决方案。修改后代码如下(偷点懒 -_-! ):
1
public
SimpleResource()
throws
SapInterfaceException
{
2
prepare();
3
}
4
5
public
synchronized
static
void
prepare()
throws
SapInterfaceException
{
6
pool
=
JCO.getClientPoolManager().getPool(POOL_NAME);
7
if
(pool
==
null
)
{
8
try
{
9
Properties properties
=
new
Properties();
10
BufferedInputStream in
=
new
BufferedInputStream(
11
SimpleResource.
class
12
.getResourceAsStream(PROPERTIES_FILE));
13
properties.load(in);
14
in.close();
15
JCO.addClientPool(POOL_NAME, MAX_CONNECTION_COUNT, properties);
16
pool
=
JCO.getClientPoolManager().getPool(POOL_NAME);
17
}
catch
(Exception ex)
{
18
throw
new
SapInterfaceException(
"
saply
"
, ex);
19
}
20
}
21
}
对于像web项目这种要求大量并发的情况,连接池的建立和连接释放都要好好考虑并发处理。
posted on 2005-11-30 18:24
Dr.Magic
阅读(1196)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问