INNOVATIONS: XTIVIA SERVICES FRAMEWORK (XSF)
XTIVIA Integration Services (XIS) is a suite of common services used on any integration project. This XIS-rorko-web-application-rorkoproduct suite is an implementation accelerator, saving weeks or months of effort on the coding of the common services, by providing out-of-the-box, easy to deploy and configurable services for almost any integration platform.
Designed and built on a stable Service Oriented Architecture (SOA) base, XIS is intended for deployment on any JMS compliant integration platform across your enterprise. The latest version of XIS includes an upgrade to Hadoop as the database backend. XIS uses Hadoop to provide persistence to Enterprise Service Bus. We also developed our own MapReduce programs to optimally search and retrieve the transactions stored in Hadoop.
Why XTIVIA Services Framework
While it’s true that one can create “resource-based” services via a portlet’s serveResource() method and “resource IDs” in a portlet, the coding/implementation technique required by this approach is very different from that used in traditional JAX-RS/Jersey/Spring based REST services. Further, the serveResource() approach is cumbersome when the overall collection of services for an application is spread across a number of portlet implementations and resulting WARs. What is preferable is to find a way to build a singular, common set of REST services that can be leveraged by a number of different portlet applications, in terms of ease of development, deployment, and maintenance and testing.
In terms of development goals for XSF, there were several key goals for the framework (and any resulting REST services that are developed using it):
- Support the development of individual REST endpoints as simple Java objects.
- Enable the testing of these service objects in a basic JUnit environment that does not require a web environment for unit testing.
- Provide a declarative mechanism for defining “routes” to each of the REST endpoints that maps the URI and HTTP method to a particular endpoint implementation (POJO). For readers who have used existing web frameworks such as Rails, Sinatra, Grails, Ratpack, Django, etc. this should be a familiar concept.
- Be Liferay-aware. REST services really only have value in a Liferay-server environment when they can access the logged-in Liferay user, leverage Liferay APIs such as permission-checking, etc.
- Leverage Liferay SDKs and hot-deployment support. In effect this means that the services are contained in a Liferay portlet WAR. The benefit is that this provides the maximum amount of support in terms of Liferay features and also enables services to be hot-deployed during development.
XSF supports both rapid development and seamless integration into your portal. Applications constructed using XSF are developed using Maven (and the Liferay Portal Maven artifacts).
Each REST service/endpoint is constructed as a simple Java object that implements a single execute() method. A simple Java annotation (@Route) is then added to your class to define the URI and parameters for your service. Once your service is coded and ready for deployment you simply use the standard mvn package command to build a portlet WAR and deploy it as you would any other Liferay plugin.
XSF provides seamless integration with Liferay from your services including access to the currently logged-in Liferay user and the Liferay API. XSF provides automatic marshalling of Java objects to/from JSON as an OOTB feature, but is implemented with a pluggable architecture where you can supply your own marshalling framework if required.
The framework is also shipped with samples (described in the documentation) to provide you with a head start in developing your own services. For a more in-depth rundown of the features and their usage please refer to the XSF Github page.
Public Site and Customer Portal Implementation at a major workman’s compensation insurance provider
Enterprise Management Apps Portal Implementation at a major retail chain (3,000+ stores)
Our client, a national retailer with 3,000+ stores was looking to build an internal Enterprise Management Apps Portal to allow their customer service team, accounting, fulfillment, and other departments to perform various back office operations from handling returned checks to inventory charge-off to temporary co-worker assignment to business exceptions/metrics and more. They wanted to leverage Liferay as the application development platform but use a Single Page App architecture to build these applications. XTIVIA was able to quickly design and implement an XSF-based solution to support an AngularJS implementation that used OOTB Angular facilities for Ajax/REST communications. This architectural approach resulted in the ability to clearly separate the UI from services integration from the developer perspective, and the ability to deliver modern, dynamic, and responsive apps from an end-user perspective.
Q: XSF sounds great! How do I get it?
A: XSF is available to XTIVIA customers as a perpetual, unlimited license as part of XTIVIA Liferay implementation engagements. A binary (JAR) version of the framework, along with sample services developed using the framework is available from GitHub at https://github.com/xtivia/xsf.
Q: Is the source code available?
A: The XSF source code is provided to XTIVIA customers under the LGPL license.
Q: Can I modify the provided source code to meet my needs?
A: Yes, you can modify the code as much as you want.
Q: How do I deploy the framework?
A: The framework is delivered as a JAR and services built using the framework are implemented in a portlet WAR , so you deploy and control your service application(s) as you would other portlets.
Q: I don’t have any developers available, or they don’t have expertise in this area. Can I get some help?
A: XTIVIA is happy to help. Please contact your XTIVIA representative or send mail to firstname.lastname@example.org for more information.