A lot of Java Developers out there sees task with Web Service implementation daunting – well, nobody can blame them really, especially that it brings a lot of complexity in development and design over the years of enterprise application development. For some though, learning it is somehow the next step in building a full blown enterprise application – Web Services – is one of the key schemes for implementing service oriented design – almost every platform available has support to the scheme, and that of course includes Java/J2EE.
In this tutorial, I will show how you will using Apache CXF to create Web Servies using JAX-WS and the Apache CXF API to call specific service from a remote application.
- Building the Web Service Application : Server Side - We need to build the application as well as the Web Services implementation code. This will be a generic WAR (Web Archive) that will house the actual implementation
- Building the Web Service Application: Client Side – Of course, we need to provide external clients a way for them to access the services – we will create a stub and give them out to clients for them to use the services.
FYI: I’m using Maven to simplify library definitions.
1st we create the Stub
this houses the interface and entities (Pojos) used to access the service. When you design your service – you usually create the class interfaces (reference) first and put it on another JAR file for re-distribution.
2nd lets build the service.
We will be hosting the service from a Web Archive deployed to an application server.
POM. xml – We will be using Spring CDI and CXF – Might as well load up all the libraries needed.
We include the stub on the server as this will act as the reference of our implementation:
We now create the Service Implementation:
cxf-servlet (or beans.xml) – this is where we will call the factory that will publish the WSDL upon loading the context.
web.xml – we need to make sure that web service request will go thru CXF – since we are using its framework. Good thing about CXF is it does all the necessary binding, marshalling, unmarshalling as well as injecting the in / out interceptors.
Build and Deploy the WAR! – After deploying the war, view the context page. You should be seeing something like this:
If you manage to view the above URL – then you have successfully expose your service and can now be called by external clients
3rd we create the client app.
Now we create a standalone Java app to call the service – we will be using Spring again to context load client beans and we need include the stub so that we can have reference to the implementation.
beans.xml – create the xml and call the proxy factory bean to create the instance on runtime
Create the Client – We will now call the bean and use the reference to call the method.
4th Test! – Test your service!
You should now be able call the Service implementation!
Download the example here
With this simple example, its really a conclusive proof that creating Web Service now is just a breeze – We took advantage of Apache CXF as a service framework to simplify the development and Springs powerful CDI that almost took care the rest.
Get ready to program in a whole new way!
Functional Programming in Java will help you quickly get on top of the new, essential Java 8 language features and the functional style that will change and improve your code. This short, targeted book will help you make the paradigm shift from the old imperative way to a less error-prone, more elegant, and concise coding style that’s also a breeze to parallelize. You’ll explore the syntax and semantics of lambda expressions, method and constructor references, and functional interfaces. You’ll design and write applications better using the new standards in Java 8 and the JDK.