Como ter um HashMap como @WebParam com o JBossWS 3.1.2
Estou tentando desenvolver um serviço da web com o JBossWS 3.1.2 que tenha um HashMap como um de seus argumentos. Estou usando esta versão do JBossWS porque é isso que é distribuído com a versão do JBoss que estou usando. Estou usando o wsprovide para gerar o WSDL e o wsconsume para criar stubs de cliente do WS.
Uma versão simplificada do meu 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";
}
}
O WSDL criado por wsprovide contém:
<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>
O código do cliente gerado contém uma classe abstrata vazia AbstractMap.java e uma classe vazia HashMap.
Eu esperava que o WSDL semelhante ao seguinte tivesse sido gerado:
<complexType>
<sequence>
<element name="key" type="anyType" />
<element name="value" type="anyType" />
</sequence>
</complexType>
Também tentei agrupar o HashMap com uma classe personalizada (ParameterMap), mas obtive mais do mesmo.
Existe um próximo passo que não estou vendo? Estou faltando alguma coisa ou isso é uma limitação da abordagem de baixo para cima para o desenvolvimento de Web Services com o JBossWS?