Hemos escrito un servicio WCF para ser utilizado por una tienda de Java, que está utilizando CXF para generar los adaptadores. No estamos tan familiarizados con Java, pero hemos expuesto el servicio utilizando basicHttpBinding, SSL y autenticación básica. Las pruebas de integración muestran que un cliente .NET puede consumir el servicio sin problemas. Sin embargo, la tienda de Java tiene problemas para consumir el servicio. Específicamente, obtienen el siguiente error JAXB: Dos declaraciones causan una colisión en la clase ObjectFactory. Esto generalmente se produce si 2 operaciones tienen el mismo nombre y espacio de nombres cuando CXF intenta crear clases de adaptadores.¿Cuál es la mejor manera de exponer un servicio WCF para que se pueda consumir fácilmente desde Java/CXF?
No podemos encontrar ningún nombre de tipo o operación que pueda causar cualquier tipo de colisión. Nos hemos asegurado de que todos los tipos personalizados especifiquen un espacio de nombres, y tempuri.org no se especifica en ningún lugar en el WSDL. La tienda de Java sospecha que el error se debe a que el WSDL generado contiene < xsd: import elements.
lo tanto, mi pregunta:
- ¿Hay alguna forma mejor que CXF para la tienda de Java consumen el servicio WCF? Project Tango parece interesante, pero no sé lo suficiente como para decirles que consideren usarlo. ¿Es CXF un estándar de facto en Java?
- BasicHttpBinding/SSL/Basic Auth se recomiendan MS para escenarios de interoperabilidad, pero el cliente parece tener problemas de interoperabilidad. ¿Deberíamos considerar otras fijaciones o configuraciones para que esto sea más fácil de consumir?
- ¿Hay alguna manera de configurar WCF para generar siempre un solo WDSL sin importaciones de esquema?
Para el registro, había tipos en mi servicio WCF llamados "OperationNameRequest" y "OperationNameResponse", que entraban en conflicto con los tipos del mismo nombre generados por Java. El desarrollador de Java fue capaz de reparar dando masajes al WSDL. – Daniel