Author:Md Mahfuj Jia
Introduction:Now days, technologies are changing very rapidly. In an enterprise application integration is the most challenge able part and it is very much necessary to build application with high scalability, reliability, maintainability and testability. Service oriented architecture (SOA) will give you the flexibility to connect with different types of multiple node or language to your business logic layer. For example, you have developed a login service using SOA and you have exposed your wsdl or wadl that any body can consume login service to their own application for login. Apache CXF is one of the most used service oriented architecture (SOA) framework in enterprise application development. I have developed a sample service using Apache CXF and spring integration module with contact first approach. Contact first approach is the industry standard best practice when developing the web service.
Prerequisites for this tutorial:
1.Clear concept of object oriented programming and service-oriented architecture.
2.Basic knowledge about spring framework and dependency injection (IoC container).
3.Basic object relational mapping (ORM) knowledge is required.
Technologies Used:
1.Apache CXF
2.Spring integration module
3.Hibernate
4.MySQL
5.Netbeans
6.Apache Tomcat – 8+
7.JEE-7
8.JDK-7+
Database Table Description:
-->
Conclusion:
In this tutorial, we have seen that how to write web service using SOA framework in java. Spring web service module is another popular and industry oriented SOA framework. But Spring-WS is comparatively harder than Apache CXF but I am a fan of Spring-WS. In Spring WS you need to explicitly implement endpoint interfaces and Spring-WS support only contact first approach and SOAP based web service. But Apache CXF supports contact first and contact last approach and gives support both Soap and rest based web service.
Introduction:Now days, technologies are changing very rapidly. In an enterprise application integration is the most challenge able part and it is very much necessary to build application with high scalability, reliability, maintainability and testability. Service oriented architecture (SOA) will give you the flexibility to connect with different types of multiple node or language to your business logic layer. For example, you have developed a login service using SOA and you have exposed your wsdl or wadl that any body can consume login service to their own application for login. Apache CXF is one of the most used service oriented architecture (SOA) framework in enterprise application development. I have developed a sample service using Apache CXF and spring integration module with contact first approach. Contact first approach is the industry standard best practice when developing the web service.
Prerequisites for this tutorial:
1.Clear concept of object oriented programming and service-oriented architecture.
2.Basic knowledge about spring framework and dependency injection (IoC container).
3.Basic object relational mapping (ORM) knowledge is required.
Technologies Used:
1.Apache CXF
2.Spring integration module
3.Hibernate
4.MySQL
5.Netbeans
6.Apache Tomcat – 8+
7.JEE-7
8.JDK-7+
Database Table Description:
CREATE TABLE `users` ( `user_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `user_name` varchar(45) NOT NULL, `display_name` varchar(45) NOT NULL, `email` varchar(45) NOT NULL, `bank_uid` varchar(45) NOT NULL, `status` varchar(45) NOT NULL, `created_by` varchar(45) DEFAULT NULL, `create_date` datetime DEFAULT NULL, `creator_ip` varchar(45) DEFAULT NULL, `updated_by` varchar(45) DEFAULT NULL, `update_date` datetime DEFAULT NULL, `updator_ip` varchar(45) DEFAULT NULL, PRIMARY KEY (`user_id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
Ø
From this article, we see the basic features and comparison
of industry oriented soa architecture frameworks.
Framework
|
Key Positives
|
Key Concerns
|
Apache AXIS2
|
❶ Most
Commonly Used, Matured & Stable Web Services Development Framework
❷ Supports
Multiple Languages (C++, Java)
❸ Supports
both Contract-first & Contract-last Approach
❹ In
context of Orchestration & Web Services Transaction (long-running
transactions) it supports wide variety of related WS-* specifications:
WS-Atomic Transaction,
WS-Business Activity, WS-Coordination, WS-Eventing, WS-Transfer
Compatible with Spring
Framework
|
❶
Comparatively More Code Required/Generated w.r.t. Spring WS/CXF
❷ Is being
phased out gradually (mostly by Apache CXF)
❸ It is not
fully compliant for JAX-WS JAX-RS
|
Apache CXF
|
❶ Most
widely used Web Services Standard Now; Improvement over AXIS2, which is now
gradually being replaced by Apache CXF
❷ Intuitive
& Easy to Use (less coding required as compared to AXIS2)
❸ Clean
separation of front-ends, like JAX-WS, from the core code
❹ Fully
compliant with JAX-WS, JAX-RS & others
❺ Best
Performance across all available framework with minimum computation overhead
❻ Supports
wide variety of front-end models
❼ Supports
both JAX-WS & JAX-RS (for Restful Services)
❽ Supports
JBI & SDO (not supported in AXIS2)
❾ Compatible
with Spring Framework
|
❶ Does not
support Orchestration & WS Transactions yet
❷ Does not
support WSDL 2.0 yet
|
Spring WS
|
❶ Best in
terms of supporting Contract-first Web Services Development Approach
❷ Enforces
Standards & Best Practices by Framework Constraints (no way out of it
& hence limitation as well)
❸ Supports
Spring Annotations as well as JAX-WS
❹ Least
code from developer’s perspective
❺ Best
Aligned with Spring Technology Stack (also similar architectural stack as
Spring MVC) including Spring Security
|
❶ Least
number of WS-* Specifications supported (does not fully compliant with
JAX-WS)
❷ Spring
offers itself as standard & hence other Java-compliant frameworks support
better standards support
❸ Only
support Contract-first Web Services Development Model
|
Image:1 |
Image:2 |
Image:3 |
Image:4 |
Image:5 |
Image:6 |
Image:7 |
Image:8 |
Image:9 |
Image:10 |
Image:11 |
Image:12 |
Image:13 |
Image:14 |
Image:15 |
Image:16 |
Image:17 |
Image:18 |
Image:19 |
Image:20 |
Image:21 |
Image:22 |
Image:23 |
Image: 1-Image: 7 – Here we see how to generate xsd file
to data transformation object (dto). There are two files inside xsd folder.
user.xsd is for data contact mapping and another is a external binding xml file
which gives you java.util.date instead of xmlgorgeoan date format. If you want
to edit xsd file and regenerate dto, you just delete the jaxBnUser folder inside
the JAXB Bindings folder in Netbeans. You will see Generated Sources (jaxb) in
Netbeans is also deleted. Now you do step: 2-7 again.
Image: 8-Image: 11
–Apache CXF, Data source and Spring integration configuration file.
Image: 10 –Apache CXF
has the flexibility to expose web service both SOAP and Restful. This one
is the cxf configuration file.
Image: 11 -Spring
integration setup part. Link endpoint service with business logic layer and
object conversion mechanism is configured here. Note that in gateway
configuration, there is a service-interface declaration. The main feature of
this configuration is that you just declare endpoint-interface according to the
endpoint interface package and you do not need the endpoint-interface
implementation. You just linked your endpoint-interface to your service layer
using chain configuration and setup the object transformation mechanism. Spring
integration module is responsible for implementing your end-point interface
implementation. Endpoint mapping and request-response object transformation
manually is a time consuming issue. I think Apache CXF-Spring integration
configuration is a dynamic approach for writing web service.
Image: 12 –Endpoint
interface of soap web service.
Image: 13 –Endpoint
interface of restful web service.
Image: 14 –Here we
see the transformation of objects and UserTransformer class is responsible for
this. In this project we have used DozerBeanMapper library to transform dto to
service and vice verse. This class talks with image-11 applicationContext-si-cxf.xml file for
object transformation.
Image: 15 –Service
layer implementation.
Image: 16-Image: 17
–Dao layer implementation.
Image: 18 –Image: 23
–These are our exposed web services and we will test these services using
SOAP-UI.
Download Project Source CodeConclusion:
In this tutorial, we have seen that how to write web service using SOA framework in java. Spring web service module is another popular and industry oriented SOA framework. But Spring-WS is comparatively harder than Apache CXF but I am a fan of Spring-WS. In Spring WS you need to explicitly implement endpoint interfaces and Spring-WS support only contact first approach and SOAP based web service. But Apache CXF supports contact first and contact last approach and gives support both Soap and rest based web service.