Tomado de DevTroce.com
Navegando en foros, blogs y otros me di cuenta que hay demasiada gente que busca información de como pasar un c0njunto de datos, la mayoría intenta pasar un DataSet o DataReader de dotnet y hacerlo compatible con Java u otros lenguajes, otros intentan pasar un ResultSet de Java por el mismo medio.
Recordemos que los tipos de datos que se traficaran deben ser serializables, es decir, se tiene que poder componer y descomponer los datos originales para su transporte, normalmente se utiliza un conjunto de bytes o cadenas base64, aunque puede utilizarse otras técnicas.
Es por ello que los ResultSet y DataReader no podemos transportarlos, en cambio el DataSet si es posible traficarlospor que el mismo puede serializarse en XML finalmente.
Ahora bien, traficar un DataSet normalmente puede ser servido y consumido por dotNet sin problemas, pero al mezclar lenguajes surge el problema de la tipificación. Aunque no descarto que sea posible hacerlo, sería más complejo que la solución que expondré aquí.
Para el ejemplo crearemos un WS server con Java, y lo consumiremos con C#. Para pasar el conjunto de datos crearemos una clase compuesta por varios tipos de datos nuevamente y los serializaremos, haciendo que la misma implemente de java.io.Serializable
Ahora creamos el lado servidor del web service de este modo, por cierto los datos los cargaré manualmente en el código, ustedes lo pueden ir poblando a partir de otras fuentes como una BD, ficheros, etc. Si se fijan el método retorna un list de la clase base que hemos creado
Finalmente, una vez agregado en Visual Studio el WSDL como referencia web, podemos consumir los datos. Vale resaltar que si lo consumimos con VS el nos generará la clase persona, si lo consumimos con java, php, u otro lenguaje debemos volver a mapear el tipo de objeto persona serializandolo.
El código en C# se vería semejante a esto el código:
Articulos Relacionados:
Ver original..
Thanks a lot. It works correctly.
Do you know how to use a EJB as a Web Service?
Thanks in advance.