Components in the Carbon platform add functionality to all WSO2 Carbon-based products. For example, the statistics component enables users to monitor system and service level statistics. A component in the Carbon platform is made up of one or more OSGi bundles, which is the modularization unit in OSGi similar to a JAR file in Java. For example, the statistics component contains two bundles: one is the back-end bundle that collects, summarizes, and stores statistics, and the other is the front-end bundle, which presents the data to the user through a user-friendly interface. This component-based architecture of the WSO2 Carbon platform gives developers flexibility to build efficient and lean products that best suit their unique business needs simply by adding and removing components.
A default endpoint is an endpoint defined for adding Quality of Service (QoS) and other configurations to the endpoint, which is resolved from the
To address of the message context.
A defined endpoint is an endpoint which is saved in the synapse configuration.
A dynamic endpoint is an endpoint saved in the registry. This can cause minor performance degradations, but endpoints saved in the registry can be easily modified. Therefore, dynamic endpoints are recommended for situations where the endpoint needs to be frequently modified.
An endpoint is a specific destination for a message. It may be specified as an Address endpoint, WSDL endpoint, a Failover group, a Loadbalance group, and more. Endpoints can be added, edited, and deleted.
Embedded Registry Instance
The Embedded Registry Instance makes use of the embedded ESB database. This is a H2 database and the data files are stored by default in the directory named
ESB_HOME/repository/database. If you run the ESB in the embedded registry mode, you should be careful not to alter manually any files stored in this directory as that might lead to database corruption or data loss.
An Event Source is used to define the event source and the subscription manager configuration used in the eventing implementation of WSO2 ESB. An Event Source provides a service URL that can be used to the send subscriptions and events (events that are not required to go through a mediation flow).
Failover endpoints send messages to the listed endpoints with the following failover behavior. At the start the first listed endpoint is selected as the primary and all other endpoints are treated as backups. Incoming messages are always sent only to the primary endpoint. If the primary endpoint fails, the next active endpoint is selected as the primary and failed endpoint is marked as inactive. Thus, it sends messages successfully as long as there is at least one active endpoint among the listed endpoints.
A Fault Sequence is a default sequence which logs the message including the payload and any error/exception encountered and stops further processing. The Fault Sequence executes whenever WSO2 ESB itself encounters an error while processing a message or when a fault handler is not defined to handle exceptions. A sequence can assign another named sequence as its "fault" handler sequence and control branches to the fault handler if an error is encountered during the execution of the initial sequence.
An Indirect Endpoint refers an actual endpoint by a key. This endpoint fetches the actual endpoint at runtime. Then it delegates the message sending to the actual endpoint. When Endpoints are stored in the registry and referred, this endpoint can be used. The key is a static value for this endpoint.
In-line sequences have their child mediators defined inside the sequence itself.
<sequence name="string">other mediators</sequence>
Java Message Service (JMS)
Java Message Service (JMS) is a widely used API in Java-based Message Oriented Middleware. It facilitates loosely coupled, reliable, and asynchronous communication between different components of a distributed application. JMS supports two models for messaging as follows:
- Queues: point-to-point
- Topics: publish and subscribe
The keystore used to encrypt administrator passwords and other confidential information in Carbon is configured in
ESB_HOME/repository/conf/carbon.xml file. This keystore configuration can be found under the <security> element of the
Load Balanced Endpoint
A Load balanced Endpoint distributes the messages (load) arriving at it among a set of listed endpoints by evaluating the load balancing policy and any other relevant parameters.
Local Registry Entries
The Local Registry Entries are used to define locally resources such as scripts, schemas, WSDLs, policies and other resources in a configuration. They are not uploaded or fetched from the Integrated Registry. They are static. An entry that exists in the Local Registry has higher precedence over an entry with the same name that exists in the integrated registry.
A main sequence is a default sequence, which simply sends a message without mediation.
A mediation configuration is the most important part of the WSO2 ESB as far as the functionality of the service bus concerns. The mediation configuration consists of the following items:
- Proxy services
- Scheduled tasks
- Event sources
- Local entries
- Priority executers (new in ESB 3.0)
A mediation sequence, commonly called a "sequence", is the List Mediator of the ESB. That means it can hold other mediators and execute them. It is a part of the core of ESB and message mediation cannot live without this mediator. When a message is delivered to a sequence, it sends the message through all its child mediators.
A mediator is a full powered processing unit in ESB. It is a component that performs some mediation action on a message during the process flow. Thus, a mediator gets full access to a message at the point where it is defined to gain control and could inspect the message, modify it or take an external action depending on some attributes or values of the current message.
Named sequences refer other sequences using a key. This allows reusing of sequences.
POJO and POX
Acronyms for "plain-old Java object" and "plain-old XML", meaning a standard Java object or XML file.
Port offset can be passed to the server during startup as follows:
Alternatively, you can set it in the Ports section of
<PRODUCT_HOME>/repository/conf/carbon.xml as follows:
Priority Executors can be used to execute sequences with a given priority. Priority Executors are used in high load scenarios where user wants to execute different sequences with different priorities. This allows user to control the resources allocated to executing sequences and prevent high priority messages from getting delayed and dropped. Priority has a valid meaning comparing to other priorities specified. For example, if we have two priorities with value 10 and 1, message with priority 10 will get 10 times more resources than messages with priority 1.
A Proxy Service is a virtual service hosted in the ESB runtime. The proxy service mediates any accepted requests and forwards them to a specified endpoint, most of the time to an actual Web Service. The responses coming back from the target endpoint are mediated back to the client which sent the original service request. Proxy services often make references to sequences, endpoints and local entries. A proxy service can enforce various QoS requirements on a request and can be exposed over a user specified transport. Therefore they are often used to expose existing Web Services over a different transport or a QoS configuration. For example, a proxy service can be used to expose an HTTP service over JMS or it can be used to expose an unsecured service in a secured manner using WS-Security standards.
Unlike sequences and endpoints, which can be stored and loaded from the registry, proxy services cannot be loaded from the registry. However? a proxy service can make references to sequences and endpoints stored in the registry.
A Resolving Endpoint refers an actual endpoint using a dynamickey. The key is a XPath expression. The XPath is evaluated against the current message and the key is calculated at run time. Then Resolving Endpoint fetches the actual endpoint using the calculated key. Then it delegates the message sending to the actual endpoint. When Endpoints are stored in the registry and referred, this endpoint can be used.
Representational State Transfer (REST)
Representational State Transfer (REST) provides a lightweight approach for building distributed systems. Instead of relying on overly complicated protocol stacks and heavyweight middleware, REST facilitates communication between systems by leveraging simple message formats and open protocols that power the Web. You can send and receive RESTful messages through the ESB using a proxy service or API.
Service Provider Endpoint
WSO2 Enterprise Service Bus acts as a central distribution point, which distributes messages received from clients to the relevant service provider endpoints.
A Sequence element is used to define a Sequence of mediators that can be invoked later as a Sequence. If the configuration defines a Sequence named "main", then it is considered as the main mediation Sequence of the ESB. If such a Sequence is not defined locally and a registry has been specified, the registry is looked up for a key named "main" to find the main mediator Sequence. If the user does not define a main or fault Sequence, ESB will create default Sequences.
A servlet is a small Java program that runs within a Web server. Servlets receive and respond to requests from Web clients, usually across HTTP, the HyperText Transfer Protocol.
The Servlet Container (such as Apache Tomcat) is an application that monitors a port on a given IP address. Servlets generate responses to HTTP requests. To do so, the container loads your servlet (if it is not in memory already) and calls the methods defined in the interface. This is the foundation of servlet and JSP architecture.
An XML-based, extensible message envelope format, with "bindings" to underlying protocols. The primary protocols are HTTP and HTTPS, although bindings for others, including SMTP and XMPP, have been written.
A subscription manager configured inside the Event Wource is responsible for keeping track of the subscriptions and provide operations to manage the subscriptions.
synapse-config Directory houses the Mediation Configuration (Synapse Configuration) of WSO2 ESB and contains several files and subdirectories. Usually the following set of child directories is available in the synapse-config Directory: endpoints, event-sources, local-entries, priority-executors, proxy-services, sequences, tasks.
A Task is a custom Java class that implements the
org.apache.synapse.startup. Task interface that defines a single
public void execute() method. Such a Task can be scheduled and managed via the ESB. The scheduling information for a Task can be specified in the
cron format or a
simple format by the user. A Task may also be specified as a one-time Task where required and can be used to trigger a callout or inject a message into the ESB.
A protocol for publishing and discovering metadata about Web services, to enable applications to find Web services, either at design time or runtime.
WS-Addressing was originally designed as the way to convey connection state or context in SOAP messages, emulating the contextualization mechanism provided by HTTP headers in conjunction with stored cookies. This makes it possible to contextualize message exchanges in a similar way, independently of the transport used.
Is a machine-processable specification of the web service's interface written in WSDL. It defines the message formats, datatypes, transport protocols, and transport serialization formats that should be used between the requester agent and the provider agent. It also specifies one or more network locations at which a provider agent can be invoked and may provide some information about the message exchange pattern that is expected. In essence, the service description represents an agreement governing the mechanics of interacting with that service.
An XML format allows service interfaces to be described along with the details of their bindings to specific protocols. It is typically used to generate server and client code and for configuration.
WSDL Endpoint is an endpoint definition based on a specified WSDL document. The WSDL document can be specified either as a URI or as an inlined definition within the configuration.
WSO2 ESB Management Console
WSO2 ESB Management Console is a Web based control panel powered by JSP and AJAX which enables system administrators to interact with a running ESB instance without touching any underlying configuration files. The Management Console allows the users to command and control proxy services, sequences, transports, local entries, registry, modules, endpoints and much more.
WSO2 Enterprise Service Bus Endpoint
This is a representation of a service provider endpoint which lies inside WSO2 Enterprise Service Bus configuration.