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.
Java Platform, Enterprise Edition is a widely used platform for enterprise server programming in the Java programming language.
This book covers exciting recipes on securing, tuning and extending enterprise applications using a Java EE 6 implementation.The book starts with the essential changes in Java EE 6. Then they will dive into the implementation of some of the new features of the JPA 2.0 specification, and look at implementing auditing for relational data stores.They will then look into how they can enable security for their software system using Java EE built-in features as well as using the well-known Spring Security framework. They will then look at recipes on testing various Java EE technologies including JPA, EJB, JSF, and Web services.Next they will explore various ways to extend a Java EE environment with the use of additional dynamic languages as well as frameworks.At the end of the book, they will cover managing enterprise application deployment and configuration, and recipes that will help you debug problems and enhance the performance of your applications.