0

我正在尝试编写一个只有一个按摩参数的网络服务,其余的是标题参数。我的网络服务如下所示:

    @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}fileName of Message {http://.../FileSvc}uploadFile 无法处理。这可能是由于在没有 JAX-WS 服务工厂 bean 的情况下使用了特定于 JAX-WS 的类型造成的。

谁能向我解释这个 webParam 是如何工作的?

谢谢,

4

1 回答 1

0

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

如果它仍然不起作用,将不胜感激一个小的完整测试用例。

于 2013-05-01T14:51:30.633 回答