Axis2 生成的短截线是否具有螺纹安全性?
2022-09-02 13:01:06
我不确定 axis2,但至少 axis1 会生成非线程安全的客户端存根。我得到的印象是,几乎每个其他 SOAP 客户端都是非线程安全的。如果我没记错的话,问题在于客户端存根以非线程安全的方式使用 XML 解析库。
使用apache commons-pooling来池化实例,并一次使用一个线程中的每个实例效果很好。
更新:对于 Axis2,请参阅 https://issues.apache.org/jira/browse/AXIS2-4357(根据设计,声称 Axis2 不是线程安全的)
我想我会尝试通过提供一些关于我所做的进一步研究的最新信息来回答我自己的问题。默认情况下,较旧版本的 Axis2 存根可能只是“线程兼容”(无法从多个线程同时对同一存根实例进行调用 - 但调用不同的实例是可以的)。
例如,请参阅:
http://markmail.org/message/3lu7x7pfo47vgnck http://markmail.org/message/sljyf6lpecxqllgx
您可能会遇到一些套接字泄漏,如果您不调用 cleanup/cleanupTransport,则套接字会用完,如以下线程和许多相关线程所示:
http://issues.apache.org/jira/browse/AXIS2-3670
在某些情况下,至少底层的 HttpClient 现在似乎是线程安全的,但根据您生成客户端的方式,整个存根可能不是:
http://amilachinthaka.blogspot.com/2009/05/improving-axis2-client-http-transport.html