类java.util.Map不公开或不允许在WebService中使用自动生成的类进行实例化

时间:2017-05-18 13:32:45

标签: java web-services soap jax-ws jaxws-maven-plugin

我有一个合作伙伴提供的WSDL,基于OTA标准http://www.opentravel.org/OTA/2003/05

我使用jaxws-maven-plugin生成了一个Java客户端来自动生成Java类。 该端口可通过提供方法的ServiceClient获得。直到这里,没有任何问题。

出于测试目的,我们需要创建WebService的模拟实现时出现问题。

我已经使用其他Web服务完成了这项操作并且没有出现任何错误,但是对于这个错误,我在实现Interface的方法时遇到以下错误:

  

Web方法问题:类java.util.Map不公开或不允许   实例

所以我的界面看起来像这样:

@WebService(name = "DistributorsV1Port", targetNamespace = "http://www.opentravel.org/OTA/2003/05")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@XmlSeeAlso({
        ObjectFactory.class
})
public interface ServiceMock extends ServiceDispatcher<Object, Object> {

    @WebMethod(operationName = "GetMultiAvailability")
    @WebResult(name = "OTA_HotelAvailRS", targetNamespace = "http://www.opentravel.org/OTA/2003/05", partName = "response")
    public OTAHotelAvailRS getMultiAvailability(
        @WebParam(name = "OTA_HotelAvailRQ", targetNamespace = "http://www.opentravel.org/OTA/2003/05", partName = "request")
                OTAHotelAvailRQ request);

实施如下:

@WebService(name = "DistributorsV1Port", targetNamespace = "http://www.opentravel.org/OTA/2003/05")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@XmlSeeAlso({
        ObjectFactory.class
})
public class ServiceMockImpl extends ServiceDispatcherImpl<Object, Object> implements ServiceMock {

    @Override
    public OTAHotelAvailRS getMultiAvailability(OTAHotelAvailRQ request) {
        return (OTAHotelAvailRS) dispatch(request);
    }
}

所以我理解的是,OTAHotelAvailRQ的一个属性是地图,@ WebService不喜欢返回地图。但是这个类是由jax-ws插件自动生成的,所以我有点迷失了。

这是属性:

@XmlAnyAttribute
private Map<QName, String> otherAttributes = new HashMap();

如果更多代码有用,请申请您想要查看的课程。

1 个答案:

答案 0 :(得分:1)

最终通过删除问题解决了问题:

@WebService(name = "DistributorsV1Port", targetNamespace = "http://www.opentravel.org/OTA/2003/05")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@XmlSeeAlso({
        ObjectFactory.class
})

从实施。由于这些注释是继承的,我在那里不需要它们,然后IntelliJ不会再抱怨了。

无论如何,拥有它们应该没有问题,我想这是IntelliJ警告的问题。