引数の 1 つとして HashMap を持つ JBossWS 3.1.2 を使用して Web サービスを開発しようとしています。このバージョンの JBossWS を使用しているのは、私が使用しているバージョンの JBoss と共に配布されているものだからです。wsprovide を使用して WSDL を生成し、wsconsume を使用して WS クライアント スタブを作成しています。
私の WebService の簡略化されたバージョンは次のとおりです。
@WebService(targetNamespace = "http://localhost/ping", serviceName = "Ping")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class Ping {
@WebMethod
@WebResult(name="result")
public String ping(@WebParam(name="arguments") HashMap arguments) {
return "pong";
}
}
wsprovide によって作成された WSDL には、以下が含まれます。
<types>
<xs:schema targetNamespace='http://localhost/ping' version='1.0' xmlns:tns='http://localhost/ping' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
<xs:complexType name='hashMap'>
<xs:complexContent>
<xs:extension base='tns:abstractMap'>
<xs:sequence/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType abstract='true' name='abstractMap'>
<xs:sequence/>
</xs:complexType>
</xs:schema>
</types>
生成されたクライアント コードには、空の抽象クラス AbstractMap.java と空のクラス HashMap が含まれています。
次のような WSDL が生成されることを期待していました。
<complexType>
<sequence>
<element name="key" type="anyType" />
<element name="value" type="anyType" />
</sequence>
</complexType>
また、HashMap をカスタム クラス (ParameterMap) でラップしようとしましたが、同じことが多くなりました。
私が見ていない次のステップはありますか?何か足りないのでしょうか、それとも JBossWS を使用して Web サービスを開発するためのボトムアップ アプローチの制限ですか?