470 likes | 555 Views
TEXT BOOKS :. MIDDLE WARE TECHNOLOGIES. 1. Client/Server programming with Java and CORBA Robert Orfali and Dan Harkey, John Wiley & Sons,SPD 2nd Edition 2. Java programming with CORBA 3rd Edition, G.Brose, A Vogel and K.Duddy, Wiley-dreamtech, India John wiley and sons.
E N D
TEXT BOOKS: MIDDLE WARE TECHNOLOGIES 1.Client/Server programming with Java and CORBA Robert Orfali and Dan Harkey, John Wiley & Sons,SPD 2nd Edition 2. Java programming with CORBA 3rd Edition, G.Brose, A Vogel and K.Duddy, Wiley-dreamtech, India John wiley and sons B.TECH III YR II SEMESTER UNIT 5 PPT SLIDES
INDEX UNIT 5 PPT SLIDES S.NO. TOPIC LECTURE NO. PPTSLIDES • Two types of Client/Server invocations L32 L1.1 TO L1.5 L33 L2.1 TOL 2.5 2.The static CORBA L34 L3. 1 TO L2.5 3. CORBA program L35 L4. 1 TO L3.5 4. ORB lets with Applets . L36 L5. 1 TO L4.5 5. Dynamic CORBA L3 L6. 1 TO L5.5 6. The portable count L38 L7. 1 TO L6.5 7. dynamic count L39 L8. 1 TO L7.5 8. multi count L40 L9.1 TO L9.4
UNIT5 SYLLABUS • Core CORBA / Java: Two types of Client/Server invocations-static, dynamic. The static CORBA, first CORBA program, ORB lets with Applets, Dynamic CORBA—The portable count, the dynamic count multi count. Lecture 1 slide 1
What is CORBA • 1.CORBA is a specification for the distributed object bus architecture defined by OMG • 2.It is a product of a consortium called the OMG • 3.OMG includes 800 compinies representing the entire spectrum of computer industry. Lecture 1 slide 1
CORBA services • Lifecycle services • Persistence service • Naming services • Event services • Concurrency services • Transactional services • Relationship services • Externalization Lecture 1 slide 2
CORBA services • Query services • Licensing service • Properties services • Time service • Security service • Trader service • Collection service Lecture 1 slide 3
Web services • 1.SOAP(simple object access protocol) • 2.WSDL(web service description language) • 3.UDDI(universal description ,discovery integration) Lecture 1 slide 4
What is SOAP • SOAP is a communication protocol • SOAP is based on XML • SOAP is a simple and extensible • SOAP will be developed as a W3C standard • SOAP allowed you to get around firewalls • SOAP is a format for sending messages • The basic web services platform is XML plus HTTP Lecture 1 slide 5
What is WSDL • WSDL is written in XML • WSDL is an XML document • WSDL is used to describe web services • WSDL is also used to locate Web services • WSDL is not yet a W3C standard Lecture 2 slide 1
Benefits of SOA • Better reuse • Well defined interfaces • Easier to maintain • Better flexibility Lecture 2 slide 2
DCOM • DCOM is an extension to COM • DCOM uses a protocol called the object remote procedure call (ORPC) • CORBA uses internet-inter ORB protocol • DCOM using MIDL Lecture 2 slide 3
middleware's • RMI • RPC • CORBA • SOA • WEB SERVICES Lecture 2 slide 4
Four main elements of CORBA • Object request broker • CORBA services • CORBA facilities • Application objects Lecture 2 slide 5
CORBA facilities • Are collections of IDL-defined frameworks That provide services of direct use to application Categories -Horizontal -Vertical Lecture 3 slide 1
Core CORBA/java • Advantages (of static Vs dynamic) • It is easier to program – remote method name, parameters. • It provides more robust type checking – complete time checks. • It performs well – a single API. • It is self documenting • Dynamic: m.i.is more flexible; allows to add new classes at runtime, useful for tools. • Steps of CORBA static m.i: • Create your IDL defs. • build the interface defs. to the interface repository. Lecture 3 slide 2
Core CORBA/java • pre compile – generates • client states • server skeleton • language specific example class, (CORBA 3.0 calls it a servant class) • Add the servant impl.code. • Compile the code. (ref. language compiler) • Register the run-time objects with the Impl. Repository. Lecture 3 slide 3
Core CORBA/java • Module counter • { • Interface count • {attribute long sum; • Long increment ( ); • }; • }; • Mapping CORBA IDL to Java • Prompt > idl2java count.idl – no – comments – no-tie –no-tie-specifies not to generate extra delegation class. Still, it generates a Java package counter, which consist of 5 java classes & 1 Java interface. • Counter.-Count Impl base – server side skeleton • Counter.-st-count : client side stub • Counter.Count Helper – provides useful helper for count clients. • Counter.Count Holder: public instance member of type • Package Counter; Lecture 3 slide 4
Core CORBA/java • Counter.Count • Public interface count extends org.orng.CORBA.object. • { • Public int sum ( ); • Public void sum (int – vol); • Public int increment ( ); • } • Counter.-Example-Count-Example class for count obj.impl.VisiBroken’s Output: • Package counter; • Public class-example-count extends counter-count ImplBase • { • Public – example – count (java.lang.string name) • { • Super (name;) • } Lecture 3 slide 5
Core CORBA/java • Public-example-count ( ) • { • Super ( ); • } • Public int increment ( ) • { • //implement operation . . . . . • } • public void sum (int sum) • { • //implement attribute writer . . . • } • Public int sum ( ) • { Lecture 4 slide 1
Core CORBA/java • // implement attribute reader . . . . • } • } • Server side of Count: • // count Impl.Java : The count Implementation Class Count Impl Base extends Counter-Count Impl Base • { • Private int sum; • Count Impl (string name) • { • Super (name); • S.O.P. (“count object created”); • Sum = 0; • } Lecture 4 slide 2
Core CORBA/java • Public int sum ( ) • { • Return sum; • } • Public void sum (int val) • { • Sum = val; • } • Public int increment ( ) • { • Sum ++ • Return sum • } • } Lecture 4 slide 3
Core CORBA/java • Main server program: • Class count server • { • Static public void main (string [ ] ays) • { try • { org.umg.CORBA.ORB orb = org.umg.CORBA.ORB. init (ays,null); • org.umg.CORBA.BOA boa = cob.BOA – init ( ); • count Impl count = new count Impl (“my count”); • roa.obj-is-ready (count); • boa.impl-is-ready ( ); • { • Catch (org.umg.CORBA.Systm Exception e) • { • System.error.print ln(e); • } • } • } Lecture 4 sllide 4
Core CORBA/java • Client side of Count: • Class Count Client • { • Public static void main (string [ ] ays) • { • Try • { • S.O.P (“initializing the ORB”); • org.umg.CORBA.ORB orb = org.umg.CORBA.ORB init (ays, null); • S.o.p (“building to count object”); • Counter.count counter = counter.count helper.build (orb,”my count”); • S.o.p. (“setting sum to o”); • Counter.sum ((int)o); • //calc.st.time. • Long start Time = sytem.current Time millis ( ); • //Increment 1000 times • s.o.p (“incremtning”); Lecture 4 slide 5
Core CORBA/java • for (int i=0, i<1000; i++) • { • Counter.increment ( ); • } • //calc.strp.time; print statistics • Long step Time = system.current Time millis ( ); • s.o.p. (“Avg ping = “+((stop Time-start Time)/1000t)+msecs”); • s.o.p (“sum=”+counter.sum ()); • } • Catch (org.umg.CORBA.system Exception e) • { • System.err.printh (“system Exception”); • System.err.printh(e); • } • } Lecture 5 slide 1
Core CORBA/java • } • O/p • 1. Local staticRemote static (10mbit/s Ethernet) • 3.9 msecs 3.6 msecs • 2. Symantic visual caf JITsum JDK • Local 3.9 msec 6.7 msec • Remote 3.6 msec 5.6 msec Lecture 5 slide 2
Core CORBA/java • Orblets with Applets • Applets let you create component – sized apps that serves can ship to clients via ordinary HTML pages. • Applets become an instant front-end to the remote services, you provide; so applets are “just-in-time” shippable clients. • Applet life cycle: init, start, paint, action, handler Event, stop, destroy • The HTML Applet Tag: CODE, WIDTH, HEIGHT, CODEBASE,ALGIN,PARAM Lecture 5 slide 3
Core CORBA/java • CORBA-enabled Applet: • To create applet version of the COUNT client, enabled it inside an HTML page, download using web browser, invoke methods on the count server. • The count IDL – Use count server, as is – so IDL remains unchanged. Our applet can use both the • Counter.-st-count and Counter.counter Helper,as • Server capture of the Java Count Applet • Count client Applet Lecture 5 slide 4
Core CORBA/java • The client applet code: • //count client Applet.java Applet client, visiBroker for Java. • Import Java.awt.*; • Public class Count client Applet extends java.applet.Applet. • { • Private Text Fields, count field, ping Time Field; • Private button run Count; • Private Counter.Count.counter; • Public.void init ( ); • { • //create a 2 by 2 grid of widgets • Set Layout (new Grid Layout (2,2,10,10)); • //Add the from widgets, initialize where • add (new Label (“count”)); • add (count Field = new Text Field ( )); Lecture 5 slide 5
Core CORBA/java • count field.set Text (“1000”); • add (run count = new Button (“run”)); • add (ping time field = new Text Field ( )); • ping Time field.set Editable (false); • try • { • //Init.the ORB. • Show Status (“Initializing the ORB”); • Org.omg.CORBA.ORB orb = org.umg.CORBA.ORB.init (this,null); • //Build to the count object • Show Status (“Binding to count object”); • Counter = Counter.CountHelper.build(orb,”mycount”); • } • Catch (org.umg.CORBA.System.Exception) • { • Show status (“applet Exception “+e);} Lecture 6 slide 1
Core CORBA/java • } • Public broken action (Event ev, object avg) • { • If (ev.target = = run count) • { • Try • { • // set sum to initial value of 0 • Show status (setting sum to 0”); • Counter.sum((int)o); • //get data from ad set value of applet fields. • Show status (“Incrementing”); • Int stop count = Integer.parse Int (count field.get Text( )); • Ping Time Field .set Text (“ “); • //calculate start time. • Long start Time = system.current Time millis( ); Lecture 6 slide 2
Core CORBA/java • //increment stop count time • For (int i = 0; i< stop Count; i ++) • Counter.increment ( ); • //calculate stop time; show statistics • Long stop time = System.current Time millis( ); • Ping Time Field.set Text (“avg ping = “+float.to String (float) (stop time-start time)/stop -count)+”msecs); • Show status (“sum=”+counter.CORBA sum() ); • } • catch (org.umg.CORBA.System Exception e) • { • show status (“system exception “+e); • } • return time; • } • return false; • } • } Lecture 6 slide 3
Core CORBA/java • Completion • Prompt . Java c– d\. . . . count client applet.Java • Create a web page • Count .html • <h1> count client Applet </h1> • <hr> • <center> • <applet code = count client applet.class width = 300 height = 60 CODE BASE = classes> Lecture 6 slide 4
Core CORBA/java • <paramname = org.umg.CORBA.ORB Class • Value = com.visigenic.vbroken.orb.DRB> • </applet • </count> • <hr> • Results: • Local Vs Remote : Java applet/CORBA count server. • Local static countRemote static count • JIT compiled 17.6msecs 16.1 msecs • Interpreted 30.2 msecs 23.3 msecs • Applets Vs Apps • Java appletJava app • JIT compiled 16.1 msec 3.6 msec • Interpreter 23.3 msec 5.6 msec Lecture 6 slide 5
Dynamic CORBA • The Portable Count • Make count portable by replacing the visigenic – specific bind with the CORBA naing semic. • Rylau BOA-specific code in count with PoA semantics. • CORBA Naming Semic: • Generic structures to compose compound names – so it can work with global naming conventions such as URLs, domain names, DCE, JNDI, LDAP, NDS, Unix files, NTfiles etc. • CORBA N.S.in the Tel.white.pages for objects, it lets you find objects by name. • Name binding – name to obj.ref. • Name context – newspace Lecture 7 slide 1
Dynamic CORBA • ex: • Each named component is a structure with two attributes – • identifier – object name string • kind – string to put a descriptive attribute – ex.file type. • IDL Def. try a CORBA name: • //IDL • Type of sequence ,Name component>name; • Struct name component • {Istring id; Istring kind;}; Lecture 7 slide 2
Dynamic CORBA • The object naming service interfaces: • Naming context – resolve, list, destroy, new-context, unbind, bind, rebind, bind-context, rebind-context, bind-new-context. • Binding Instructor: next-one, next-n, destroy • C/S Naming Scenarious: • A Server invokes link to associate a logical name with an obj.ref. • The N.S.adds this obj.ref from binding to its namespace database. • client app. Invokes resolve to obtain an obj.ref. to this name. • The client uses the obj.ref. to invoke methods on the target object. • Scenarios 1: Creating the NS. • resolve – initial – references (ORB) • bind-new-context (Root context) – Results context • bind-new-context (Results context) – client made context • bind (client med context) – cascum. • bind (client med context) – PlayeBonce Lecture 7 slide 3
Dynamic CORBA • org.umg.CORBA.object obj ref = orb.resolve – initial – refernces (“name service”); • org.umg.Cosnaming,naming context root context = org.umg.cosnaming.naming context helper.maxrow (obj ref); • Scenario 2: Finding objects: • resolve-initial –reference (ORB) • create the name • resolve (Root context) • root.value – obj ref • Invoke methods • Portable count: • Count portable client class • The current IDL • The current portable Impl class • The current portable server class Lecture 7 slide 4
Dynamic CORBA • The Dynamic Count • In static m.i., a pre compiled stub is required for each interface the client used. • It is true even in the case of applets, through the stub’s byte codes are downloaded at run-time. • Dynamic Invocation Interface (DII) is a stub-less binding approach. • The client can invoke any operation on any object without repairing precompiled stubs i.e., the client discovers interfaces – related infn. at invocation time, it requires no compile – time knowledge. • To discover remote objects, the mechanisms available are • ‘string field’ object reference is provided to the client; which is converted into a live object reference an the connection is made. • Clients can look up objects by using the CORBA naming service. • Clients can discover objects by using the CORBA’s yellow pages – The Trader service. Lecture 7 slide 5
Dynamic CORBA • The CORBA dyn. invocation process: • Obtain the Interface name • get – interface ( ) • returns a ref. to interface ref. object • Obtain method Description • Look up – name ( ) • Describe ( ) • To obtain the method’s full IDL def. • Create Argument list: • Create – list ( ) • Add-item ( ) . . . add item ( ). . add-item ( ) • Create the request Lecture 8 slide 1
Dynamic CORBA • Create-request (object reference, method, arguments list) • Invoke the Remote method • Using RPC Invoke ( ) • send/receive send-deformed ( ) • deferred get-response ( ) • Data of ram one way send-one way ( ) • Dyn. Invocation Interfaces – four Interfaces: • CORBA : : object – pseudo object interface that defines opens that every CORBA object must support. Lecture 8 slide 2
Dynamic CORBA • Methods: get-intefaces; create-request; - request. • CORBA::Report ;- pseudo object interface that defines the operation on a remote object. • Method ; add-ary, invoke, send-oneway, send-defered, get response, pill.response, delete, add-item, add-value, get-count, remove, free, free-memory. • CORBA::ORB: Gen. purpose ORB methods – create-list, create - operation- list, send – multiple-request-one-way, send-multiple-requests-defered, pill-next-response, get -next-response • CORBA ::NVList: To help constant parameters – NV List object – maintains a list of self describing data items called Namedvalues. • IDL- Street-Namedvalue • { • Identifier name; // my name any argument;//argument long len;//length/count of my value flys-modes//in,int, or inout • Dynamic Invocation Scenarios: • So it Yourself : Lecture 8 slide 3
Dynamic CORBA • ClientObjectInterfaces def. Operationdef. ORB • get.interface ( ) • look up name • describe • create – list • add – item • create – request • Invoke • delete • free • a variation of first method Lecture 8 slide 4
Dynamic CORBA • The ORB-Can-Help scenario: • ClientObjectInterfaces def. Operationdef. ORB • In place of steps 3,4, and 5 above issue • 1 & 2 same as above • 3. create – operation list • 4. add-value • 5. Create-request • 6. invoke • 7. delete • 8. free • Dyn. Invocation – the yet – another-way scenario: Lecture 8 slide 5
Dynamic CORBA • in stead of adding your arguments to an NVList, you add them to the request object. • The Dynamic Count: • Count server class, as is; so the IDL remains unchanged. • No stubs for a dynamic client, however a mixed client is created that does both static and dynamic invocations. Count cliendDii.Java • Test Results: • Local Dyn. Count ping Remote Dyn.Count ping • Invokenly 3.9msec 3.6msec • Prepared invoke 61.4 msec 57.8 msec • Note: Choices of method invocation: • Static precompiled stubs • Dynamic invocations using DII. • Downloadabale stubs – Java – download both client & stubs, (applet). Lecture 9 slide 1
Dynamic CORBA • When to use what • Usage PatternRecommendation • 1. Client – Server frequent; use static precompiled stubs • Server obj.doesn’t chage • 2. Client – server ingrequent use DII • 3. client – server object runtime use DII • 4. Client runs with in browser; use downloadable applet and static • if discovers new object stubs. Applet becomes the client for this object. Lecture 9 slide 2
Dynamic CORBA Multi – Count • Multi client – multiple clients, call backs,; reversely C&S roles. • VisiBroken for Java CORBA ORB is both a C&S • Multi Threaded client – client using Java’s threads • Coordinator – a new server – uses callbacks to remotetly control clients. • Applet as a front-end to the coordinator – called multi console. Lecture 9 slide 3
Dynamic CORBA • The Multi count CORBA interfaces: • Client control interface – client call back • Methods – start, stop • Coordinator interface - server • Methods – start, stop, register • count interface - server • method – increment • A Multi count callback Scenario Lecture 9 slide 4