LibraryToggle FramesPrintFeedback

The Fuse ESB container needs some details about a service before it can instantiate and endpoint for it. Apache CXF uses Spring based configuration to define endpoints for services. The configuration shown in Example 4.3 is stored in the example's \src\main\resources\META-INF\spring\beans.xml file.

Example 4.3. OSGi Example Spring Configuration

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:jaxws="http://cxf.apache.org/jaxws"
	xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">

    <import resource="classpath:META-INF/cxf/cxf.xml" /> 1
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
    <import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />
    <import resource="classpath:META-INF/cxf/osgi/cxf-extension-osgi.xml" />

	<jaxws:endpoint id="helloWorld" 2
	                implementor="org.apache.servicemix.examples.cxf.HelloWorldImpl"
	                address="/HelloWorld"/>

</beans>

The configuration shown in Example 4.3 does the following:

1

Imports the required configuration to load the required parts of the Apache CXF runtime.

2

Configures the endpoint that exposes the service using the jaxws:endpoint element and its attributes.

  • id is an identifier used by the configuration mechanism.

  • implementor specifies the class that implements the service. It must be on the classpath.

  • address specifies the address at which the service will be exposed. This address is relative to the containers HTTP address with cxf appended to it.

Example 4.4. OSGi POM

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache.servicemix.examples</groupId>
        <artifactId>examples</artifactId>
        <version>4.4.1-fuse-00-08</version>
    </parent>

    <groupId>org.apache.servicemix.examples</groupId>
    <artifactId>cxf-osgi</artifactId>
    <packaging>bundle</packaging>
    <version>4.4.1-fuse-00-08</version>
    <name>Apache ServiceMix Example :: CXF OSGi</name>

<!-- Add ServiceMix repositories for snaphots and releases -->
 ...

    <dependencies>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
            <version>${geronimo.wsmetadata.version}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <configuration>
                    <instructions>
                        <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
                        <Import-Package>
                            javax.jws,
                            javax.wsdl,
                            META-INF.cxf,
                            META-INF.cxf.osgi,
                            org.apache.cxf.bus,
                            org.apache.cxf.bus.spring,
                            org.apache.cxf.bus.resource,
                            org.apache.cxf.configuration.spring,
                            org.apache.cxf.resource,
                            org.apache.servicemix.cxf.transport.http_osgi,
                            org.springframework.beans.factory.config
                        </Import-Package>
                        <Private-Package>org.apache.servicemix.examples.cxf</Private-Package>
                        <Require-Bundle>org.apache.cxf.cxf-bundle</Require-Bundle>
                    </instructions>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

Comments powered by Disqus