gpt4 book ai didi

web-services - 在 Apache CXF 中动态设置启用 MTOM 的属性

转载 作者:行者123 更新时间:2023-12-02 05:09:11 32 4
gpt4 key购买 nike

我正在使用 Apache CXF 框架开发 SOAP 网络服务。我的网络方法根据请求参数返回二进制数据或纯 XML。大多数请求返回二进制数据,因此我将 CXF 配置为在服务响应中使用 MTOM。

但这并不总是有用的:当返回 XML 时,调用方希望获得纯文本/xml 文档而不是多部分文档。所以我希望我的 Web 服务能够动态更改其绑定(bind)。

CXF 文档有以下示例:

Endpoint ep = ...; // example does not explain how to get itSOAPBinding binding = (SOAPBinding)ep.getBinding();binding.setMTOMEnabled(true); // or false

问题:如何获取Endpoint实例?

我正在使用 Spring 注释 @Endpoint 用于 Web 服务和 @PayloadRoot 用于 Web 方法。

最佳答案

如果你在server上使用,你可以使用下面的代码,

你需要添加import javax.xml.ws.Endpoint;

HelloWorldImpl implementor = new HelloWorldImpl();
String address = "http://localhost:9000/helloWorld";
Endpoint.publish(address, implementor);

从客户端

TestMtomService tms = new TestMtomService(wsdlURL, SERVICE_NAME);
TestMtomPortType port = (TestMtomPortType)tms.getPort(PORT_NAME,TestMtomPortType.class);
Binding binding = ((BindingProvider)port).getBinding();
((SOAPBinding)binding).setMTOMEnabled(true);

引用

如果您下载了 cxf 包,MTOM 服务器/客户端的代码示例可在以下路径中找到

apache-cxf-2.7.2\samples\mtom

关于web-services - 在 Apache CXF 中动态设置启用 MTOM 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15772138/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com