Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
CORBA, DCOM and Java V. “Juggy” Jagannathan CareFlow|Net, Inc. CORBA Distributed Object Infrastructure References Robert Orfali, Dan Harkey, “Client/Server Programming with Java and CORBA, Second Edition.” John Wiley and Sons, 1998. Andreas Vogel and Keith Duddy, “Java Programming with CORBA, Second Edition, Advanced Techniques for Building Distributed Applications,” John Wiles and Sons, 1998. John Siegal (written and edited by), “CORBA Fundamentals and Programming,” John Wiley and Sons, 1996. Outline Overview CORBA 1.1, 2.0, 3.0 IDL and Interface Repository CORBA services Background* Not-for-profit company based in United States, with representation in Italy, United Kingdom, Germany, Japan, Australia & India. Founded April 1989. Small staff (35 full time); no internal development. Almost all technical work done by engineers in member companies Almost 800 members (4/98) * Viewfoil courtesy OMG: http://www.omg.org/library/diego.ppt Worldwide Scope * Andersen Data Access ICL Nortel APM Eurocontrol Informix Novell Alta EDS Intel OHRA Insurances AITECH Ericsson IBM Oracle Thomson CSF AT&T FinSiel IONA Tech. Open Group Telecom Italia BaaN Fujitsu Microsoft POSC Telefonica Bull Genesis MITRE Sodalia Telia AB Netscape Siemens Nixdorf TRW Unisys Software AG British Telecom HP Bankers Trust Harlequin Sun Microsystems Sybase Valtech……. * Viewfoil courtesy OMG: http://www.omg.org/library/diego.ppt Adoption Process * RFI (Request for Information) to establish range of commercially available software. RFP (Request for Proposals) to gather explicit descriptions of available software; Architecture Board approves. Letters of Intent to establish corporate direction. Task Force evaluation & recommendation; simultaneous evaluation by Business Committee. Architecture Board consideration for consistency. Board decision based on recommendations from the appropriate Technology Committee & Business Committee. Fast Track Process. * Viewfoil courtesy OMG: http://www.omg.org/library/diego.ppt Integration Technology - CORBA The Common Object Request Broker Architecture is the standard adopted by OMG as a framework to provide common ORB services and interfaces to support portable clients and services. The Object Request Broker (ORB) provides the mechanisms by which clients transparently make requests and receive responses. CORBA (continued) Advantages offered by CORBA: architecture independence language independence location independence The standard specifies the Interface Definition Language (IDL) - language used to describe the interfaces that client objects call and object implementations provide. De-facto Standards and products available* - Manufacturing: - Electronic Commerce: - Healthcare: -Telecommunications: - Finance -Transportation - ….. - Architecture guide and roadmap - Working on Internet facilities. CORBAdomains CORBAfacilities CORBA applications CORBA 2 (IIOP) - Naming - Security (...ICL) - Transactions (..Bull) - Query Service - Persistence - Lifecycle CORBAservices * Viewfoil courtesy OMG: http://www.omg.org/library/diego.ppt - ORBIX - IONA - Obj Broker BEA - VisiBroker Borland - Omni Orb Olivetti - Component Broker IBM The Evolution of CORBA* CORBA 1.1 (1992) Basic ORB, IR, BOA, C Bindings, Naming, Events, Lifecycle etc. CORBA 2.0 (1995) IIOP, Federated IR, C++ Bindings, Transactions, Concurrency, Externalization, Relationships, Query, Licensing, Trader, Security, Collections, Time etc. CORBA 3.0 (1999) Messaging (MOM), Server Portability (POA), Business Objects (JavaBeans), Java Bindings, Objects-by-value, CORBA/DCOM, IIOP Firewall, Workflow, Domain-level Frameworks, Mobile Agents etc. * Adapted from Orafali and Harkey’s Book ORB services Multiple language bindings - C, C++, Java, Smalltalk, Ada, Cobol Interface Repository stores the interface specifications of all services Transparency of object location ORB services - Contd Object-oriented - provides for encapsulation, polymorphism and inheritance Can provide security for content and contextsensitive transactions Common Object Service Specification 1(COSS1) Life cycle service - for instantiating, copying, moving and deleting objects Persistence service - interface for storing objects relational and OODBMS backends - Deprecated. Naming service - to locate using OSF DCE, Sun NIS or X.500 naming conventions. Can work with Internet standards such as LDAP. Event Service - dynamically register interest in events using a global object called event channel COSS2 Concurrecny control service - to provide for locking Transaction service - to provide for two-phase commit coordination Relationship service - to connect and group multiple objects Externalization service - to export and interchange data COSS3 Security Time management CORBA Architecture Servers Server Clients C++ Java Ada C other C++ Java Ada Client Requests IDL-based Service IDL-based ORB C other COSS4 Query service - it is a superset of SQL based on the Object Database Management Group (ODMG) Licensing service - to support metering and support for payment for use of components Properties service - to associate dynamic properties with components COSS5 Trader Collections Change management CORBA 2.0 Adds multivendor ORB interoperability to CORBA 1.1 specifications adopted in 1991 An ORB mediates requests for services from client applications and service providers 2.0 Object Implementations Client Interface Repository Dyamic Client IDL InvocStubs ation ORB Interface Static Dynamic Skeletons Skeletons Object Adapter Object Request Broker Implementation Repository Client IDL Stubs Provides local proxies for remote services Provides for marshaling of parameters into standard formats Dynamic Invocation Interface Late binding of method calls Run time discovery of service IDL interface Interface Repository Runtime database of interfaces of all registered objects Supports the query of, registration of, and update of interfaces of objects mediated by the ORB Repository IDs - uniquely and globally identify interface repository across multivendor ORBs ORB Interface Provides for API that provide a number of utilities: Object-to-string : converts object reference to a string String-to-object : converts a string reference to object get-interface : to find the location of interface repository for a given object get-implementation: to find the reference to implementation repository of an object Server IDL Stubs Also called skeletons provide static interfaces to each service provided both client side and server side stubs are generated using IDL compilers Dynamic Skeleton Interface (DSI) to implement dynamic services or dynamically changing services run-time binding of new services using scripting languages and interpreters to redirect messages to objects for which a compiled idl-interface is not known Object Adapter responsible for managing a collection of server objects instantiates server objects when needed and provides them with object IDs called object references registers the classes and instances in the Implementation Repository All CORBA implementations must support a Basic Object Adapter Implementation Repository Keeps track of classes and run-time instances of server objects supported by the ORB Allows for mechanisms to support audit trails, trace information and security related infrastructure Using the Static interface Definition of object services using IDL Precompiler generates server and client stubs Implementation code added to the server stubs Compilation: client stubs, server stubs, code that implements server classes and code to describe the classes to Interface Repository Register with Interface Repository Instantiate server objects Register run time instances with Implementation Repository Using the Dynamic interface Lookup service name and get its interface specification from Interface Repository Put together a request made up of object reference, method name and argument list Invoke the method call on the desired object Basic Object Adapter Must provide for the following functionality: An implementation repository Manage instantiation and destruction of objects Manage object references and invoking methods Mechanism to authenticate clients BOA Object Activation Alternatives Shared Server: First time call to any object causes the server process to startup. Future requests are handled by the server directly. BOA notified with impl_is_ready and deactivate_impl. Unshared Server: A new server process is started to support each object requests. Server-per-method: A new server process is started for each request made (method call). Persistent server: Servers are persistent and started independently. CORBA 2.0 Interoperability Standard CORBA 1.1 allowed for portability CORBA 2.0 specifies the Internet Inter-ORB Protocol (IIOP) Public domain IIOPs are now available (from Sun for instance) Every CORBA-compliant ORB must implement IIOP or provide a half bridge to it General Inter-ORB Protocol (GIOP) Common Data Representations (CDR) used in communications CDR maps data types defined using IDL into a flat representation for use in network layer CDR takes care of inter-platform issues such as byte ordering Specifies Interoperable Object References for use in multi-vendor ORB environments Internet Inter-ORB Protocol (IIOP) Standardizes the way GIOP messages can be exchanged using TCP/IP Mandatory for CORBA 2.0 compliance Environment-Specific Inter-ORB Protocols (ESIOPs) Example is DCE/ESIOP GIOP CDR-based messages defined using OMG IDL are transported using DCE RPC using DCE native Network Data Representation (NDR) ORB-to-ORB Bridging Server Client DSI ORB From Vendor A DII ORB From Vendor B IDL and Interface Repository Interface Definition Language (IDL): fundamental mechanism supported by all ORBs to separate interfaces and implementations Interface Repository is a queriable and updateable runtime information store of interface specification generated from IDL IDL users Client programmers who want to access the services provided by an object - they need the IDL to determine how to call the services Server programmers who want to extend the service provided they need the IDL to subclass and provide additional capabilities IDL Structure Module: groups a collection of class definitions (interfaces) Interface: defines a class; attributes and exceptions Operation: defines a method; the arguments; argument types; in, out or in-out; exceptions; optional context description Data types: basic (short , float, char...) and constructed IDL Example : type codes typedef string typedef string typedef string typedef char typedef char typedef long Date_T; PersonID_T; Address_T; MaritalStatus_T; Sex_T; PolicyID_T; IDL Example: Interfaces interface FamilyMember; interface Employer; interface InsurancePolicy; interface InsuranceCompany; IDL Example: Interface definition interface Demographics: PRObject { readonly attribute PersonID_T personID; attribute attribute string string lastName; firstName; attribute attribute long Date_T SSN; DOB; attribute attribute string MaritalStatus_T birthPlace; maritalStatus; readonly attribute sequence<InsurancePolicy> insurancePolicies; readonly attribute sequence<FamilyMember> familyMembers; readonly attribute sequence<Employer> employers; }; IDL Example: Interface definition interface InsurancePolicy: PRObject { readonly attribute PolicyID_T policyID; attribute attribute string string insuranceType; carrierProgram; attribute attribute long long groupNo; payorNo; attribute attribute long string controlNo; relationshipToPolicyHolder; readonly attribute Demographics policyHolder; readonly attribute InsuranceCompany insuranceCompany; }; Type Codes represent IDL-defined data types provide for self-describing data Used by: DII, IIOP, Interface Repositories and any data type Interface Repository - where used Run-time type checking on method invocation parameters Connecting multi-vendor ORBs Support dynamic discovery of object interfaces and support for DII Provide for self-describing objects CORBA 3.0 Trader Service Java to IDL mapping POA Real-time CORBA Workflow Asynchronous Messaging Business Objects Facility Domain-specific frameworks CORBA Component Model Manufacturing, Transportation, Finance, Healthcare, Telecom, Electronic Commerce and more! CORBA Scripting Language IIOP over firewall See: http://www.omg.org/news/pr98/9_9.htm for a press release on CORBA 3.0 by major vendors for an early 1999 commercial availability. Trader Service Naming Service is like white pages Trader is like yellow pages Trader ORB Client “Importer” Import Service Server “Exporter” Export Service ORB ORB Invoke Service Portable Object Adapter (POA) To quote Orafali & Harkey: “The POA is simply the BOA done right.” Similar to BOA, POA supports management of: separate process for each method separate process for each object shared process for multiple objects In addition, POA supports the notions of: servants and servant managers (instance managers) transient and persistent servants and instances Essentially addresses scalability and flexibility in server implementations CORBA/Java Security Reference: Andreas Vogel & Keith Duddy, “Java Programming With CORBA,” Second Edition, John Wiley & Sons, 1998. Applet Security Issues Java Virtual Machine for applet execution are restricted in their ability to access local resources - referred to as “applet sandboxing.” Applets are only allowed to communicate with the server they are downloaded from CORBA clients can in principle communicate with any object for which there is an IOR reference. Two approaches have been identified to address applet security restrictions. Working with Applet Security restrictions Establish an IIOP gateway which serves as a proxy to the real server Use signed applets Browser Client Applet Download Applet Server Implementation WWW Server IIOP Gateway IIOP IIOP Firewalls Firewalls restrict and filter network traffic In a client-server environment, in the general case, there may be a client-side and a serverside firewall involved. Types of firewalls Origin/Destination Filtering - router-based filtering based on IP address of target and specific port numbers on that address filtering based on IP addresses of specific set of source machines Gateway firewall A machine with dual network cards - one connects to Internet and the other to Intranet. Only way for packet traffic to bridge the two networks is a protocol-specific bridge that forwards packets to the appropriate applications Client-side firewalls Browser Client Applet Proxy Client-side Firewall Server Implementation Gatekeeper HTTP IIOP HTTP Tunneling With Gatekeeper Browser Client Applet Proxy Client-side Firewall HTTP Server Implementation Port 80 Gatekeeper IIOP IIOP Gatekeeper with dual functionality IIOP over Secure Socket Layer (SSL) SSL is layered on top of TCP/IP It is the basis for secure electronic commerce over the Web - using Secure HTTP (SHTTP) SSL authentication is based on public key cryptography Authentication is based on digitally signed certificates. Overview of CORBA Security Service Goals of a security service Confidentiality Integrity Accountability Availability Sample threats to security An authorized user accessing information they should not A user pretending to be someone else to access information Eavesdropping on others communication Modifying, deleting or maliciously tampering with information Features of the Security Service Identification and authentication Authorization and access control Auditing Communications security Non-repudiation Administration of security policy Security Conformance Levels Security Level 1 - targeted at securing security-unaware applications. Allows for client authentication, secure communications and method-level access control based on security policies. Security Level 2 - supports all of the above and supports integrity, trust and auditing. Targets security-aware application which may enforce their own policies. CORBA World Players Netscape (bundle CORBA-clients with their web browser) Oracle has adopted CORBA/Java as their base platform JavaSoft - is layering RMI on top of CORBA IIOP. Sun has also adopted Visibroker as its ORB technology. IBM/Lotus: Adopted base infrastructure is CORBA/Java. CORBA World Players - Others Iona Symantec Visigenic/Inprise ParcPlace HP Penumra Tandem Inprise Novell Sybase I-Kinetics NetDynamics Expersoft Vignette BEA Allaire and 800 more! Distributed Component Object Model (DCOM)* Microsoft Version of Distributed Object Computing * Material for this tutorial is based on Orafali and Harkey book on Client Server Programming with Java and CORBA and Richard Grimes book on DCOM Programming. DCOM and CORBA Like CORBA, DCOM adheres to separation of interface from implementation using Microsoft Interface Definition Language (IDL) based on DCE. Not compatible with CORBA IDL. Also provides an additional IDL for OLE automation called Object Definition Language (ODL). DCOM Unlike CORBA, DCOM does not support multiple inheritance. It supports multiple interfaces and compositional architectures. Like CORBA, DCOM provides both static and dynamic bindings for methods Type Library in DCOM corresponds to Interface Repository in CORBA. DCOM registry corresponds to Implementation Repository. DCOM Interface DCOM Interface is collection of method calls. DCOM interface is language neutral Microsoft provides language bindings for Visual C++, Visual Basic, and Visual J++. Inprise ’s Delphi products provide bindings for Pascal. DCOM Interface To access DCOM interface, clients use pointer to an array of function pointers - called virtual table or vtable. Implementation of Member Functions Interface Function Table Internal Data Object User Pointer Pointers to Functions DCOM Object DCOM Conventions Plug-in-jack pictorial representation of components. Interface by convention is named with a letter beginning with capital “I” - e.g. IDispatch At run time, interfaces are known by their Interface Identifier (IID) IID is globally unique (GIID) - 128-bit IDs. DCOM Object Also known as ActiveX object. DCOM object implements all the interfaces the object supports. Identified by a unique 128-bit Class ID (CLSID) Implements IUnknown interface IUnknown Interface A Interface B Interface C DCOM Object DCOM Server DCOM servers is a DLL or EXE or a Java Class. Server must provide a class factory for instantiating new Object objects Interfaces IClassFactory2 interface needs to be supported if IClassFactory object is or instantiated only if IClassFactory2 a valid license file is present IUnknown DCOM Object Class Factory DCOM Server DCOM Local/Remote Transparency In-process servers: server DLLs that can be loaded in the same process as the client. Local servers: clients use DCOM’s Lightweight RPC (LRPC) to communicate with server running on a different process space in the same machine. Remote servers: clients use DCE RPC-like mechanisms to make method invocation. DCOM IUnknown Interface IUnknown Interface consists of: QueryInterface - for supporting interface negotiations AddRef - to support garbage collection Release - to support life cycle management Writing a Java Client/Server Application in DCOM 1. Create DCOM IDL 2. Generate GUIDs 3. MIDL Class Proxy 4. JavaTLB Interface Interface 8. Implement Client 5. Implement Server 9. jvc 6. jvc 10. JavaReg 7. JavaReg 11. jview Client Summary.txt Server DCOM Conclusions DCOM is maturing rapidly Java support is there, although it is for Microsoft version of Java Biggest differences with CORBA Support limited to Wintel platforms Range of services available limited (CORBA has from Workflow to security to vertical domain standardization efforts Biggest drivers Freely available with Windows NT MTS and MSMQ and other internet Microsoft technologies Java Technology Why Java Java is a simple, efficient, secure, portable high-performance programming language. It is similar to C++, easy to learn. It has no pointer arithmetic, no need to free memory which is a serious problem in C/C++. Very compact Runtime. Some Java Modules HTML JavaBeans Servlets IIOP RMI and other Protocols ENTERPRISE JAVABEANS COMPONENTS J Server Platform T S J M A P I J J N I D D I L J J M S D B C Other Java APIs Java Telephony API Java Wallet Java Server API Java Security API JDBC JDBC (Database Connectivity) JDBC is a “call level “ SQL interface from Java. This facilitates the execution of SQL statements and return the results. JDBC is an interface level specification. JDBC API is implemented on top of existing SQL level API -- ODBC. JDBC (Contd) The most important JDBC interfaces are java.sql.Environment provides support for creating new database connections java.sql.Connection to connect to a particular database java.sql.Statement for executing a SQL statement on a given Connection java.sql.ResultSet to access the resultset for a given SQL statement. JDBC (Contd.) Furthermore java.sql.Statement has two additional interfaces java.sql.PreparedStatement for executing a pre-compiled SQL statement java.sql.CallableStatement for executing a database stored procedure JDBC (Contd) A JDBC-ODBC Bridge driver currently sits between the ODBC Drivers (provided by database vendors) and the JDBC API. JavaBeans JavaBeans JavaBeans is a software Component model for Java. Facilitate third party ISVs to create and Ship Java Components that can be composed together by end -users (VB model) JavaBean Component Model BeanInfo Methods JavaBean Component Customizer Events Properties * From Orafali’s book JAR CORBA Component Model* Component Info/IDL Methods CORBA Component Customizer Events Properties * From Orafali’s book based on the main submission team CAR JavaBeans JavaBeans provides a platform independent component architecture. Will bridge to ActiveX, OpenDoc and LiveConnect. Distributed Beans JDBC Database Server IIOP CORBA SERVER RMI JAVA JAR Java Beans are packaged as JAR (Java Archive). (Beans come in a JAR :-) Pragmatics How does one create a Bean?? Creating Beans Write the component in Java using the JDK 1.1 Event model (Event Delegation model) and implement the appropriate Listeners and add the listeners to the sources. Creating a BeanInfo class is highly recommended. Use Design Patterns for Creating the Java Beans Design Patterns In very simplistic terms, design patterns are naming conventions. For example, if there is a property named Label, you would have public String getLabel() { } public void setLabel(String labelname) { } Design Patterns Boolean Properties public boolean isRed() { } public void setRed( Color red) { } Design Patterns EventListeners public void add<ListenerType> (<ListenerType> listener) public void remove<ListenerType> (<ListenerType> listener) Example addSriniEventListener(SriniEventListener srevt) removeSriniEventListener(SriniEventListener srevt) Bean Analysis Introspection Java beans Bean Boxes Design Patterns Reflection Introspection Discovers Events, Properties and Methods when the Bean Designer provides a BeanInfo Class Reflection Reads Events, Properties and Methods using Design Patterns JAR Files is similar to Zip Archives and may optionally have a MANIFEST file with information describing the contents of the JAR file. JAR files are used to collect class files, serialized objects, images help files and similar resource files. MANIFEST FILES A JAR file that wants to advertise its contents should have a MANIFESTS file. The MANIFEST file will indicate which of the potential beans in the JAR archive are actual beans. If there is no MANIFEST every potential class is regarded as a bean. Authentication JAR files can be signed to provide authentication. Lotus InfoBus Producer Infobus Consumers Change Notification Producers and Consumers notify changes performed by each other to the shared data. An Event based mechanism. Supports security and access control More Information Can be found including specs and such at http://java.sun.com/beans/infobus Java Blend What is Java Blend Java Blend Integrates Objects in the Java Programming language with Enterprise Objects. Provides a single consistent, coherent object model for enterprise based on the Java object. Java Blend Jointly developed by JavaSoft and Baan. Currently the programmer must explicitly convert to and from Java objects and database objects. Current applications are split into Java part and SQL part and both interacting through JDBC or some similar mechanism. Object-Relational Mapping Currently done by the programmer. Decomposition of Objects into many tables or build objects from many tables. Mappings between foreign keys and Object references Mappings between field types and SQL types Object Relational Mapping Map and or Infer Inheritance Relationships from Foreign keys Perform Transactions and process the results of transactions. Java Blend Java Blend provides automatic mapping between Java Objects and backend relational database tables. The programmer only deals with Java Objects and is unaware of the SQL. SQL translations, Database representations (relational) are transparent to the programmer. Advantages Easy access to enterprise relational data from Java Programming Language. No need to know, SQL, DDL and other relational database specific ideas. Significant reduction in application development time. Java Blend Environment development environment supports automatic object<--> Relational Mapping. Runtime environment supports Transaction Management Caching Query Processing Development Process A mapping tool is used to map business objects written in Java to database schema. Queries can be written in OQL (ODMG compliant) Enterprise Application Persistent Objects Java Blend Runtime JDBC JVM Java Blend Runtime Architecture Transaction Manager Run Time Cache Query Engine Other Advantages Multiple threads for multiple user transactions Multiple simultaneous transactions per application Upon commit stores objects in the database Rollback mechanisms Performance Increases performance by optimistic concurrency control(i.e., does not hold read and write locks on server) Runtime caching Support for stored procedures EJB and Java Blend Java Blend works with EJB APIs Extremely scalable. Enterprise Java Beans What is EJB It is a distributed Software Component Architecture. It is a Framework for Creating Middleware. EJB is part of the Enterprise Java API EJB It is a Server side Component model It focuses on Business Logic. Enterprise Java Bean Architecture* *From EJB specification document Enterprise Java Bean Containers* OTS/JTS Activation/ Deactivation State Management Container Metadata Security Factories ORB EJB1 EJB2 EJB3 * Orafali’s Book EJB Architecture EJB architecture consists of EJB Servers EJB Containers EJB Clients EJB Auxiliary Systems such as JNDI, JTS and others. The Various Players EJB Providers Provide Enterprise Java Beans (Components) EJB Server Providers Creates and sells EJB servers EJB Container Providers sell EJB containers Usually the server provider will also provide containers The Various Players EJB Application Assemblers Will enable application building using EJB components, servers and Containers. EJB Servers EJB Servers are similar to CORBA ORBs It Provides Naming(JNDI) and Transaction Services (JTS) Makes containers visible to clients EJB Containers Encapsulate the Bean Client accesses Beans’ methods through the container methods Container methods map to Bean methods Client only knows about container methods. EJB Clients First discover the services (ala CORBA ) using mechanisms such as JNI Request Bean Services through Container Services. Types of Enterprise Java Beans Usually categorized as Session Beans or Entity Beans Session EJB Is associated with a Single Client. It is created and destroyed by a client Entity EJB Are Shared by multiple clients Persistence is supported. Structure of an EJB Client First Locate a EJB container using a directory service Allocate a bean Use the bean services Dispose the bean. EJB Support IBM Oracle Lotus Novell Iona Netscape Inprise and many many others More on EJB can be found at www.java.sun.com/products/ejb/index.html Some concluding thoughts.... CORBA/DCOM/JAVA Interoperability Bridge ActiveX Clients Proxy CORBA Orbix Orb Orbix Srvc Java Beans Proxy CORBA Visi Orb Visi Srvc Java Code Java Beans ActiveX DCOM COM Srvc Acknowledgement: Adapted from a view foil by Tad Davis, CareFlow|Net ActiveX Bottom Line for Distributed Object Computing You can develop using CORBA You can develop using DCOM You can certainly use Java They all in reality can inter-operate in fairly straight forward fashion.