Configuring the cxf-se-su service unit

{scrollbar}

On this page, we are going to INLINE

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

Implementing generated ExampleService.java

We must implement our service in java. In directory src/main/java/org/apache/servicemix/examples is generated java file ExampleService.java.
So, we must rename this file to HelloImpl.java and change its content on this:

javaHelloImpl.javasolid 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



{scrollbar}
  • No labels