首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对Oracle WebLogic 10.3Web服务的并发调用问题

问对Oracle WebLogic 10.3Web服务的并发调用问题
EN

Stack Overflow用户
提问于 2012-01-27 19:19:38
回答 2查看 1.1K关注 0票数 0

我在Oracle WebLogic 10.3上有一个网络服务(用java编写),它可以执行各种数据库查询。最近我开始了压力测试。它通过了重复测试(连续调用WS 1000次),但是当并发测试开始时,问题就出现了。进行多达2个并发调用会导致错误。当做适当的测试时,结果看起来WS根本不能处理并发调用,显然不应该是这样的。错误包括空指针异常,关闭的连接或准备好的语句等。我对此感到有点困惑,特别是因为我无法找到任何类型的配置选项来影响这一点,但话又说回来,我对WLS的知识相当有限。

感谢您提前给我提建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-12 21:19:23

这样就有了一个明确的答案。

当对WLS上的给定Web服务(在本例中使用SOAP/JAX-WS )有多个并发调用时,将使用相同的对象(不使用池或队列),因此实现必须是线程安全的。

编辑:

为了说明这一点:假设在JDeveloper生成的WebService实现类中有一个类属性。如果你在你的web方法中修改这个属性(然后使用它),那么当这个方法被并发调用(即WS被调用)时,就会导致同步问题。当我第一次开始创建web服务时,我认为每个WS调用都会重新创建整个WebService对象,但事实似乎并非如此。

票数 0
EN

Stack Overflow用户

发布于 2013-03-12 21:26:47

你标记为正确的答案是完全错误的。

不应该为了线程安全而创建webservice方法。

weblogic的Webservice实现是多线程的。

这就像是servlet

Servlet是多线程的。基于Servlet的应用程序必须正确识别和处理这一点。如果同步了大段代码,应用程序将有效地变为单线程,吞吐量会急剧下降。

http://www.ibm.com/developerworks/websphere/library/bestpractices/avoiding_or_minimizing_synchronization_in_servlets.html

您可能希望同步WS中的代码,具体取决于您所做的工作。

Does it make sense to synchronize web-service method?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9032533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档