繁体   English   中英

在CXF Web服务中使用@WebParam(header = true)

[英]Using @WebParam(header = true) in CXF web service

我正在尝试编写仅具有一个按摩参数且其余均为标头参数的Web服务。 我的网络服务如下所示:

    @BindingType(SOAPBinding.SOAP11HTTP_MTOM_BINDING)
    @MTOM
    @WebService(targetNamespace = WS_NAMESPACE + "/FileSvc")
    @Service
    public interface FileSvc
    {
        void uploadFile(@WebParam(name = "dataHandler") @XmlMimeType("application/octet-stream")DataHandler dataHandler,
                    @WebParam(header = true, name = "fileName") String fileName,
                    @WebParam(header = true, name = "fileSize") long fileSize);
    } 

服务工厂的定义如下:

    <bean id="fileSvcProxyFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
            <property name="serviceClass" value="com....FileSvc"/>
            <property name="address" value="http://.../FileSvc"/>
            <property name="bus" ref="client_bus"/>
            <property name="dataBinding" ref="globalJAXBDataBinding" />
    </bean> 

当我尝试从Java客户端测试此服务时,尝试加载该服务时出现此错误:

原因:org.apache.cxf.service.factory.ServiceConstructionException:消息部分{http://.../FileSvc} file消息{http://.../FileSvc} uploadFile的名称无法处理。 这可能是由于使用不具有JAX-WS服务工厂bean的特定于JAX-WS的类型引起的。

谁能告诉我这个webParam的工作原理?

谢谢,

尝试删除globalJAXBDataBinding东西,看看是否有帮助。 或者,将@RequestWrapper和@ResponseWrapper批注添加到接口方法,以指向适当的包装器类型。 并非100%肯定会奏效,但值得一试。

如果仍然无法正常工作,请使用一个小的完整测试用例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM