java - 包含 XML 内容的 CXF Web 服务响应

标签 java xml web-services jaxb cxf

我有一个现有的 CXF Java 网络服务,它返回一个深度、复杂、嵌套的响应类型。部分响应类型存在于数据库中,存储为纯 XML 消息(应该返回的 XML 完全相同)。

示例响应类型: PartyResponse -> PartyRec -> PartyInfo PartyInfo 结构在数据库中存储为 XML。

我如何返回来自 Java 的响应,插入 XML 部分而不用 JAXB 将其反序列化为 Java 对象,然后立即通过 CXF 将其再次序列化为 XML?

最佳答案

可以使用jaxws Provider的Payload方式。 参见 http://cxf.apache.org/docs/provider-services.html

然后您的服务可以只返回一个 Source 对象,它只是一个通用的 XML 对象。如下所示:

import javax.xml.transform.Source;
import javax.xml.ws.Provider;
import javax.xml.ws.Service;
import javax.xml.ws.ServiceMode;
import javax.xml.ws.WebServiceException;
import javax.xml.ws.WebServiceProvider;

@WebServiceProvider(serviceName="EchoService", portName="EchoPort")
@ServiceMode(value=Service.Mode.PAYLOAD)
public class EchoPayloadProvider implements Provider<Source> {
    public Source invoke(Source request) throws WebServiceException {
        // just echo back
        return request;
    }
}

关于java - 包含 XML 内容的 CXF Web 服务响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30307087/

相关文章:

iphone - 从服务器导入数据 txt/xml

java - Gridview 不会显示图像按钮

c# - 我无法从类调用我的方法来形成

c# - $.ajax 未调用 WebService

java - 如何为 ant 安装 org.apache.tools.ant.taskdefs.optional.Rpm

java - 使用 Intellij 配置 JPA

java - 我们可以用老奴隶来运行当前的 Jenkins 吗?

java - Java Float 和 Double 数据类型中的上溢和下溢

.net - 从 .NET DLL 使用 webservice - app.config 问题

java - Web服务与java android