Axis2从WSDL生成的客户端存根是否是线程安全的?
当然,“线程安全”并不是严格定义的术语,因此我至少对以下内容感兴趣:
同一个存根类的 不同 实例是否可以由不同线程同时访问,并且具有与单线程执行相同的有效行为?
同一存根类的 单个 实例是否可以由不同的线程并发地以相同的有效行为与相同的调用以某种任意方式在单线程执行中交织在一起?
您可能还希望使用这里描述的术语(和起源于此)来更精确地进行讨论。
我不确定axis2,但是至少axis1会生成非线程安全的客户端存根。我给其他SOAP客户端几乎都是非线程安全的印象。如果我没记错的话,问题是客户端存根以非线程安全的方式使用XML解析库。
但是,使用apache commons-pooling合并实例并一次使用一个线程中的每个实例效果很好。
更新:对于Axis2,请参阅https://issues.apache.org/jira/browse/AXIS2-4357(声称Axis2并非出于线程安全原因,设计使然)
问题内容: 我有一个多线程程序,在其中创建生成器函数,然后将其传递给新线程。我希望它本质上是共享/全局的,以便每个线程都可以从生成器获取下一个值。 使用这样的生成器是否安全?还是会遇到从多个线程访问共享生成器的问题/情况? 如果不是,是否有更好的方法来解决此问题?我需要可以在列表中循环并为任何线程调用它生成下一个值的东西。 问题答案: 它不是线程安全的;同时调用可能交错,并与局部变量混淆。 常用的
问题内容: 从Java使用gRPC时,我可以缓存存根(客户端)并在多线程环境中调用它们吗?或者通道是线程安全的并且可以安全地缓存吗? 如果网络中断,我应该重新创建通道还是它足够智能以重新连接?我在http://www.grpc.io/docs/上找不到相关信息 谢谢 问题答案: 回答第一个问题: 通道是线程安全的;标有注释。存根也是线程安全的,这就是为什么重新配置会创建新的存根的原因。 回答第二个
假设我有下面的代码,并且makePool可以被多个线程调用。我正在使用ThreadFactoryBuilder来确保线程具有唯一的名称。
问题内容: 我正在使用Spring Data(JPA)存储库来处理CRUD样板。 我这样定义我的存储库接口: 然后Spring自动为我生成上述接口的实现。我们得到的是代理,但我相信最终我们可以归结为。 如果 基础目标类是线程安全的, 则 A 是线程安全的。因此,问题是:线程安全吗? 问题答案: 通常,是的。假设是一个托管对象,我们将从Spring的工厂类(如果您使用Spring作为容器)或CDI托
问题内容: 在中,此变量被声明为是我的问题,在某些调用之后检查值还是在多线程代码中使用perror()是安全的。这是线程安全变量吗?如果没有,那还有什么选择呢? 我在x86体系结构上将Linux与gcc一起使用。 问题答案: 是的,它是线程安全的。在Linux上,全局errno变量是特定于线程的。POSIX要求errno必须是线程安全的。 参见http://www.unix.org/whitepa
问题内容: 我们在项目中使用了Drools kieSessions。许多线程可以创建新的kieSession。有时在创建会话时线程可能会挂起。因此,问题是: 首先 是kieContainer.newKieSession线程安全操作吗? 上吊的原因可能是肮脏的文字或阅读的kie会话集之类的东西吗? 问题答案: 当我在实践中检查 不是线程安全的操作。