You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring WS 4.0.8中获取AxiomSoapMessage及使用StAX API方法

Spring Boot 3.4.2 + Spring WS 4.0.8 升级后AXIOM相关问题解决

1. 获取AxiomSoapMessage的方式

Spring WS 4.x将AXIOM相关实现从核心包拆分到独立的spring-ws-axiom模块,首先需要确保项目引入该依赖:

  • Maven依赖配置:
<dependency>
    <groupId>org.springframework.ws</groupId>
    <artifactId>spring-ws-axiom</artifactId>
    <version>4.0.8</version>
</dependency>

引入依赖后,AxiomSoapMessage仍是SoapMessage的实现类,可通过类型判断+强制转换获取实例:

// 假设已获取SoapMessage实例soapMessage
if (soapMessage instanceof AxiomSoapMessage axiomSoapMessage) {
    // 执行原AXIOM相关操作
    OMElement omElement = axiomSoapMessage.getAxiomMessage().getSOAPBody().getFirstElement();
    // ... 其他业务逻辑
}

若未引入spring-ws-axiom依赖,该类会无法找到,此时建议切换到Spring WS 4.x默认支持的StAX API。

2. 切换到StAX API的配置与使用

如果不再依赖AXIOM,改用StAX API需替换原有的AxiomSoapMessageFactory为StaxSoapMessageFactory,这是Spring WS 4.x推荐的StAX基消息工厂。

替换XML配置

原配置:

<bean id="messageFactory" class="org.springframework.ws.soap.axiom.AxiomSoapMessageFactory">
    <property name="payloadCaching" value="${cachePayloadInAxiom}"/>
</bean>

替换为StAX版本配置:

<bean id="messageFactory" class="org.springframework.ws.soap.stax.StaxSoapMessageFactory">
    <!-- 配置缓存参数,替代原payloadCaching -->
    <!-- bufferSize设置消息缓存字节大小,默认8192 -->
    <property name="bufferSize" value="8192"/>
    <!-- 可直接复用原payloadCaching配置,默认值为true -->
    <property name="payloadCaching" value="${cachePayloadInAxiom}"/>
</bean>

使用StAX API操作消息

获取SoapMessage实例后,可通过StAX的XMLStreamReader/XMLStreamWriter处理消息内容:

// 读取消息payload
XMLStreamReader reader = soapMessage.getPayloadSource().createReader();
try {
    while (reader.hasNext()) {
        if (reader.isStartElement()) {
            String elementName = reader.getLocalName();
            // ... 业务逻辑处理
        }
        reader.next();
    }
} finally {
    reader.close();
}

// 写入消息payload
XMLStreamWriter writer = soapMessage.getPayloadResult().createWriter();
try {
    writer.writeStartElement("ns", "root", "http://example.com/namespace");
    writer.writeCharacters("content");
    writer.writeEndElement();
} finally {
    writer.close();
}

内容的提问来源于stack exchange,提问作者chenglin zhao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 01:43:11