|
|
Product Overview
Copyright © JEDIS Limited 2001. |
| J-FORCE®
is an acronym for JEDIS - Framework Oriented Remote
Communication Environment. The J-FORCE®
product provides a ‘framework’
for a system of distributed interacting processes, such as
PASCOL®.
The J-FORCE® framework is designed as a code platform for systems having the following characteristics:
J-FORCE® is built using the Common Object Request Broker Architecture (CORBA) standard with an Object Request Broker (ORB) abstraction such that a variety of standard compliant ORB products can be implemented. By default J-FORCE is shipped and licensed with a default ORB - OmniORB™ from ATT Research. J-FORCE® provides an C++ development framework for applications to be developed leveraging real-time High-Availability without the nuances of rigid application design for implementation or business application limitations. J-FORCE® application components are built with database independence offering an Oracle, Sybase or Microsoft SQL-Server abstraction. J-FORCE® offers an Object Orientated approach to a distributed component and installation implementation. J-FORCE® introduces a configuration object and manager thereof enabling "C++ Class object data" to be defined abstract to database type (s); stored externally or encapsulated as a image, byte or text types ; serially referenced with portable streams for external come inter-operable access. J-FORCE® uses J-Tools® for common class and/or API reference. |
Operating Systems/Development Kits |
||
| Concepts |
|
|||||||||||
|
A system using the J-FORCE® framework has two main parts: the framework itself, which is common to all systems, and the application which will be different for each system. For most applications there will exist several server programs . Each of those servers may themselves consist of multiple co-operating component processes; this aspect is handled automatically by the J-FORCE® framework. Some of the key J-FORCE® concepts are noted below :
|
||||||||||||
| Framework Architecture |
|
|||||||||||||
|
These are the component processes that make up the J-FORCE® framework architecture. Each is more or less independent of the others, although in some cases the amount of useful work that can be done in their absence is very restricted. The J-FORCE® components are related below :
|
||||||||||||||
| Communication | |
| The framework components
communicate only by means of messages, which they are able to place on to
the inbound message queue of the target component. A message may be a
request made by the originator component for the target component (server)
to perform, or it may be considered a result from a request, or an
asynchronous event (e.g. alarm).
The format and meaning of a message is determined by the target process. A message will generally contain some means of identifying the originator, in case the action of fulfilling the request in the message generates further messages to be sent back to the originator. The mechanism for sending a message is a CORBA interface. Each component will publish an interface that will include at least one ‘enqueue message’ remote function. (There may be other CORBA remote functions too, supporting process monitoring and control; non-framework components must also supply these functions. These are discussed elsewhere, under the Process Monitoring Sub-system) The message sending is unidirectional, with delivery on a best-effort basis, not guaranteed. This is supported by the CORBA ‘one-way’ request protocol, and allows for more efficient transmission since there is no reply to wait for. This architecture simplifies process design in one respect: there is no need to worry about whether your request succeeded or not, or even whether it was received. Results received are handled by a different thread, and can be matched up to originating requests by request id. However, someone somewhere, perhaps further up the chain, is going to want to know when requests ‘disappear into a black hole’, i.e. no result received within a reasonable time. An example of this situation is when a service definition is composed of several parts that must be executed in order; the process executing them must wait for an indication of the success or failure of one part before it sends the requests to execute the next part. A method of handling this problem is as follows: requests can be optionally tagged ‘notification required’; for these requests, a timeout item is placed by the request originator on an internal list. The thread processing the incoming results matches them up with timeouts and removes any matching timeouts. Another thread wakes periodically and checks for timeouts that have expired; it remove these from the list and posts a ‘failure’ message to the results queue, where it is handled by the results processor thread. Thus all requests eventually get an answer of some sort The ‘notification required’ attribute and the mechanism to handle it will be supplied by the framework. Timing out may be caused by failure of some component down the line, or by temporary system overload. The process monitoring system (q.v.) must carefully distinguish between the two cases; restarting components that are merely busy will compound the problem. The framework components each manage one or more message queues. Each component will have at least one inbound request message queue, and optionally one or more outbound message queues. Messages are placed on a component’s inbound queue by external processes. No need can be seen at present for more than one inbound message queue.The inbound queue is processed by a number of consumer threads; these take the next available message from the queue and perform the required actions to satisfy the request. Outbound queues are for the use of the component when sending messages to other processes that may be temporarily unavailable. Messages may be grouped by priority or other criteria and thereby processed in a different order to that of their enqueuing. Queues may be transient or persistent. Transient queues are memory resident. Persistent queues are database resident and processed directly via the DBMS.
|
|
| J-Tools | |
| J-Tools® is a general purpose suite of C++ Class libraries. The Class library
encapsulates : strings, link lists, portable streams, queues, events, threads, Name Value
Pairs (NVP) manipulation. J-Tools® is required for development of J-FORCE® applications, but may be used independently in other applications. |
|
| Application Components |
|
|||||||||||||||
|
Main entities that comprise an J-FORCE® application component are related below :
|
||||||||||||||||
| High Availability |
|
|
|
J-FORCE® supports High Availability (H/A) in it's framework design and operation. In addition J-FORCE® compliments Hardware vendor H/A solutions. Traditionally, H/A has best been described as "the ability to fail over one node running a suite of applications to another in the advent of a hard physical error". The downside with this is that the time taken to "bring up" the application has always been too long much less the nuance of "fail back" when and if required. Efforts have been made to reduce the "outage time" and continuation of service by hardware disk mirroring and network clustering. In addition, the concept of replication has been introduced to increase the "Up Time" and just render service availability to simple re-connectivity. The cost of implementing H/A is immense. The business benefit sometimes can be overindulged and outweighed by the actual cost of implementation and on-going operational costs. By default, J-FORCE® has built in H/A concepts that can either dovetail into a distributed, hardware specific solution or be used in conjunction with H/A software products and their solutions inclusive of the designate hardware configuration. Such H/A software products are MC Service-Guard™ from Hewlett Packard and Sun Cluster™ from Sun Microsystems. J-FORCE® has been certified against both of these products.
|
||
| Operating Systems / Development Kits | |||
|
|
|
||
|
J-FORCE® has been designed and built for UNIX™ and Microsoft Windows. Current implementations of UNIX include SUN Solaris, HP/UX and Linux. Windows includes NT, 95, 98 and 2000. The CORBA, ORB dependencies for J-FORCE® are subject to the same deployment. J-FORCE® has a extra dependency of the J-Tools® product from JEDIS Limited. J-Tools® has been ported to the afore mentioned operating system platforms. For building J-FORCE® applications an C++ compiler must be procured to the target operating system. In addition an CORBA, ORB product must be procured. J-FORCE® bundles OmniORB™ from ATT Research as it's default ORB. However GNU licensing must be strictly observed if deploying a commercial J-FORCE® based product using the OmniORB™ product; refer ATT Research at http://www.uk.research.att.com/omniORB/omniORB.html for more details. |
|||
|
|
|
|
JEDIS
Limited Email: angela@jedis.co.nz
|