Puede añadir extensiones de enlaces en el documento WSDL y después aplicar
las extensiones en las aplicaciones con soporte para JAX-WS en Liberty.
Acerca de esta tarea
Liberty admite el uso de la extensión wsdl:binding que se necesita en la especificación JAX-WS 2.2. En este
tema se describe cómo definir las extensiones WSDL y enlazarlas con el elemento de extensión personalizada de Liberty.
Procedimiento
- Defina un elemento de extensión y correlaciónelo con el usuario que se ha definido
en la extensión WSDL. En el ejemplo siguiente se muestra cómo enlazar con la extensión WSDL
{http://server.respectbinding.jaxws22/}goodBinding.
@XmlRootElement(name = "goodBinding", namespace = "http://server.respectbinding.jaxws22/")
public class GoodBindingElement implements ExtensibilityElement, Serializable {
private String uri;
private QName elementType = null;
private Boolean required = null;
@XmlAttribute(name = "uri")
public String getUri() {
return this.uri;
}
@Override
public QName getElementType() {
return this.elementType;
}
@XmlAttribute(name = "required", namespace="http://schemas.xmlsoap.org/wsdl/")
public Boolean getRequired() {
return this.required;
}
public void setUri(String uri){
this.uri = uri;
}
@Override
public void setElementType(QName elementType) {
this.elementType = elementType;
}
@Override
public void setRequired(Boolean required) {
this.required = required;
}
}
- Añadir el archivo extensions.xml en el directorio
/META-INF de la web o aplicación EJB. Este archivo define dónde se
pueden utilizar las extensiones en el documento WSDL. En el ejemplo siguiente, se añade una entrada para establecer la propiedad
javax.wsdl.Binding como tipo de padre de la clase
goodBindingElement en el archivo extensions.xml.
La entrada también significa que la extensión
{http://server.respectbinding.jaxws22/}goodBinding sólo se puede añadir
bajo el elemento binding del documento WSDL.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<!-- XML Binding -->
<entry key="org.apache.cxf.bindings.xml-1">javax.wsdl.Binding=jaxws22.respectbinding.server.common.GoodBindingElement</entry>
</properties>
- Añada la extensión
{http://server.respectbinding.jaxws22/}goodBinding bajo el elemento
binding como se indica a continuación:
...
<binding name="EchoPortBinding" type="tns:Echo">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<tns:goodBinding wsdl:required="true" uri="http://good/good" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" />
<operation name="echo">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
<fault name="Exception">
<soap:fault name="Exception" use="literal"/>
</fault>
</operation>
</binding>
...