axis2的客户端使用Proxy方式时,Proxy使用对象池是否可行

李雅勇的技术专栏 2011-09-14 12:32:23
目前我们产品的实现,是用axis客户端Proxy方式访问Web Service,而每次调用都new出一个proxy,感觉很没效率。自己尝试,其实多次调用可用同一个Proxy,但由于是在JaveEE应用服务器上,考虑并发时如果使用Singleton会影响效率,故考虑使用对象池来存放Proxy,但这样做存在2个问题:
1.Proxy初始化一次后,多次调用是否最佳实践?
2.Proxy初始化一次后,放在池中长时间不调用是否会引发超时异常(TimeoutException)?
在网上找下资料也很少,只看过这个网页:http://social.msdn.microsoft.com/Forums/zh-CN/wcf/thread/c37b0e0d-8f1c-44c7-bcab-0252ab2477fd
想看看高手的意见。
...全文
145 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
我嘞个去 2011-09-14
  • 打赏
  • 举报
回复
木用过,帮顶!
安心逍遥 2011-09-14
  • 打赏
  • 举报
回复
我感觉单例好一些

个人见解

帮顶。祝楼主好运
uastation 2011-09-14
  • 打赏
  • 举报
回复
没做过这方面的实现,
一般采用线程池或者是单例都是可以做到的,即使是多线程并发的情况下.
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hpjianhua 的回复:]
没做过这方面的实现,
一般采用线程池或者是单例都是可以做到的,即使是多线程并发的情况下.
[/Quote]
感谢您的回答,补充下:这个问题和采用线程池实现无关,EJB容器以实现多线程,问题是多个线程操作proxy时,如果proxy用单例,就会出现多个线程等待的情况。
其实这里可以将proxy理解为JDBC中的connection,在应用中connection也可以用单例,当然没人这样用,是因为一个connection存在效率问题,所以才有数据库连接池。
而我想用对象池来存放proxy也是同样原因,对象池很简单,可以用common-pool,但问题是不知道用法是否正确,比如如下问题:
1. 如果把proxy初始化好放入池中,长时间不去调用会不会超时?
2. 是否超时和默认超时时长会在哪个规范中定义?
3. proxy初始化后,是不是一直占用Web服务器的连接?如果是,肯定不能这样用。

求正解……

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧