2010-02-28 17 views
6

Tengo un WSDL que contiene 3 esquemas dentro de su elemento "types". Los esquemas no están definidos en XSDs externos sino dentro del elemento types.Personalizaciones de JAXB: varios esquemas dentro de WSDL y schemaLocation

Quiero personalizar un elemento dentro del esquema número 2 y cambiar su nombre para evitar un conflicto.

Entonces en schemaLocation ¿cómo puedo hacer eso? A pesar de hacer la pregunta que tengo la manera de hacer esto:

schemaLocation="../wsdl-files/mywsdl.wsdl#types?schema2"> 
    ... 
    <jxb:bindings node="some xpath 

pero yo no soy el que lo encontró, pero un colega mío que no está trabajando más conmigo. ¿Hay algún recurso donde pueda encontrar la explicación incluso si lo entiendo? Un enlace o un libro? En algún lugar donde puedo encontrar también otros ejemplos.

Mi problema es el valor schemaLocation (../ wsdl-files/mywsdl.wsdl # types? Schema2) no el xpath. Quiero saber todas las posibilidades para hacer referencia a un esquema dentro de un WSDL. Necesito una documentación para esto o algo.

Muchas gracias

+0

Mi problema es el valor schemaLocation (../ WSDL-files/mywsdl.wsdl #types? schema2) no xpath, etc. Quiero saber todas las posibilidades para hacer referencia a un esquema dentro de un WSDL, etc. Necesito una documentación para esto o algo así. Gracias de nuevo – DaTroop

+0

¿Qué herramienta está utilizando para vincular el WSDL? – skaffman

+0

debe editar su pregunta y poner el contenido de su comentario en ella como una sección de "Actualización:". Luego borra el comentario. –

Respuesta

2

v2.1 JAXB Ri apoyo a [Esquema de Componentes] añadió [1], que en teoría permiten hacer referencia a los componentes de esquema simbólico, más que por su ubicación del archivo y la ubicación XPath . En principio, esto es mucho más agradable de usar, pero nunca lo he usado.

No estoy seguro de cuán ampliamente compatible es esto, sin embargo. Hay muy poca mención de ello en otro lugar que no sea esa entrada de blog. Sí menciona que era parte de la especificación propuesta para JAXB 2.1, por lo que, si se aprueba, debería implementarla cada implementación de JAXB 2.1, incluido Java6. Sin embargo, es posible que nunca se haya agregado realmente a la especificación.

+0

Gracias hombre! Eso se ve genial. ¿Pero tiene algo que describa esto: #types? Schema2 Thanks! – DaTroop

+1

@DaUltimateTrooper: El objetivo de SCD es que no necesita especificar la ubicación del esquema en la personalización del enlace, se hace referencia a los elementos del esquema por su nombre. – skaffman

+1

Según lo que encontré, SCD aún no es oficialmente compatible, pero Sun xjc lo usará si se le da la opción '-extensión', y las herramientas dependientes como CXF también funcionan con él.La sintaxis es aún más difícil de asimilar que XPATH, pero se puede hacer que funcione. –

1

Tenía un problema similar (cinco esquemas en tipos con nombres comunes) y de alguna manera no conseguía que SCD funcionara correctamente. Mi solución fue siguiendo:

custombinding.xml:

<jxb:bindings version="2.1" 
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> 

    <jxb:bindings schemaLocation="file:wsdlfile.wsdl" node="*/xs:schema[1]"> 
     <jxb:schemaBindings> 
      <jxb:package name="my.custom.package"/> 
     </jxb:schemaBindings> 
    </jxb:bindings> 
</jxb:bindings> 

llamada xjc en hormiga fichero de construcción:

<target name="xjc_generate"> 
    <exec executable="xjc" > 
     <arg value="-wsdl" /> 
     <arg value="${wsdl.base}/service/wsdlfile.wsdl" /> 
     <arg value="-d" /> 
     <arg value="${dir.src}" /> 
     <arg value="-b" /> 
     <arg value="${wsdl.base}/service/custombinding.xjb" /> 
    </exec> 
</target> 
Cuestiones relacionadas