java - 使用 spring WebServiceTemplate 和 Jaxb2Marshaller 时的线程安全

标签 java spring jaxb spring-ws jaxb2

我以编程方式使用 spring WebServiceTemplate 作为 Web 服务客户端,即没有实例化 spring 容器。我正在使用 Jaxb2Marshaller 进行编码/解码。在我的应用程序中,我创建了一个 SaajSoapMessageFactory 实例和一个 Jaxb2Marshaller 实例。我还创建了一个 WebServiceTemplate 实例,并分配了之前创建的 SaajSoapMessageFactory 和 Jaxb2Marshaller 实例。

我创建的 WebServiceTemplate 以多线程方式使用,即多个线程可以同时调用 marshalSendAndReceive。我的问题是 - 我的配置线程安全吗?我担心 Jaxb2Marshaller。 javadoc 说 Jaxb2Marshallers 不一定是线程安全的。如何在不重新初始化 Jaxb 上下文的情况下以线程安全的方式使用 Jaxb2Marshaller?

顺便说一句:查看 spring reference 中的示例 spring-ws 配置让我相信 Jaxb2Marshaller 是线程安全的,但 Javadoc 似乎与此相矛盾。

最佳答案

Jaxb2Marshaller 的 javadoc 没有以任何方式提及线程安全,所以我不确定您为什么认为不是。如果它不是线程安全的,javadoc 会说得很清楚。

WebServiceTemplateSaajSoapMessageFactoryJaxb2Marshaller 单例的配置非常好,并且完全线程安全。

关于java - 使用 spring WebServiceTemplate 和 Jaxb2Marshaller 时的线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3478547/

相关文章:

java - API网关(Zuul)合并两个微服务响应

java - HTTP Status 500 - 请求处理失败;嵌套异常是 org.hibernate.HibernateException : No Hibernate Session bound to thread

java - JAXB 将 xml 列表元素解码为单个 Kotlin 对象

xml - 使用 JAXB 时出现 java.net.MalformedURLException : no protocol with javax. xml.stream.XMLStreamException

java - 将 xsd 转换为 java 时已经定义的错误

c# - Reflection.Emit 的 Java 等价物

java - 如何在没有 spring @Component 或 @Bean 注释的情况下在我的项目中运行不同项目的 servlet-filter

java - 使用 Comparable 接口(interface)对任何类型的数据进行排序

C# 与 Java - 通用列表

java - 何时关闭 JDBC 中的 Connection、Statement、PreparedStatement 和 ResultSet