WO2007147207A1 - Middleware broker - Google Patents
Middleware broker Download PDFInfo
- Publication number
- WO2007147207A1 WO2007147207A1 PCT/AU2007/000859 AU2007000859W WO2007147207A1 WO 2007147207 A1 WO2007147207 A1 WO 2007147207A1 AU 2007000859 W AU2007000859 W AU 2007000859W WO 2007147207 A1 WO2007147207 A1 WO 2007147207A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- protocol
- communication
- message
- middleware
- definition
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/2871—Implementation details of single intermediate entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
Definitions
- This invention relates to a middleware broker for middleware.
- Middleware is a software layer that aims to provide the glue between interacting components in a distributed computing environment
- middleware types include synchronous procedural RPC (Remote Procedure Call) oriented middleware, such as DCE-RPC, and asynchronous MOM (Message-Oriented- Mzddleware) based products, such as IBM's MQ-Series; transaction-oriented middleware include BEA's TUXEDO and IBM's. CICS; more recently, object-based middleware, the best known of these being OMG' s CORBA, Microsoft's DCOM and Java/RMI. Systems based on one of these methods are not directly protocol-level compatible with systems based on another. For example, a CORBA client is not plug-compatible with a DCOM server, even if both run on an NT platform. Although both systems are based on an object model, the implementations of these object-based systems ate quite different.
- Protocol-level integration of legacy systems with other systems has been reported to be a major challenge with no obvious general solutions.
- Low-level systems integration is difficult, because application semantics must be addressed and low-level manual data marshalling is often required,
- Direct translation between two different formats or, more generally, two different protocols is the oldest method of achieving data interchange.
- Direct translation can offer excellent performance, but it is even less flexible than the static adapters used by "middleware" systems.
- U.S. Pat. No.5,826,017 to Holzmann (the Holzmann implementation) generically describes a known apparatus and method for communicating data between elements of a distributed system using a general protocol.
- the apparatus and method employs protocol descriptions written in a device-independent protocol description language.
- a protocol interpretation means or protocol description language interpreter executes a protocol to interpret the protocol description.
- Each entity in a network must include a protocol apparatus that enables communication via a general protocol for any protocol for which there is a protocol description.
- the general protocol includes a first general protocol message which includes a protocol description for a specific protocol.
- the protocol apparatus at a respective entity or node in a network which receives the first protocol message employs a protocol description language interpreter to interpret the included protocol description and thereby execute the specific protocol.
- a recently published granted US patent document is US 6,772,413 which discloses a high level transformation method and apparatus for converting data formats in the context of network applications, among other places, A flexible transformation mechanism is provided that facilitates generation of translation machine code on the fly.
- a translator is dynamically generated by a translator compiler engine.
- the translator compiler engine implemented according to the present invention uses a pair of formal machine-readable format descriptions (FMRFDs) and a corresponding data map (DMAP) to generate executable machine code native to the translator platform CPU, When fed an input stream, the translator generates an output stream by executing the native object code generated on the fly by the translator compiler engine.
- the translator may be configured to perform a bi-directional translation between the two streams as well as translation between two distinct protocol sequences;
- this document discloses a translation method by generating a set of executable machine instructions for direct processing, said executable machine instructions being generated as a function of a data segment mapping, input format description and output format description, said executable machine instructions to translate an input data stream directly into an output data stream. Further the disclosure is primarily aimed at XML formats. This system is highly data bit intensive and therefore is primarily only suitable for repetitive processing of a single known protocol to another single known protocol.
- a system of intercommunication including the steps of: defining the structure of one or more protocols used in communication and storing said structure in a library; at run time analysing an input communication and determining an appropriate input structure of protocol of the input communication from the library and analysing the path of the intended output communication and determining an appropriate output structure of protocol of the output communication from the library; providing a dynamic marshalier for processing at run time and sending the information in accordance with the identified output structure from the corresponding relevant sections of the.identified input structure; wherein the system allows ready communication between various protocols,
- the system can include the library having a predefined conversion of the structure of one or more protocols to the structure of another of the one or more protocols.
- the dynamic marshalier can provide buffering or addressing as required.
- the system also provides for the dynamic marshaUer to include definable predefined processing steps of corresponding relative sections of the identified output structure to the identified input structure.
- the predefined processing steps can be protocol neutral such that an end user can define the processing steps in a generic manner and the dynamic marshaller undertakes the required manipulation of the data in any communication based on the predefined processing step of the relevant section of the communication protocol structure.
- This provides a required effect regardless of the protocols of communication.
- the end user therefore need not be aware of the details of the protocol languages to enable a required manipulation.
- there can be user defined or third party defined modules can be invoked at particular points during marshalling and un-marshalling (message processing). ,
- a method of intercommunication of middleware including the steps of: providing a table of initial definition of structure characteristics, including format and parameter data types, of one or more protocols; converting said one or more structure protocol definitions into a selected format; storing $aid one or more structure protocol definitions in said selected format in one or more repositories; at run time assessing the incoming mess&ge and selecting an appropriate structure protocol definition to be u$ed from the table and using the selected format of the converted structure protocol definition to communicate.
- the method does not undertake a full conversion but instead, before the time of the message, a structure of the protocol has been defined and the data and information in the form of the protocol structure can be readily communicated in a protocol structure format that would be understood by the receiver.
- the invention also provides a method of flow of an outbound communication to another module with interface including the steps of. assessing the application of the outbound communication to determine and select a protocol to try from a table of protocols in a priority arrangement; using the selected protocol to determine the format and arguments for the outbound communication; using the protocol definitions stored to prepare the outbound communication for the particular middleware or application service; providing required buffer; determining which protocol to use for transmission; looking up table of end-point resolutions to determine the communication parameters required to communicate with the selected transmission protocol; attempting to communicate with the designated host using the appropriate communication parameters; and if communication with the selected protocol fails selecting the next protocol to try from the table of protocols in the priority arrangement
- the invention also provides a method of flow of an inbound communication from another module with interface including the steps oft receiving inbound message in the protocol that it was sent; looking up table to determine whether the message needs marshalling into another protocol before passing the inbound communication to the target application on the local system; if message needs marshalling into another protocol, determining the preferred protocol from a table according to priority; determining the format and arguments for the inbound communication; using stored protocol definitions for the selected protocol to prepare the inbound communication for the target middleware or application service; buffering the inbound communication as required; determining protocol to use for transmission. determining local end point of the target application on the local system; and at run time passing the inbound communication to the target application on the local system.
- the invention provides an easier and flexible approach in which rules and middleware characteristics are specified in $. repository, for the system broker to provide the connection and transformation for the middleware protocols, as well as for legacy systems.
- the system broker it is not necessary to nave a converter at either end of the communication.
- protocols are specified in a language neutral machine independent definition language.
- the language specifies the structure of messages and the parameter templates to establish a connection and exchange messages.
- the language neutral machine independent definition is compiled into binary modules known as protocol implementation modules (PIMs) and transport interface modules (TIMs),
- PIMs protocol implementation modules
- TIMs transport interface modules
- PlMs and TIMs are loaded at runtime and executed by interpreters (virtual machines).
- PIMs are processed by the dynamic adaptive marshaller (DAM) and the TJMs are handled by the transport mediation server (TMS). Both of these modules are controlled by the message distribution server (MDS).
- MDS message distribution server
- the MDS is also responsible for any interface mapping that is required. It uses either the processed request or response message and a mapping definition. The actual mapping is performed by a mapper module under the direction and control of the MDS.
- the middleware broker is The Ubiquitous Broker Environment (the TUBE system).
- TUBE allows any defined interface to be marshaled across any defined protocol. This is achieved using existing clients and servers. There are no code changes, The protocol may be switched from A to ... at runtime without requiring a stop/start of the application or TUBE runtime. The mode of the interaction may also be switched from say synchronous to asynchronous without operational impact. The client is oblivious to the change. In other words TUBE can make a synchronous protocol asynchronous and visa-versa. TUBE implements protocols using loadable modules called Protocol Implementation Modules (PIMs).
- PIMs Protocol Implementation Modules
- CORBA uses an encoding known a$ CDR (Common Data Representation) for reading and writing basic data types.
- CDR Common Data Representation
- CORBA CDR-ba$ed
- an existing client using protocol XX is able to make a call to a server using XX, Without disruption to either client or server TUBE can intercept the XX message, convert it to the new protocol and send it across to the receiving node. At the receiving end, TUBE can convert back to protocol XX and pass to the original server. This allows users "to play" with protocols before actually implementing (or rewriting) existing clients or servers.
- TUBE provides a middleware definition tool specifically for this purpose.
- the tool consists of a number of modules, each dedicated to a specific task related to the definition,
- the first thing that needs to be defined is the payload format This is defined as a binary sequence. It is also defined that this binary sequence must be obtained by a call-out to an OSM API, which carries-out the encryption.
- the API module-name, signature and parameters are obtained in either of two ways; they can be imported from a C-language header or Java class definition, or be specified in the tool. This information is stored temporarily in a meta-language format called PDL (Protocol Definition Language).
- PDL Protocol Definition Language
- the next part of the definition involves the interaction with, the OSM transport. This specifies how we get messages into and out of OSM. This operation is divided up into three phases; the method of establishing a connection, the method of conducting a session, and termination actions. These definitions include any API interactions.
- the specification consists of two parts; protocol implementation and transport interface.
- EPRT Resolution Table
- DPT Distribution Priority Table
- TUBE TUBE
- All they need to implement is the encryption library, which TUBE will call during marshal and un-marshal operations. This way their algorithm remains secret.
- TUBE is unaware of its detail or structure. It merely handles the (potentially) complex traversal of the interface definitions. Usually these would have to be hand-coded for each interface. TUBE saves the bank a vast amount of work.
- TUBE handles the SOAP to OSM conversion
- TUBE uses a modified IDL style language (Protocol Definition Language or PDL) to define protocols.
- PDL definition is compiled into a set of binary op-codes.
- This collection of op-codes is known as a Protocol Implementation Module (PlM).
- PlM Protocol Implementation Module
- DAM Dynamic Adaptive Marshaller
- the op-codes in the PIM contain instructions for traversing the interface definitions stored in the Module Definition Repository (MDR). These definitions are obtained by parsing the IDL description for the interface,
- Constructs defined in the script which are not part of the message payload (for example the header) are stored in a run-time variable segment and only used for same-protocol exchanges.
- the items that constitute the body of the message (as defined in MDR) are stored in an intermediate format known as a TLV (Type, Length, Value) buffer.
- TLV Type, Length, Value
- Figure 1 is a diagrammatic view of the TUBE build time processing system in accordance with one embodiment of the invention
- FIG. 2 is a diagrammatic view ofTUBE Component Architecture of one embodiment of the middleware broker of the invention
- Figure 3 is a diagrammatic view of TUBE out-bound message scenario
- Figure 4 is a diagrammatic view ofTUBE in-bound message scenario
- Figure 5 is a diagrammatic view of Fragment of mathServer IDL
- Figure 6 is a diagrammatic view of Structure of request message (highlighting payload)
- Figure 7 is a diagrammatic view of Structure of a successful response message
- Figure 8 is a diagrammatic view of Structure of an unsuccessful response message with an exception as payload
- ⁇ Figure 9 is a diagrammatic view of structure of a PIM
- Figure 10 is a diagrammatic view of structure of a PIM Header
- Figure 11 is a diagrammatic view of structure of a Marshalling Map
- Figure 12 is a diagrammatic view of mapping op-code target to variable value
- Figure 13 is a diagrammatic view of declaration of a byteSequence
- Figure 14 is a declaration for an array
- Figure 15 is a declaration of a null terminated string
- Figure 16 is a declaration of an object reference
- Figure 18 is a response message declaration showing bufferjength variable
- Figure 19 is a diagrammatic view of the process of invoking DAM from a PCM Figure 20 is a PDL definition of CORJBA using the PDL compiler of the invention;
- Table 3 Format of Constant Segment Entry
- Table 4 Format of Variable-Definition Segment Entry
- Table 5 In-memory layout of Variable Value Table
- Table 8 op-codes generated for reading a byteSequence
- Table 9 op-codes for reading a null terminated string
- Table 10 op-codes for reading an object reference
- a method of intercommunication of middleware including the steps of providing a table of initial definition of structure characteristics, including format and parameter data types, of one or more protocols; converting said one or more structure protocol definitions into a selected format; storing said one or more structure protocol definitions in said selected format in one or more repositories; and at run time assessing the incoming message and selecting an appropriate structure protocol definition to be used from the table and using the selected format of the converted structure protocol definition to communicate.
- middleware broker of the invention includes The Ubiquitous Broker Environment (the TUBE system) which uses PDL (Protocol Definition Language), and a declarative scripting language (based on OMG-IDL) to define the characteristics of a particular protocol
- the TUBE Protocol Definition tool provides a GUI interface for users to produce PDL scripts. This script is then submitted to the PDL compiler, which converts it into an internal format that TUBE can process at runtime.
- the output of the PDL compiler is stored in the Protocol Definition Repository.
- the TUBE Interface Description Language (IDL) compiler processes the E)L definition of the interfaces that need to communicate. These files define the format and data types of the parameters passed between clients and servers. TUBE stores this information in its Module Definition Repository. This data in conjunction with the protocol definition (stored in the Protocol Definition Repository) is all that TUBE needs to convert messages between different middleware formats.
- the Distribution Priority Table stores the names of the various protocols supported for each interface defined in the Module Definition Repository- These protocols are stored in priority order; that is, starting by the preferred protocol, followed by each subsequent protocol. Each entry in the Distribution Priority Table corresponds to an entry in the End- Point Resolution Table. This table defines the communication parameters necessary to communicate with the interface over the specified protocol. In the case of CORBA, for example, this would be the IOR for a server that implements the desired interface. The information stored here depends entirely on the protocol. These two tables are used m conjunction by TUBE to determine where and how to send messages between different middleware.
- FIG. 2 shows the mam components of the architecture of The Ubiquitous Broker Environment (TUBE).
- Systems that work through TUBE will use the TUBE API, or use their own middleware API, and have these calls intercepted and processed by TUBE.
- TUBE consists of four (4) main process components, in addition to its four (4) repositories.
- the TUBE server provides the entry-points for the APIs. Both client code and TUBE internal code communicate through the interfaces provided.
- the Message Distribution Server associates each request for a service with a particular protocol. It reads the Distribution Priority Table to determine which protocol to use to process the message.
- the Dynamic adaptive marshaUer prepares requests for a particular protocol. Given a request from the MDS, it looks-up the definition of marshalling rules for the requested protocol, and the target interface definition in the Module Definition Repository, It then marshals the target interface into the desired protocol, based on the definitions from both repositories. It also u ⁇ -marshals from the source protocol into an internal protocol-neutral format ⁇
- the Transport Mediation Server determines the target end-point for the interface from the End-Point Resolution Table. It uses the combination of interface and protocol, such as the IP-address and port number of an ORB, to workout the destination.
- the Module Definition Repository stores the meta-definition of the particular interface. This includes the interface identifier and the data types of the parameters passed. This information is derived from the EDL for the interface.
- the Distribution Priority Table provides for each interface defined in the MDR, a list of protocols that can be used to communicate with this interface, stored in priority order.
- the Protocol Definition Repository stores the marshalling rules for each protocol. These rules are generic for each protocol and not specific to any interface stored in the MDR.
- the End-Point Resolution Table stores the target communication address for each interface/protocol combination. This address could be, for example, the IOR for a CORBA server, or a queue definition for MQ series. This table stores the necessary information to send a message to, or communicate withj a defined interface using a particular protocol.
- the protocol structure undergoes a language neutral machine independent definition and is compiled into binary modules known as protocol implementation rnodules (PIMs) and transport interface modules (TIMs).
- PIMs protocol implementation rnodules
- TIMs transport interface modules
- PIMs and TIMs are loaded at runtime and executed by interpreters (virtual machines), PTMs are processed by the dynamic adaptive marshaller (DAM) and the TIMs are handled by the transport mediation server (TMS). Both of these modules are controlled by the message distribution server (MDS), The MDS is aslso responsible for any interface mapping that is required. It uses either the processed request or response message and a mapping definition. The actual mapping is performed by a mapper module under the direction and control of the MDS.
- MDS message distribution server
- TUBE uses different data formats internally depending on the situation.
- the Protocol Independent Data Streams (PIDS ) are the format used internally to pass data between the TUBE API, the server and the DAM components.
- the Protocol Oriented Data streams (PODS) on the other-hand consist of data that has been marshalled into a protocol-specific format (e.g. CORBA) by DAM. These are passed internally between DAM, the MDS, TMS and, if required middleware-specific APIs.
- TTJBE provides the ability to use either or both synchronous and asynchronous communication modes, and that the desired method can be changed at anytime without system impact.
- all that i$ required is to change the configuration. This can be done on a per module/interface basis, , even while the system is running. There is no need to shutdown and re-start the broker.
- the following scenario depicted in Figure 3 describes the process-flow of an out-bound message through TUBE through the following steps:
- the application call is passed to the TUBE API via the TUBE server.
- the TUBE server passes the call to the Message Distribution Server.
- the Message Distribution Server selects a protocol to try from the Distribution Priority Table.
- the Message Distribution Server passes the interface/module identifier and the preferred protocol to the Dynamic adaptive marshaller.
- the Dynamic adaptive marshaller reads the Module Definition Repository to determine the format and arguments for the call.
- the Dynamic adaptive marshaller uses the protocol definitions stored in the Protocol Definition Repository to prepare the call for the particular middleware or application service. 7.
- the Dynamic adaptive marshaller passes the marshalled buffer back to the
- the Message Distribution Server passes the marshalled message to the Transport Mediation Server and tells it which protocol to use for transmission.
- the Transport Mediation Server reads the End-Point Resolution Table to determine the host and port number required to communicate over this protocol
- the Transport Mediation Server attempts to communicate with the designated host using the appropriate communication parameters.
- TUBE will try each subsequent protocol (in priority order). The application will only receive notification of communication failure once all the listed protocols have been exhausted. If communication succeeds, TUBE sends a positive notification to the application. The way that this occurs depends on the application's relationship with TUBE. If the application has invoked TUBE via the API, then TUBE will return the status directly to the application. If, on the other-hand, TUBE has intercepted an out-bound call made by a proxy or stub, then the status will be given to that module for return to the application.
- the scenario shown in Figure 4 describes the process-flow of an in-bound message through TUBE with the fol lowing steps: 1. the external call is intercepted by a TUBE module.
- the interceptor uses the TUBE API to pass the message to the TUBE server, which passes the call to the Message Distribution Server.
- the TUBE server passes the message to the Message Distribution Server in the protocol that it was received.
- the Message Distribution Server looks-up the Distribution Priority Table to determine whether the message needs marshalling into another protocol.
- Steps 5, 6, 7 and 8 are only executed if the protocol needs to be converted by the Dynamic adaptive r ⁇ arsballer. If not then the message can be passed through to Step 9. 5.
- the Message Distribution Server passes the interface/module identifier and the preferred protocol to the Dynamic adaptive marshaUer.
- the Dynamic adaptive marshaller reads the Module Definition Repository to determine the format and arguments for the call
- the Dynamic adaptive marshaller uses the protocol definitions stored in the Protocol Definition Repository to prepare the call for tie particular middleware or application service.
- the Dynamic adaptive marshaller passes the marshalled buffer back to the Message Distribution Server.
- the Message Distribution Server passes the (possibly converted) message to the Transport Mediation Server and tells it which protocol to use for transmission.
- the Transport Mediation Server reads the End-Point Resolution Table to determine how to contact the end-point for this protocol. In this case, it determines that the end-point is local. 11. The Transport Mediation Server then passes the message to the "Target
- TUBE Ubiquitous Broker Environment
- Protocol descriptions are to be declared, and developed with a utility tool supplied with TUBE. This allows new protocol support to be added with no impact on existing systems. This effectively provides future-proofing of IT investments. As new protocols emerge, they can be utilised declaratively with very little (if any) development.
- Protocols can be changed (added or removed) without re-compilation of application Software
- TUBE is installed, and descriptions of the protocols supported are declared and stored in a protocol definition repository.
- Applications specify the service that they want by using the API of the service. These calls are intercepted by TUBE, which determines a service provider and marshals the call appropriately. The service providers and the protocols that can satisfy a call are specified for each interface. If the required service is not available through a preferred protocol, then alternative protocols are tried. For example, the default may be CORBA 1 and calls will target CORBA end-points (e.g. an IOR); however, an alternative may be MQ-Series, which will be tried if a CORBA service cannot be reached. (The onus will be on the systems integrator to specify those protocols that are interchangeable for each interface.)
- TUBE Unlike some proprietary EAI products, which attempt to control workflow and broadcast (publish) each message on a universal messaging bus, TUBE only communicates with designated end-points. TUBE is capable of broadcasting or publishing to a universal bus, if that is required. Since TUBE will provide fully synchronous or asynchronous methods, the desired communication type may be changed at anytime without system impact. For example, if synchronous behaviour is required from an (essentially) asynchronous middleware platform (e.g. MQ-Series), TUBE will handle the synchronisation through blocking and buffering. If it is then required to go back to purely asynchronous, the application software does not need to change, provided that the protocol is supported for the called interface. This will allow remote modules to be developed independently, and for each to use the middleware that best suits their purposes. There will be no need for independent development groups to be familiar with each other's protocols.
- MQ-Series asynchronous middleware platform
- the messaging life-cycle employed depends upon the type of communication mode we are engaged in. If we are engaged in a synchronous mode operation, then we will be in a blocked or waiting state. In the asynchronous mode, we are also waiting but can continue to perform other tasks whilst we wait- We need to be able to handle both modes independently of one another, and also be able to combine them.
- a client may make a synchronous request on a server using the same protocol as always; the client is unaware mat the server implementation has been changed to use asynchronous queuing. We need to hold the synchronous session with the client, which is awaiting a response and is thus blocked. At the same time we must monitor a queue on the server-side and we must wait for a response that could come at anytime.
- the message data need to be buffered and copied from the source to the target. Depending on message size, this could be a fast or slow task. If we are brokering a synchronous request over an asynchronous invocation to the server, we will keep the client blocked until we have completely marshalled and sent the request message. The client will continue to remain blocked until we return the response to it.
- the component in the TUBE architecture that is responsible for managing the messaging life-cycle and ensuring that clients either; receive the response in synchronous mode or are notified of responses in the asynchronous mode is the Message Distribution Server (MDS).
- MDS is the first and last module to handle a message and its subsequent response (assuming a two-way exchange).
- the MDS is also responsible for determining the target end-point from the DPT and EPRT 5 and providing that to the other modules via an API.
- the TUBE server creates an instance of MDS to handle the message. The same thing occurs when a protocol interceptor intercepts a message; it uses an instance of MDS to manage the session.
- MDS The basic operation of MDS may be described as follows:
- Protocol definition language is a language (symbolism) for defining protocols,
- protocol structure is a language (symbolism) for defining protocols.
- the language defines ' the structure of both request and response messages. When we say it defines the structure, we are referring to the things that we need defined in order to exchange messages with a server on behalf of a client.
- TUBE the purpose of TUBE is as a broker between disparate systems. As a broker, it sometimes needs to convert from one client protocol to another to communicate with a server.
- Figure 6 and Figure 7 show the basic structure of a request and successful response message for an "add" operation of the numbers "1000" and "15" on the mathServer interface.
- the server may also return an exception or error condition. This is shown in Figure 8, where we assume that the div (divide) operation was called with "1000" and "0". This is an illegal operation and hence the server returns an exception.
- the exception we have defined is a structure, which contains one member, a string describing the error. It could however be considerably more complex.
- the example exception shown is protocol-neutral, that is, it does not represent any specific protocol mapping. It is merely illustrative.
- our payload will be a mathjreq structure (see Figure 6), If we are dealing with a response, we will have a math_resp structure (see Figure 7) or some failure indication (see Figure 8).
- the payload for a message is either the (serialized) input parameters to the operation, or the (serialized) response from the operation, whether successful or not.
- We know from the above definition how to marshal these structures; we know at least what native types constitute them. What we do not know however, is how to marshal them over a particular protocol. Do we want the integer (int) values converted to text so we can send them in XML?
- variable is applicable to the entire protocol, its value is determined on an interface-by-interface basis. In other words, the same variable may have a different value in each EPRT entry.
- An example of a user-defined variable in an EPRT entry is a CORBA object-key . This identifies the object to instantiate (or invoke) on the target end. We discuss both types of variables and their PDL definition later.
- a code-block also referred to as a state-block (see Table 2) is a structure consisting of the following elements: • Op-code
- VM Virtual Machine
- DAM Dynamic adaptive marshaller
- the op-code is a symbolic value used to determine the operation to be camed-out.
- the op-code READ_INT instructs the marshaller to read a signed 32-bit numeric value from the input source.
- the op-code WRITE-INT instructs the marshaller to write a signed 32-b ⁇ t value to the output target.
- the PDL is a series of extensions to OMG EDL .
- the rationale behind extending an existing language is that most software engineers have some exposure to, or knowledge of it. This is mostly the case with DDL. It defines CORBA interfaces and is the description language for Java RMI .
- OMG IDL itself is an extension of the original DCE RPC DDL .
- MIDL Microsoft Interface Definition Language
- PDL scripts are not compatible with IDL and therefore standard IDL compilers cannot p ⁇ ocess them, as they would not recognise the extensions, which would cause parsing errors.
- the PDL compiler reads the PDL definition (also referred to as a script or PD) and generates two types of output, a Protocol Interface Module (PIM) and a Transport Interface Module (TIM).
- PIM Protocol Interface Module
- TIM Transport Interface Module
- the PIM is comprised of code-blocks, derived from constructs within the PDL script. For example, for each "struct" keyword encountered in the PD 3 the compiler generates whatwe refer to as a code-block.
- This code-block is a series of instruction blocks.
- An instruction block consists of op-codes and state definitions, which define operations, variables (internal and user-defined) and initial values. Each op-code and state is (generally) associated with a source or target variable .
- the Figure 9 diagram illustrates the structure of a PIM.
- the PIM header contains information and structures that assist in the loading and processing of the rest of the file.
- the header is comprised of the fields shown in Figure
- the File-Identifier is a hexadecimal value, which identifies this file as a valid TUBE PIM. If this value is not found or does not match, then the rest of the file is ignored and the load aborted.
- the Marshalling class-name specifies the name of the class that implements the TUBE.commsBuffer interface. This is the class that will be used for all reading and writing operations whilst processing this PIM.
- the actual disk layout of this item is an integer specifying the length of the name string, followed by the string * This string contains the actual name. A length of zero (0) signifies an empty class- name and there is no string following. In this case, the DAM will use a default (internal TUBE) implementation for encoding and decoding of native values.
- the Constant-Segment stores all constant values.
- the entries specify a type, the length of the value and the actual value. We always encode the value in a byte array despite the data type.
- the compiler encodes offsets into this segment into instructions that require access to these values.
- the Variable-Definition Segment contains information about all the variables defined in the PD. It stores the name, data type and a flag to define the variable as an internal or user-defined variable. If the variable has an initial value specified by an "init" clause (see Table 6), then an index into the CS is also stored.
- the Marshalling map, Pre-Marshal map and Post-Marshal maps all have the same basic structure (illustrated in Figure 1 1). These blocks contain the op-codes and other information necessary to the execution of the operation, The Declarations section of the file contains pointers into these maps for instruction-blocks generated from "declare” (see Figure 13) statements. These blocks contain all the code required to handle the declared type. We now discuss variable handling and explain these relationships.
- the compiler When the compiler encounters a simple (native) type in a struct definition s if it specifies an initial value, the compiler generates an entry in the CS and stores an offset to this value in a state-parameter entry (see Table 1). The compiler adds the entry to the state-block it is currently generating. If the variable does not have an initial value, the compiler generates a VDS definition as an empty slot for the value. This slot is a placeholder for the value when it is read- ⁇ n. It is also the source for the value when writing. Refer to Table 5 for a description of the runtime usage of this entry.
- the compiler hi the case of compound (declared) types, the compiler generates references to two separate code-blocks, one in the reading PIM and one in the writing PIM. These code- blocks have a type of USER-DEFINED and have an entry created in the Declarations section using the name of the structure with either a "_READ” or "_WRITE” appended. This modified name is stored in the CS and the CS index is stored in the definition entry.
- the PDL compiler patches offsets to the actual code-blocks once it has completely processed the PDL script.
- the instructions to handle the declared type are generated into the Marshalling map.
- the first instruction-block for handling this type contains a pointer to the modified name in the CS. This is how the compiler finds the value to patch into the declaration entry. This is also, how the DAM identifies and loads individual code-blocks at runtime.
- the compiler writes the Variable-Definition Segment to disk in the format shown in Table 4). This is what the DAM reads when loading the PIM.
- VWT Variable Value Table
- the Variable Value Table stores the values for variables as we read them from the input source. If we are marshalling this value, then we use this entry as the source and write the current value to the output target using either, user-supplied methods or internal (default) handlers.
- Figure 12 illustrates a read-octet operation for a target variable, which has ao offset of two (2) in the Variable-Definition Segment. If we follow this offset, the VDS entry stores an offset of five (5) into the CS. This is where we find the name of the variable "objectKey”. Because this is a USER-DEFINED variable (indicated by the declaration "$objectKey$" in the PDL script in the Figure 20 CORBA example), initially we obtain this value from the EPRT entry for this interface. This entry then remains constant for the life of the PIM, unless explicitly changed by invoking set method or executing a code- block. When we have read the value, it will be stored in offset two (2) of the Variable Value Table (WT). We create this table only at runtime to manage the storage of actual values, which are not constants. After the read, the entry at offset two (2) contains the value "$OBJECT:myObject". When we marshal this in a request, its value comes from this VVT entry.
- WT Vari
- table 6 shows the new keywords and constructs introduced to extend OMG IDL. A brief description of each is also given. We expand these descriptions as we work through our CORBA example.
- Table 7 describes the internal TUBE variables that may appear in a PDL definition.
- the " ⁇ " character identifies this as the opening of the PD script.
- sequences of native items such as octets
- typedef do not have their length encoded and neither do. we expect to read the length during decoding. If the length is required when reading or writing, we must define this using a "declare” clause (see byteSequence in above) as explained next.
- the "bufferFormat” definition tells DAM, which code-blocks to use when marshalling the payload.
- the payload can be made-up of either native types or constructed complex types.
- the complex types may contain native types and other complex types.
- the DAM assumes that a message may only be comprised of a combination of those items and native types. If we do not provide these instructions in the PDL, consequently there will be no handlers (code-blocks) generated, as there will be no "declare” clauses to define them. In this case, DAM will use internal marshalling rules, which may or may not be suitable for the particular protocol. For example, an object definition is very protocol specific.
- DAM will simply encode and decode an item defined in MDR as an object, as an un-interpreted array of bytes, Tf we look at the PDL definition for an "objectDef ' in our CORBA example, we can see that if we omitted the "declare” and "bufferFormat” statements, the default behaviour would not be suitable for our protocol 3 . If the PDL compiler encounters multiple bufferFormat statements, it throws an exception and terminates processing.
- nString demonstrates the use of op-codes to add and subtract constant values to and from those currently being processed.
- the "+ 1 " tells the compiler that we always have one extra byte than the actual string length.
- the compiler generates the code-block as per Table 9.
- the "objectDef" declaration illustrates the usage of declared types within declared types.
- Table 10 illustrates the resultant code-block.
- the interpreter executes the instructions above whenever an "object" definition is encountered in the payload and the value being marshalled is defined as an "object" type in the MDR.
- the "bufferFormat” clause is the next construct that we encounter. As we have already explained the bufferFormat clause above, we will not repeat it here.
- the compiler writes the op-codes generated here (see Table 11) into the Pre- Marshal map. These are loaded and executed just before marshalling the payload.
- the interpreter encounters the special op-code START P AYLO AD, it will search for a pre-marshal map. If none is found, then the DAM will traverse the payload according to the MDR definition for the interface being processed. Otherwise, if there is a map present we invoke a module to handle the tests.
- the module that performs the "control" instructions returns one of three values to the main interpreter. It returns false if we are marshalling the payload by following the MDR representation, or it returns true if we must handle the. payload differently.
- a string value indicates that this module has pushed, the name of a USER_DEFINED code-block (that was defined with the declare clause) onto the stack.
- the main interpreter loop will load and execute this code-block. Aiter marshalling the payload, the interpreter will search for a Post-Marshal map.
- Table 11 shows op-codes for processing "control" clause. Unlike the control clause for pre-marshal maps, there is no keyword to indicate the start of a post-marshalling map 4 .
- the compiler will always generate code to write-out the body (payload) length after marshalling the payload. Therefore wherever the variable %buffer_length% is encountered this tells the compiler that this is the payload length. We initially marshal the length as zero (0) and then we re-write it with the correct value after marshalling the body,
- Table 12 shows post marshal maop for CORDA message.
- TCP Transport for the protocol
- HOP transport for the protocol
- the DAM must find these values in the EPRT entry for this interface.
- the compiler generates code into the TIM for loading and using these values.
- the TEM will use these values to create a sockets-based connection to the defined host on the designated port.
- TMS Transport Mediation Server
- DAM Dynamic adaptive marshaller
- PCM Protocol Control Module
- MDS Message Distribution Server
- MDS Message Distribution Server
- MDS When a request is intercepted by a protocol listener, the listener creates an instance of MDS and passes it the message. The MDS will then attempt to create an instance of a Protocol Control Module (discussed below) using the Java Reflection API. If the creation is successful, MDS hands the request to the PCM and takes no further part in the process until the PCM returns the response. Whereas, if the creation fails; MDS passes the request to DAM and waits for DAM to return a protocol-neutral representation of the request (a TLV buffer). The MDS will now look-up the DPT to ascertain the target protocol. The MDS passes the TLV buffer back to DAM for marshalling into the target protocol.
- a Protocol Control Module discussed below
- MDS After DAM returns the marshalled request, MDS passes the message to TMS for transmission to the target end-point. The MDS now waits for TMS to return the response. When MDS receives the response, it carries out the reverse of the above procedure; it uses DAM to convert the response from the target protocol into the source protocol. The MDS returns the marshalled response to the listener,
- PCM Protocol Control Module
- control is a switch statement that controls what sort of message payload we are dealing with.
- the decision as to what to do with this payload after marshalling and return belongs to the PCM.
- the PCM implements the same switch logic as that specified in the control clause with the addition of logic to handle the resultant payload.
- the PCM must decide what to do with this response based on the value of the re ⁇ ly_status field of the message.
- reply_statu$ is a three (3), which, signifies that the response payload is a CORBA object-reference (defined as objectDef).
- objectDef CORBA object-reference
- the PDL still provides support for the marshalling of the various payload types, without however attempting to interpret their meaning. That is, the decision whether or not to re-Submit the request to the new object is left to the PCM.
- the DAM APT provides methods for retrieval and population of various fields within the message by name. Therefore, the PCM makes a request of DAM to re-marshall the request using the new object-reference received in the response. We must emphasise that only one PCM is required for a given protocol, and this can manage any message for any defined interface handled by this protocol.
- the PCM uses a CORBA LOCATION-FORWARD response message, the PCM performs the following steps (illustrated in Figure 19):
- MDS direct invocation of DAM and the PCM invocation.
- MDS does not attempt to interpret any of the messages.
- the MDS simply routes the messages to the other components.
- DAM Once we invoke DAM either, directly from MDS or via a PCM it must dynamically adapt to the source protocol of the in-bound message, and to the target protocol of the out- bound message.
- the MDS or PCM will tell DAM what protocol the in-coming message is encoded ⁇ n.
- the DAM will then search the Protocol Definition Repository (PDR) for a request PlM that implements the un-tnarshalling rules for the particular protocol
- PDR Protocol Definition Repository
- the DAM will throw an exception if it does not find the required PIM.
- the source PIM Once the source PIM is located, it is loaded and DAM checks the header for external class declarations. Tf we find any, DAM creates an instance of the classes using the Java Reflection API We recall from our discussion in that these classes must implement TUBE-defined interfaces.
- the DAM uses the source PIM to un-marshal the in-bound message into an internal protocol-neutral format known as TLV (Type, Length and Value).
- TLV Type, Length and Value
- the next step in the process is to determine the target protocol. We achieve this by using MDS APIs to lookup the Distribution Priority Table (DPT) and determine, which protocol has the highest priority.
- DPT Distribution Priority Table
- the DAM creates a request marshalling PlM for the target protocol.
- the DAM then uses values from the TLV to populate values within the target PIM.
- TUBE's major objective to provide brokerage between different types of middleware is implemented by storing interaction rules in PIMs and TlMs.
- the major categories of information required by TUBE to mediate between disparate middleware are; • On-the-wire protocol and payload format.
- the communication sessions are further decomposed into a number of operations. These are; session-establishment (hand-shaking), session- management and session-termination. Each in-turn may require further decomposition, depending on the middleware in question. For example, session- management may involve simply sending data, or sending data and waiting for a response. The exact nature of the interaction depends on several factors: the target middleware, the session type (one-way or two-way) and the invoking application (interface) requirements.
- the Module Definition Repository holds the definition of the interface. This is necessary because there is likely to be an impedance mismatch between the two middleware interfaces, such as for example, with CORBA, which is object-based, as opposed to MQ that is message-based.
- the interface definition may need to be altered to reflect this. If MathServer is MQ-based, whereas its clients are CORBA-based, method calls in CORBA must be properly mapped to MQ messages to ensure that the correct operation is performed by the receiving end.
- the CORBA call obj->add(l O 5 9) would be encoded by TUBE into an MQ message as method-name serialised-parameters, for example: add 10 9// spaces between values are for readability only This is the default behaviour based on the IDL definition. The onus is on the systems integrator (the client development team in this case) to ensure that the definitions match. Conversely, if the call was being marshalled from an MQ message to a CORBA call and the IDL were in its original state, TUBE would not be able to determine which method to call.
- mapping definition such as the following is defined:
- the CORBA TIM uses the Hosr and Port values to establish communication with the remote ORB, and the • CORBA PlM uses the Ob;jectKey value to ensure that the correct object Is invoked at the end-point
- the IDL is submitted to the TUBE IDL compiler, which populates the Module Definition Repository with the interface information.
- This information is protocol-independent That is, the same MDR definition is used to marshal CORBA, MQ or any other supported middleware protocol.
- the protocol marshalling rules are already contained in the relevant PIMs and the transport (communication-level) interactions are defined in TIMs.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
Description
Claims
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
NZ574307A NZ574307A (en) | 2006-06-21 | 2007-06-21 | Middleware broker |
AU2007262660A AU2007262660B2 (en) | 2006-06-21 | 2007-06-21 | Middleware broker |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU2006903351A AU2006903351A0 (en) | 2006-06-21 | Middleware broker | |
AU2006903351 | 2006-06-21 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2007147207A1 true WO2007147207A1 (en) | 2007-12-27 |
Family
ID=38832997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/AU2007/000859 WO2007147207A1 (en) | 2006-06-21 | 2007-06-21 | Middleware broker |
Country Status (2)
Country | Link |
---|---|
AU (1) | AU2007262660B2 (en) |
WO (1) | WO2007147207A1 (en) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009143105A3 (en) * | 2008-05-20 | 2010-01-21 | Raytheon Company | Method and apparatus for providing a synchronous interface for an asynchronous service |
US8112487B2 (en) | 2008-05-20 | 2012-02-07 | Raytheon Company | System and method for message filtering |
US8200751B2 (en) | 2008-05-20 | 2012-06-12 | Raytheon Company | System and method for maintaining stateful information |
US8655954B2 (en) | 2008-05-20 | 2014-02-18 | Raytheon Company | System and method for collaborative messaging and data distribution |
US10095486B2 (en) | 2010-02-25 | 2018-10-09 | Sita Information Networking Computing Ireland Limited | Software application development tool |
CN111026388A (en) * | 2019-10-15 | 2020-04-17 | 福建联迪商用设备有限公司 | Method for adapting order receiving application and payment middleware |
CN111510504A (en) * | 2020-04-30 | 2020-08-07 | 重庆车辆检测研究院有限公司 | Signal lamp system networking method, middleware and system |
CN117193225A (en) * | 2023-11-07 | 2023-12-08 | 北京珂阳科技有限公司 | Wafer manufacturing process flow control method and system |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0690599A2 (en) * | 1994-06-30 | 1996-01-03 | AT&T Corp. | Application programming interface for distributed processing in networks |
WO1997019411A1 (en) * | 1995-11-17 | 1997-05-29 | Mci Communications Corporation | Registry communications middleware |
US5826017A (en) * | 1992-02-10 | 1998-10-20 | Lucent Technologies | Apparatus and method for communicating data between elements of a distributed system using a general protocol |
WO1999003036A1 (en) * | 1997-07-11 | 1999-01-21 | Telefonaktiebolaget Lm Ericsson (Publ) | Remote procedure call translation |
WO2000038389A2 (en) * | 1998-12-21 | 2000-06-29 | Dmr Consulting Group Inc. | Method and apparatus for protocol translation |
US6085250A (en) * | 1997-03-20 | 2000-07-04 | Efficient Networks, Inc. | Method and system for using layered networking application program interfaces (APIs) using a native asynchronous transfer mode (ATM) API |
US20010052031A1 (en) * | 2000-01-14 | 2001-12-13 | Information Design Inc. | Uniform application programming interface for messaging middleware |
US6466974B1 (en) * | 1998-12-04 | 2002-10-15 | Sun Microsystems, Inc. | Environment for creating and managing network management software objects |
WO2003034183A2 (en) * | 2001-10-18 | 2003-04-24 | Bea Systems, Inc. | System and method using a connector architecture for application integration |
US6625804B1 (en) * | 2000-07-06 | 2003-09-23 | Microsoft Corporation | Unified event programming model |
US6772413B2 (en) * | 1999-12-21 | 2004-08-03 | Datapower Technology, Inc. | Method and apparatus of data exchange using runtime code generator and translator |
US6971090B1 (en) * | 2001-06-08 | 2005-11-29 | Emc Corporation | Common Information Model (CIM) translation to and from Windows Management Interface (WMI) in client server environment |
US20060140199A1 (en) * | 2004-12-28 | 2006-06-29 | Matsushita Electric Industrial Co., Ltd. | SIP/UPnP bridging middleware architecture for a service gateway framework |
-
2007
- 2007-06-21 WO PCT/AU2007/000859 patent/WO2007147207A1/en active Application Filing
- 2007-06-21 AU AU2007262660A patent/AU2007262660B2/en not_active Ceased
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5826017A (en) * | 1992-02-10 | 1998-10-20 | Lucent Technologies | Apparatus and method for communicating data between elements of a distributed system using a general protocol |
EP0690599A2 (en) * | 1994-06-30 | 1996-01-03 | AT&T Corp. | Application programming interface for distributed processing in networks |
WO1997019411A1 (en) * | 1995-11-17 | 1997-05-29 | Mci Communications Corporation | Registry communications middleware |
US6085250A (en) * | 1997-03-20 | 2000-07-04 | Efficient Networks, Inc. | Method and system for using layered networking application program interfaces (APIs) using a native asynchronous transfer mode (ATM) API |
WO1999003036A1 (en) * | 1997-07-11 | 1999-01-21 | Telefonaktiebolaget Lm Ericsson (Publ) | Remote procedure call translation |
US6466974B1 (en) * | 1998-12-04 | 2002-10-15 | Sun Microsystems, Inc. | Environment for creating and managing network management software objects |
WO2000038389A2 (en) * | 1998-12-21 | 2000-06-29 | Dmr Consulting Group Inc. | Method and apparatus for protocol translation |
US6772413B2 (en) * | 1999-12-21 | 2004-08-03 | Datapower Technology, Inc. | Method and apparatus of data exchange using runtime code generator and translator |
US20010052031A1 (en) * | 2000-01-14 | 2001-12-13 | Information Design Inc. | Uniform application programming interface for messaging middleware |
US6625804B1 (en) * | 2000-07-06 | 2003-09-23 | Microsoft Corporation | Unified event programming model |
US6971090B1 (en) * | 2001-06-08 | 2005-11-29 | Emc Corporation | Common Information Model (CIM) translation to and from Windows Management Interface (WMI) in client server environment |
WO2003034183A2 (en) * | 2001-10-18 | 2003-04-24 | Bea Systems, Inc. | System and method using a connector architecture for application integration |
US20060140199A1 (en) * | 2004-12-28 | 2006-06-29 | Matsushita Electric Industrial Co., Ltd. | SIP/UPnP bridging middleware architecture for a service gateway framework |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009143105A3 (en) * | 2008-05-20 | 2010-01-21 | Raytheon Company | Method and apparatus for providing a synchronous interface for an asynchronous service |
US7970814B2 (en) | 2008-05-20 | 2011-06-28 | Raytheon Company | Method and apparatus for providing a synchronous interface for an asynchronous service |
US8112487B2 (en) | 2008-05-20 | 2012-02-07 | Raytheon Company | System and method for message filtering |
US8200751B2 (en) | 2008-05-20 | 2012-06-12 | Raytheon Company | System and method for maintaining stateful information |
US8655954B2 (en) | 2008-05-20 | 2014-02-18 | Raytheon Company | System and method for collaborative messaging and data distribution |
US10095486B2 (en) | 2010-02-25 | 2018-10-09 | Sita Information Networking Computing Ireland Limited | Software application development tool |
CN111026388A (en) * | 2019-10-15 | 2020-04-17 | 福建联迪商用设备有限公司 | Method for adapting order receiving application and payment middleware |
CN111026388B (en) * | 2019-10-15 | 2023-08-11 | 福建联迪商用设备有限公司 | Method for adapting to order receiving application and payment middleware |
CN111510504A (en) * | 2020-04-30 | 2020-08-07 | 重庆车辆检测研究院有限公司 | Signal lamp system networking method, middleware and system |
CN117193225A (en) * | 2023-11-07 | 2023-12-08 | 北京珂阳科技有限公司 | Wafer manufacturing process flow control method and system |
CN117193225B (en) * | 2023-11-07 | 2024-01-02 | 北京珂阳科技有限公司 | Wafer manufacturing process flow control method and system |
Also Published As
Publication number | Publication date |
---|---|
AU2007262660B2 (en) | 2013-01-31 |
AU2007262660A1 (en) | 2007-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20100161821A1 (en) | Midleware broker | |
US6633923B1 (en) | Method and system for dynamic configuration of interceptors in a client-server environment | |
AU2007262660B2 (en) | Middleware broker | |
US8010967B2 (en) | Method and system for dynamic configuration of interceptors in a client-server environment | |
US6446137B1 (en) | Remote procedure call system and method for RPC mechanism independent client and server interfaces interoperable with any of a plurality of remote procedure call backends | |
EP0766172B1 (en) | A method and apparatus for allowing generic stubs to marshal and unmarshal data in object reference specific data formats | |
US6951021B1 (en) | System and method for server-side communication support in a distributed computing environment | |
US6947965B2 (en) | System and method for communications in a distributed computing environment | |
US7331049B1 (en) | System and methodology providing typed event and notification services | |
EP0767563B1 (en) | Method and apparatus for multiprotocol operation in a client/server system | |
US20080215613A1 (en) | Method and System For Transferring Objects Between Programming Platforms Computer Program Product Thereof | |
JP2000515280A (en) | Object-oriented information transmission method and apparatus | |
US20070106998A1 (en) | Mobility system and method for messaging and inter-process communication | |
US7647415B1 (en) | Dynamic web services stack | |
US7620958B2 (en) | Transaction interoperability using host-initiated processing | |
US8250587B2 (en) | Non-persistent and persistent information setting method and system for inter-process communication | |
Hayton et al. | Flexinet open orb framework | |
Coulson et al. | Implementing the CORBA GIOP in a high-performance object request broker environment | |
NZ574307A (en) | Middleware broker | |
Chiu et al. | The Proteus multiprotocol message library | |
Li | DIMMA nucleus design | |
Govindaraju et al. | Design and implementation issues for distributed CCA framework interoperability | |
Eisenhauer | The connection manager library | |
Eisenhauer et al. | The dataexchange library | |
Wu et al. | Engineering CORBA-based systems for high performance |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 07719098 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2007262660 Country of ref document: AU |
|
WWE | Wipo information: entry into national phase |
Ref document number: 574307 Country of ref document: NZ |
|
ENP | Entry into the national phase |
Ref document number: 2007262660 Country of ref document: AU Date of ref document: 20070621 Kind code of ref document: A |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 07719098 Country of ref document: EP Kind code of ref document: A1 |