You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 16 Next »

Configuring the cxf-se-su service unit

On this page, we are going to configure the cxf-se-su service unit to provide our webservice .

Configuring the pom.xml

First of all we need to move into the created folder my-cxf-se-su.

Changing the project name

In order to make the build output a little bit more comprehensible we first change the project name in the generated pom.xml file.

 
<project>
  ...
  <name>CXF WSDL Tutorial :: CXF SE SU</name>
  ...
</project>

Adding version of cxf to pom.xml

We must specify the version of CXF to use:

 
<project>
...
  <properties>
    ...
	<cxf-version>2.0.7</cxf-version>
    ...
  </properties>
...
</project>

Adding the org.apache.cxf plugin

We add this plugin to the generated pom.xml file to element plugins.

<plugin>
   <groupId>org.apache.cxf</groupId>
   <artifactId>cxf-codegen-plugin</artifactId>
   <version>${cxf-version}</version>
           <executions>
              <execution>
                  <phase>generate-sources</phase>
                  <configuration>
                      <sourceRoot>${basedir}/target/jaxws</sourceRoot>
                      <wsdlOptions>
                          <wsdlOption>
                              <wsdl>${basedir}/src/main/resources/service.wsdl</wsdl>
                              <extraargs>
                                  <extraarg>-verbose</extraarg>
                              </extraargs>
                          </wsdlOption>
                      </wsdlOptions>
                  </configuration>
                  <goals>
                     <goal>wsdl2java</goal>
                  </goals>
               </execution>
           </executions>
   </plugin>

This plugin is used for generating java classes from the WSDL file. We use the wsdl2java tool from JAX-WS (CXF framework).
The next step is to copy the WSDL file we already made in the my-cxf-bc-su to the my-cxf-se-su because we need it to generate
the java classes from it. So copy it now:

  • from folder: my-cxf-bc-su/src/main/resources
  • to folder: my-cxf-se-su/src/main/resources

After doing this, we need to run mvn install in order to get the java classes generated.

Implementing generated ExampleService.java

We must implement our service in java. In our example, it's HelloImpl.java

HelloImpl.java
package org.apache.servicemix.examples;

import javax.jws.WebService;
import javax.xml.ws.Holder;

import org.apache.servicemix.examples.types.SayHello;
import org.apache.servicemix.examples.types.SayHelloResponse;

@WebService(serviceName = "HelloService", targetNamespace = "http://servicemix.apache.org/examples", endpointInterface = "org.apache.servicemix.examples.Hello")
public class HelloImpl implements Hello {

    public void sayHello(Holder<String> name)
        throws UnknownWordFault
    {
        if (name.value == null || name.value.length() == 0) {
           org.apache.servicemix.examples.types.UnknownWordFault fault = new org.apache.servicemix.examples.types.UnknownWordFault();
            throw new UnknownWordFault(null, fault);
        }
 
      name.value = "Hi " + name.value;
    }

}

Configuring xbean.xml

Next we have to configure our new SU to really provide some webservice. We do this by modifying the file
named xbean.xml in the src/main/resources directory of our my-cxf-se-su module:

<cxfse:endpoint>
   <cxfse:pojo>
      <bean class="org.apache.servicemix.examples.HelloImpl" />
   </cxfse:pojo>
</cxfse:endpoint>

Next, we are going to create service assembly.

Things to remember

  • You specify the plugin for a SU in Maven's pom.xml file
  • In ServiceMix, most service units will be configured by a file named xbean.xml

Proceed to the next step



  • No labels