Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.Este contenido no está disponible en el idioma seleccionado.
29.4. Using a contract resolver
Overview Copiar enlaceEnlace copiado en el portapapeles!
ServiceContractResolver
interface. You also need to register your custom resolver with the bus.
Implementing the contract resolver Copiar enlaceEnlace copiado en el portapapeles!
org.apache.cxf.endpoint.ServiceContractResolver
interface. As shown in Example 29.3, “ServiceContractResolver
Interface”, this interface has a single method, getContractLocation()
, that needs to be implemented. getContractLocation()
takes the QName of a service and returns the URI for the service's WSDL contract.
Example 29.3. ServiceContractResolver
Interface
public interface ServiceContractResolver { URI getContractLocation(QName qname); }
public interface ServiceContractResolver
{
URI getContractLocation(QName qname);
}
Registering the contract resolver programmatically Copiar enlaceEnlace copiado en el portapapeles!
org.apache.cxf.endpoint.ServiceContractResolverRegistry
interface. However, you do not need to implement your own registry. Apache CXF provides a default implementation in the org.apache.cxf.endpoint.ServiceContractResolverRegistryImpl
class.
- Get a reference to the default bus object.
- Get the service contract registry from the bus using the bus'
getExtension()
method. - Create an instance of your contract resolver.
- Register your contract resolver with the registry using the registry's
register()
method.
Example 29.4. Registering a Contract Resolver
Registering a contract resolver using configuration Copiar enlaceEnlace copiado en el portapapeles!
- Add an
init()
method to your contract resolver implementation. - Add logic to your
init()
method that registers the contract resolver with the contract resolver registry as shown in Example 29.4, “Registering a Contract Resolver”. - Decorate the
init()
method with the@PostConstruct
annotation.
Example 29.5. Service Contract Resolver that can be Registered Using Configuration
bean
element to the client's configuration. The bean
element's class
attribute is the name of the class implementing the contract resolver.
org.apache.cxf.demos.myContractResolver
class.
Example 29.6. Bean Configuring a Contract Resolver
Contract resolution order Copiar enlaceEnlace copiado en el portapapeles!
getContractLocation()
method in the order in which the resolvers were registered. It returns the first URI returned from one of the registered contract resolvers.