Integration with other systems

All of these components and all of these solutions are built on exposed services, APIs, and they can be exposed in a variety of ways on how to call them, such as through webservices, http, locally, and so on. This is a service-based architecture and everything is exposed for you to use with an external system or to integrate with any external system.

An XAPI can be invoked in a number of ways, including:
http/https

Used for when making a call through one of our exposed servlets.

local

(using direct access to the database through our entity classes) - Typically used for backend batch processing, such as agents or the application itself.

Entity Java™ Beans (EJB)

XAPIs can be exposed through entity Java bean wrappers. These can be either EJB 2 or EJB 3 (different spec versions), depending upon the exact stack (as in appserver). One or both of these is available.

WebServices
Simple Web Services
Webservice wrappers around EJB wrappers around our XAPI. These are an old deprecated way of exposing webservices. They have the disadvantage of not being "fully self describing". This is in contrast to the spirit of webservices. In webservices, the WSDL document is intended to provide all the information you would need to call an API.
Complex Web Services
also referred to as JAX-WS. These were created to resolve the issues with the older style simple/ejb based webservices. They are based on JAX-B and JAX-WS technologies. These technologies make it so that you can build client code from the WSDL that explicitly forces you to use only what is available on the service and also provides information to client developers that allows them to force passing all required attributes and only data that is reasonable for a field. For instance, the WSDL might include information that a given field is a numeric field that can have two digits after the decimal point.
Services include the following:
XML-based
  • All exposed services use XML as input and return XML as their output.
Stateless
  • All exposed services can be distributed and executed independently across a cluster of servers.
  • No state information is required to be carried between one or more service calls.
Granular
  • All functionality exposed as a service, not just select functionality.
Protocol independent
  • Any client, from any where, at any-time.