Presentation is loading. Please wait.

Presentation is loading. Please wait.

Presentation Outline of Commercial Systems

Similar presentations


Presentation on theme: "Presentation Outline of Commercial Systems"— Presentation transcript:

1 Presentation Outline of Commercial Systems
Bahman   Part A: Java Beans     Part B: Enterprise Java Beans John   Corba     OLE ActiveX Andrew   COM     DCOM     COM+

2 Java Beans & Enterprise Java Beans
Component-Based Design Bahman Kalali Computer Systems Group Spring 2002

3 Outline (Part A) Introduction to JavaBeans A Bean's Public Interface
Bean Properties Bean Events Bean Methods Reflection API Bean Distribution Summary

4 Introduction Java Bean is a reusable platform-neutral software component that can be visually manipulated in a visual application builder tool. This definition has two distinct parts: A bean is a software component. A bean can be visually manipulated in a tool.

5 Construction from Components
                                                          

6 A Bean's Public Interface
Properties Methods Events

7 Bean’s Properties Type of Properties
At the source code level, a bean's property is nothing more than a private attribute of a class that is supported by public getter and/or setter methods. Type of Properties Simple Boolean Index Bound Constrained

8 Sample Account Property Balance

9 Exposing Simple Properties
Naming convention to expose a simple property:      public void setXxx (<type> arg)      public <type> getXxx() Example for Account's balance property:      public void setBalance( int amount )      public int getBalance() By applying a naming pattern to the set/get Balance methods above, the visual builder tool will expose a read/write "balance" property that has the type int.

10 Exposing Boolean Properties
Naming convention to expose a boolean property:      public void setXxx (boolean arg)      public boolean isXxx() Example for overdrawn property:      public void setOverdrawn( boolean overdrawn )      public boolean isOverdrawn() Boolean properties may be exposed by using the isXxx naming convention.

11 Exposing Indexed Properties
Naming convention to expose an indexed property:      public void setXxx ( <type> [] arg)      public <type>[] getXxx()      public void setXxx (int index, <type> arg)      public <type> getXxx (int index) Example for an Account owner property:      public void setOwner(String[] owners)      public String getOwner()      public void setOwner(int index, String owner)      public String getOwner(int index)

12 Account Bean with a balance Property
// Account Class - non visual Java Bean public class Account extends Object { int balance = 0; public Account() { // constructor } public void setBalance ( int newBalance ) { balance = newBalance; } public int getBalance() { return balance; } public void deposit ( int pennies ) { setBalance ( getBalance() + pennies ); } public void withdraw ( int pennies ) { setBalance ( getBalance() - pennies ); } } // end of class Account

13 Bound Properties                                                            A Bean properties changes, another Bean may want to be notified of the change and react to the change. Whenever a bound properties changes, notification of change is sent to interested listeners. It is up to the source Bean to keep track of listeners.

14 Account Bean with a Balance Property
PropertyChangeSupport object constructs a PropertyChangeEvent object and passes it to the Listener chain. Listener objects will interrogate the property that is changing and process accordingly.

15 Constrained Properties
setBalance called Account notifies the VetoableChangeListeners of pending change request Listeners can optionally throw exception balance is updated if no exception is thrown

16 Bean Custom Events Bound and constrained properties fire events when properties are changed. Java Beans can also fire other kind of events (custom events). The application developer can wire up to these events without writing code.

17 Exposing Bean Custom Events
Naming conventions are used public void addXxxListener ( XxxListener listener) public void removeXxxListener ( XxxListener listener) Example for exposing an OverdrawEvent public void addOverdrawListener ( OverdrawListener listener) public void removeOverdrawListener ( OverdrawListener listener) In addition to these methods, the source object also provides: 1) OverdrawEvent class 2) OverdrawListener interface 3) code to fire the event 4) code to manage the listener chain

18 Bean Methods To expose a method in the Bean’s public interface, simply make the method public.

19 How does a visual Builder tool determines a Bean’s public interface?
At development time the visual builder tool is able to interrogate beans, and figure out what's in there. How does it do that?    The Java Reflection API

20 Reflection API In Java 1.1 and higher, anyone can inspect a class using the Reflection API    Account account = new Account();    Class classObject = account.getClass();    Method [] methodsArray = classObject.getDeclaredMethods(); methodsArray now contains an array of Method objects for the class Account A method objects contain information about a method's: Method name Return type Argument list Access type

21 Bean Distribution Beans can be distributed in a JAR file (basically a ZIP file). The JAR utility that comes with the JDK can be used to create JAR files. JAR files can contain any type of file, not just Java bytecodes, image,sound and text. A manifest file describes the contents of the JAR.

22 Summary Beans are software components
are usable by programming tools are packaged in JAR files use a standard naming convention have a public interface A Bean's Public Interface composed of: Properties Simple Indexed Boolean Bound Constrained Events Signalled by changing properties Signalled for custom state change Methods Default is any public method

23 Outline (Part B) Introduction to Enterprise Java Beans
Three-Tiered Architecture JBoss Application Server Enterprise Java Beans Accessing a Business Method Case Study: Distributed Shoe Web Application Demonstration of application lifecycle Summary 23

24 Introduction EJB specification defines an architecture for the development and deployment of transactional, distributed object applications-based, server-side software components. Case Study Shoe Retailer Company 25 Running Montreal Nike 50 ShoeCollection id name branch brand quantities Shoe 24

25 Three-Tiered Architecture
Client Layer Presentation Layer Business Logic Layer Data Layer Logical Layers Typical Web Implementation Client Layer Upper Tier Browser Java Beans Presentation Layer Web Server Middle Tier Business Logic Layer EJB Application Server Data Layer Lower Tier Database 25

26 JBoss Application Server
JBoss is an application server written in Java that can host EJB component. JBoss provides a container. An EJB container implicitly manages resources for EJB: Threads Socket Database connections Remote accessibility Mutliclient support Persistence management 26

27 Enterprise Java Beans Bean Types
Session Beans => models business processes Entity Beans => models business data Browser Web Server Presentation Layer JSP/Java Beans Servlet Application Server EJB Container Session Bean Business Logic Layer Entity Bean DB

28 Enterprise Java Beans (contd.)
JBoss Application Server Home EJB Container Interface EJB EJB Home Object Home Object Remote Interface Bean Class EJB EJB Client Client Object Object Enterprise Bean Components composed of: (1) Bean Class ( i.e. ShoeBean.java) (5) Home Interface ( i.e. ShoeHome.java) (3) Remote Interface ( i.e. Shoe.java) (2) EJB Object (4) EJB Home Object( Responsibility: Create, Find, Remove EJB object) (6) Deployment Descriptor( i.e ejb-jar.xml)

29 Accessing a Business Method
Retrieval of the Home object reference and generation of remote EJB object reference. 5: Return EJB object reference 3: Request new EJB object Client Code EJB Container Home Object 1: Retrieve reference 2: Return Home Object reference Home Object Home Interface 4: Create EJB object Enterprise Bean JNDI EJB Object Remote Interface Directory Service 29

30 2: Acquire a Bean, and delegate
Accessing a Business Method (cont’d.) Handling a client request to a business method. EJB Container Home Interface Client Code Home Object 1:Call a Method 4: Return value to client 3:Method Returns Enterprise Bean 2: Acquire a Bean, and delegate the method to the Bean EJB Object EJB Object EJB Object Remote Interface 30

31 Shoe Distributed Web Application
Presentation Layer Business Logic Client Layer Data Layer JspShoeBrowse Java Bean JSP Pages ShoeCollection Session Bean Shoe Entity Bean Web Browser Tomcat Web Server JBoss Application Server <<HTTP>> <<RMI>> EJB Container Servlet Container Hypersonic database 31

32 Demonstration of application lifecycle
Build Package Deploy Run shoe.jar shoe.war cs854-ApplicationServer shoe Shoe.class ShoeHOME.class ShoeBean.class ShoeCollection.class ShoeCollectionHome.class ShoeCollectionBean.class shoecollection utils ShoeExistsException.class jboss.xml ejb-jar.xml META-INF cs854-WebServer WEB-INF classes header.html JspShoeBrowse.class search.jsp lib browse.jsp web.xml shoe.jar mext.jsp footer.html prev.jsp 32

33 Summary 33

34 CORBA Key Concepts Com+mon Object Request Broker Architecture
Location Transparency Objects Portable Standard

35 Simplified Architecture
Interface Definition Language(IDL) Application Programming Interface(API) Object Request Broker(ORB)

36 CORBA Architecture ORB OS Kernel OS Kernel Network Client
Object Implementation IDL Skeleton Object Adapter Dyn. Inter- face IDL Stub ORB Interface Object Services: naming, events, life cycle, persistence, transactions, concurrency, relationships, externalization, object licensing, properties, object query. ORB OS Kernel OS Kernel Network

37 IDL Interface for Quoter
interface Stock { double price (); readonly attribute string symbol; readonly attribute string full_name; }; interface Stock_Factory { Stock get_stock (in string stock_symbol) raises (Invalid_Stock_Symbol);

38 Client - Manage ORB in Stock Quoter
In client.cpp: int main (int argc, char* argv[]) { try { // First initialize the ORB, that will remove some arguments... CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, "" /* the ORB name, it can be anything! */); // Get Reference to desired object // call methods to access object orb->destroy (); } catch (CORBA::Exception &ex) { std::cerr << "CORBA exception raised!" << std::endl; return 0; Client.cpp

39 Client - Get Quoter Object R
In client.cpp: #include "QuoterC.h” CORBA::Object_var factory_object = orb->string_to_object(argv[1]); Quoter::Stock_Factory_var factory = Quoter::Stock_Factory::_narrow (factory_object.in ()); for (int i = 2; i != argc; ++i) { try { // Get the stock object Quoter::Stock_var stock = factory->get_stock (argv[i]); Client.cpp

40 ef

41 Implement Get_Stock Method
Factory_i.cpp In stock_factory_i.cpp // Return Object Reference Quoter::Stock_ptr Quoter_Stock_Factory_i::get_stock (const char *symbol) throw (Quoter::Invalid_Stock_Symbol) { if (strcmp (symbol, "RHAT") == 0) { return this->rhat_._this(); } else if (strcmp (symbol, "MSFT") == 0) { return this->msft_._this (); } throw Quoter::Invalid_Stock_Symbol (); }

42 Implementing Stock Interface
In stock_i.cpp // Access object class Quoter_Stock_i : public POA_Quoter::Stock { public: Quoter_Stock_i (const char *symbol, const char*full_name, CORBA::Double price); private: std::string symbol_; std::string full_name_; CORBA::Double price_; }; Stock_i.cpp

43 Stock Operations and Attributes
Stock_i.cpp In stock_i.cpp: // Access object class Quoter_Stock_i : public POA_Quoter::Stock { public: // some details omitted char *symbol () throw (CORBA::SystemException); char *full_name () throw (CORBA::SystemException); CORBA::Double price () throw (CORBA::SystemException); }; // In the .cpp file: char * Quoter_Stock_i::symbol () throw (CORBA::SystemException) { return CORBA::string_dup (this->symbol_.c_str ()); }

44 Implement Server int main (int argc, char* argv[]) { try
Server.cpp int main (int argc, char* argv[]) { try { // First initialize the ORB, that will remove some arguments… CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, "" /* the ORB name, it can be anything! */); CORBA::Object_var poa_object = orb->resolve_initial_references ("RootPOA"); PortableServer::POA_var poa = PortableServer::POA::_narrow (poa_object.in ()); PortableServer::POAManager_var poa_manager = poa->the_POAManager (); poa_manager->activate (); // The application code goes here! // Destroy the POA, waiting until the destruction terminates poa->destroy (1, 1); orb->destroy (); } catch (CORBA::Exception &ex) { std::cerr << "CORBA exception raised!" << std::endl; } return 0; }

45 Software Bus CORBA provides a communication infrastructure for a heterogeneous, distributed collection of collaborating objects Analogous to “hardware bus”

46

47 OLE Overview Object Linking and Embedding
Microsoft 's technology for supporting compound documents A way for Windows to create documents containing objects from other programs. Components can be re-used by many applications (referred to as component containers).

48 OLE Example Pie chart generated by Excel embedded in a word document being displayed in a PowerPoint presentation..

49 OLE Technology A set of APIs to create and display a (compound) document The Component Object Model (COM) now takes in OLE as part of a larger concept. It has become a set of standard COM interfaces Embedded documents retain all their original properties. If the user decides to edit the embedded data, Windows activates the originating application and loads the embedded document.

50 OLE Extensions Automation is an OLE technology, which enables third party applications to remotely control Office applications. e.g. Puppeteer invokes Automation interfaces to modify application behavior when executing on bandwidth limited platforms. using Automation interfaces, Puppeteer can act as a buffer for a large PowerPoint presentation, loading slides while the user presents.

51 ActiveX - Overview A loosely-defined set of technologies developed by Microsoft, ActiveX is an outgrowth of two other Microsoft technologies called OLE (Object Linking and Embedding) and COM (Component Object Model). ActiveX applies to a whole set of COM-based technologies. ActiveX control is Microsoft 's answer to the Java technology from An ActiveX control is roughly equivalent to a applet, but is known as an ActiveX control. Writing a program to run in the ActiveX environment creates a self-sufficient program that can be run anywhere in your ActiveX network This component is known as an ActiveX control, and is often used to attach a program to a web page.

52 ActiveX - Implementation
An ActiveX control can be created using one of several languages or development tools, including C++ and Visual Basic, or PowerBuilder, or with scripting tools such as VBScript. Currently, ActiveX controls run in /98/NT/2000 and in Microsoft plans to support ActiveX controls for UNIX. Similar (but different) security issues as applets

53 Example Sub () Resp = Window.Confirm "Use the MS Agent?" If Resp Then Window.Alert "Loading ActiveX Controls." Document.WriteLn "<OBJECT ID='Agent' width=0 height=0" Document.WriteLn "CLASSID='CLSID:F5BE8BD2-7DE6-11D0-91FE-00C04FD701A5'" Document.WriteLn " CODEBASE=' & _     "controls/agent/msagent.exe#VERSION=1,5,1,0'>" Document.WriteLn "<" & Chr(47) & "OBJECT>" Document.WriteLn "<OBJECT ID='TruVoice' width=0 height=0" Document.WriteLn " CLASSID='CLSID:B8F2846E-CE36-11D0-AC83-00C04FD97575'" Document.WriteLn " CODEBASE=' & _     "controls/agent/cgram.exe#VERSION=1,5,0,0'>" Document.WriteLn "<" & Chr(47) & "OBJECT>" End If End Sub

54 Commercial Products : Microsoft COM/DCOM/COM+
Andrew Trevors Software Architecture Group

55 Overview What is COM / DCOM / COM+? COM DCOM COM+ Client/Server Model
Objects & Interfaces COM Servers COM Clients COM Library COM Example DCOM COM+

56 What is COM / DCOM / COM+? COM (Component Object Model)
software architecture which allows components from multiple vendors to be combined in a variety of applications binary standard for component interoperability platform and language independent, distributed, object-oriented. is the foundation technology for Microsoft's OLE and ActiveX® technologies, as well as others. DCOM (Distributed Component Object Model) enables software components to communicate directly over a network in a reliable, secure, and efficient manner. is designed for use across multiple network transports. based on the OSF's DCE-RPC specification. For any given platform (hardware and operating system combination), COM defines a standard way to lay out virtual function tables (vtables) in memory, and a standard way to call functions through the vtables.

57 What is COM / DCOM / COM+? COM+ (Component Services)
upgrade of the original COM Adds Transaction processing from Microsoft Transaction Manager Queued components Object pooling Publish-subscribe event service much, much, more.

58 Client/Server Model COM Client Object Application Server
(4) Call interface members Object (3) Get object interface pointer, return to Client Server COM (1) “Create Object” (2) Locate implementation

59 Objects & Interfaces Interface Object
a set of member functions that a client can call to access that object implementation. all interfaces start with an ‘I”, followed by a descriptive label identifying what services they provide. all interfaces have a IID (interface identifier) which uniquely identifies them. Object an implementation of one or more interfaces If object wishes to allow COM to locate and launch its implementation then it needs to have a CLSID (class identifier) at very least, objects must implement IUnknown interface QueryInterface(), AddRef(), Release()

60 COM Servers Servers come in three varieties: In-process Local Remote
Server loaded into the clients process space loaded as a Dynamic Linked Library (DLL) Local Server that runs as a separate process on the same machine as the client run as an executable (EXE) application Remote Server that runs as a separate process on another machine DLL or EXE

61 COM Servers Servers have four responsibilities
Allocate a CLSID for each supported class and provide a mapping between CLSID and server module (registry) Implement a class factory object with the IClassFactory interface (CreateInstance & LockServer) for each CLSID Expose the class factory so the COM Library can find it once it is loaded (CoRegisterClassObject or DllGetClassOjbect) Provide for unloading the factory if is serving no objects and no locks are in place

62 COM Clients Any application which uses COM to instantiate objects
Object usage involves: Using CLSID through COM Library or class factory to get an interface pointer Interface pointer is actually a pointer to a pointer to a table of function pointers Using interface pointer to call member functions or to obtain other interfaces Calling Release() function when done with object.

63 COM Library COM Library provides :
A small number of API functions that facilitate the creation of COM applications clients (object creation). servers (object exposure). Implementation locator services COM determines, from a class identifier, which server implements that class and where that server is located (registry). Transparent remote procedure calls when an object is running in a local or remote server

64 COM Example class StockQuote : public IUnknown { public:
HRESULT QueryInterface( IID & iid, void** ppvObj ); ULONG AddRef(); ULONG Release(); HRESULT getSymbol( char** symbol ); HRESULT getLongName( char** name ); HRESULT getPrice( int* price ) private: int _price; char* _symbol; char* _name };

65 COM Example HRESULT StockQuote::QueryInterface( IID & iid, void** ppvObj ) { HRESULT retVal = S_OK; if( IsEqualID( iid, IID_IUnknown ) *ppvObj = ( IUnknown*) this; else { *ppvObj = NULL; retVal = E_NOINTERFACE; } return retVal;

66 COM Example hRes = CoCreateInstance(&CLSID_STOCK, NULL, CLSCTX_SERVER,
&IID_IUnknown, &pStock); if (SUCCEEDED(hRes)) { // do something with pStock } else { // report error

67 DCOM Extends COM to support object communication across networks.
DCOM protocol, Object RPC, extends DCE RPC Uses RPC packets with extra information such as interface pointer identifiers Programmers generally write an IDL and use an IDL compiler (MIDL) to generate proxies/stubs Pinging for garbage collection

68 DCOM Client Process Local Server Process Remote Machine
In-Process Object Local Server Process Local Object Client Application Stub In-Process Server COM RPC Local Server Local Object Proxy COM Remote Machine Remote Server Process Remote Object Proxy Remote Object Stub RPC COM Remote Server

69 COM+ Transactions Queued Components Object Pooling
Coordination between COM+ and DTC (Distributed Transaction Coordinator) to ensure ACID properties. Queued Components Provides asynchronous component invocation and execution through the use of Microsoft Message Queuing Service Object Pooling Automatic service provided by COM+ which allows components to have instances of itself kept active in a pool Stateless No thread affinity Aggregatable Atomic, Consistent, Isolated, Durable

70 COM+ COM+ Events


Download ppt "Presentation Outline of Commercial Systems"

Similar presentations


Ads by Google