OTA標準http://www.opentravel.org/OTA/2003/05に基づいて、パートナーからWSDLを提供しています。クラスjava.util.Map publicではない、またはWebServiceで自動生成されたクラスでインスタンス化を許可していません
Javaクラスを自動生成するためにjaxws-maven-pluginを使用してJavaクライアントを生成しました。 ポートは、メソッドを提供するServiceClientを通じて使用できます。今まで、全く問題はありません。
テスト目的のために、WebServiceの模擬実装を作成する必要があるときに問題が発生します。
私は他のWebサービスでこれをやったし、エラーを取得できませんでしたが、インタフェースのメソッドを実装するときに、私は次のエラーを取得するこの1のために:
Webメソッド問題:クラスjava.utilの。地図パブリックないか インスタンス化
は、だから私のインターフェイスは、次のようになりますことはできません:
@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);
アン次のようにDの実装は次のとおりです。
@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();
より多くのコードが役に立つ場合は、あなたが見たいクラスをリクエストしてください。
マップはインターフェイスなので、それをインスタンス化することはできません。それをクラスgetAttributes = new HashMap()(getter/setterも同様に適合させる必要があります)をクラス 'HashMapにしてみてください –
StanislavL
私はそれを取得しますが、これはjaxws-maven-pluginによって自動的に生成されるクラスですどうしてwsで送信できないクラスを生成するのでしょうか? –
これを送ることができます。私はマップがインスタンス化される必要があるときに問題が解析されていると思う。例えばWSの使用が可能です。 LinkedHashMapで注文を保持します。 – StanislavL