[英]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.