presentation outline of commercial systems bahman part a: java beans part b: enterprise java beans...
TRANSCRIPT
![Page 1: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/1.jpg)
Presentation Outline of Commercial Systems
• Bahman
Part A: Java Beans
Part B: Enterprise Java Beans
• John
Corba
OLE
ActiveX
• Andrew
COM
DCOM COM+
![Page 2: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/2.jpg)
Java Beans & Enterprise Java Beans
Component-Based Design
Bahman Kalali
Computer Systems Group
Spring 2002
![Page 3: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/3.jpg)
Outline (Part A)
Introduction to JavaBeans A Bean's Public Interface Bean Properties Bean Events Bean Methods Reflection API Bean Distribution Summary
![Page 4: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/4.jpg)
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.
Introduction
![Page 5: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/5.jpg)
Construction from Components
![Page 6: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/6.jpg)
Properties Methods Events
A Bean's Public Interface
![Page 7: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/7.jpg)
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
Bean’s Properties
![Page 8: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/8.jpg)
Sample Account Property Balance
![Page 9: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/9.jpg)
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.
Exposing Simple Properties
![Page 10: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/10.jpg)
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.
Exposing Boolean Properties
![Page 11: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/11.jpg)
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)
Exposing Indexed Properties
![Page 12: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/12.jpg)
// 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
Account Bean with a balance Property
![Page 13: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/13.jpg)
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.
![Page 14: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/14.jpg)
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.
![Page 15: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/15.jpg)
Constrained Properties
1) setBalance called2) Account notifies the VetoableChangeListeners of pending change request3) Listeners can optionally throw exception4) balance is updated if no exception is thrown
![Page 16: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/16.jpg)
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.
![Page 17: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/17.jpg)
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 class2) OverdrawListener interface3) code to fire the event4) code to manage the listener chain
Exposing Bean Custom Events
![Page 18: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/18.jpg)
Bean Methods
• To expose a method in the Bean’s public interface, simply make the method public.
![Page 19: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/19.jpg)
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
![Page 20: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/20.jpg)
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
Reflection API
![Page 21: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/21.jpg)
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.
Bean Distribution
![Page 22: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/22.jpg)
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
Summary
![Page 23: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/23.jpg)
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
Outline (Part B)
![Page 24: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/24.jpg)
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
24
ShoeCollection
Shoe
brandbranchnameidquantities
25 Running Montreal Nike 50
Introduction
![Page 25: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/25.jpg)
Client Layer
Presentation Layer
Business Logic Layer
Data Layer
Client Layer
PresentationLayer
Business LogicLayer
Data Layer
Logical Layers Typical Web Implementation
Browser
Database
Application Server
Web Server
Lower Tier
Upper Tier
Middle Tier
25
Three-Tiered Architecture
EJB
Java Beans
![Page 26: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/26.jpg)
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 management26
JBoss Application Server
![Page 27: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/27.jpg)
Bean Types Session Beans => models business processes Entity Beans => models business data
Application Server
EJB Container
Session Bean
Entity Bean
JSP/Java Beans Servlet
Browser
DB
Web ServerPresentation
Layer
Business LogicLayer
Enterprise Java Beans
![Page 28: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/28.jpg)
EJB Home Object
EJB Object Bean Class
Home Interface
Remote Interface
Client
EJB Home Object
EJB Object
EJB Container
JBoss Application Server
Client
Enterprise Java Beans (contd.)
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)
![Page 29: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/29.jpg)
Retrieval of the Home object reference and generation of remote EJB object reference.
EJB Object
Remote Interface
Home Interface
EJB ContainerClient Code
Enterprise Bean
JNDI
Home Object1: Retrieve
reference
2: Return Home Object reference
3: Request newEJB object
Home Object
5: Return EJB object reference
4: Create EJB object
Directory Service
29
Accessing a Business Method
![Page 30: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/30.jpg)
Handling a client request to a business method.
EJB Object
Remote Interface
Home Interface
EJB Container
EJB ObjectEJB Object
Home Object
Client Code
1:Call a Method
4: Return value to client
Enterprise Bean
2: Acquire a Bean, and delegate the method to the Bean
3:Method Returns
30
Accessing a Business Method (cont’d.)
![Page 31: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/31.jpg)
PresentationLayer
Business LogicLayer
Client Layer
Data Layer
JspShoeBrowseJava Bean
JSP Pages
ShoeCollectionSession Bean
ShoeEntity Bean
Web Browser
Tomcat Web Server
JBoss Application Server
<<HTTP>>
<<RMI>>
EJB Container
Servlet Container
Hypersonic database
31
Shoe Distributed Web Application
![Page 32: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/32.jpg)
Build Package
Deploy Run
cs854-WebServer
WEB-INFclasses
libJspShoeBrowse.class
browse.jsp
prev.jsp
mext.jsp
search.jsp
header.html
footer.html
shoe.jarweb.xml
shoe.war
cs854-ApplicationServershoe
Shoe.classShoeHOME.classShoeBean.class
ShoeCollection.classShoeCollectionHome.classShoeCollectionBean.class
shoecollection
utilsShoeExistsException.class
jboss.xmlejb-jar.xml
META-INF
shoe.jar
32
Demonstration of application lifecycle
![Page 33: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/33.jpg)
33
JavaBeans Enterprise JavaBeans
JavaBeans may be visible or nonvisible at runtime.
An EJB is a non-visual, remote object.
JavaBeans are intended to be local to a single process and are primarily intended to run on the client side.
EJBs are remotely executable components or business objects that can be deployed only on the server.
JavaBeans is a component technology to create generic Java components that can be composed together into applets and applications.
Even though EJB is a component technology, it neither builds upon nor extends the original JavaBean specification.
JavaBeans are not typed. EJBs are of two types—session beans and entity beans.
No explicit support exists for transactions in JavaBeans.
EJBs may be transactional and the EJB Servers provide transactional support.
Summary
![Page 34: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/34.jpg)
CORBA Key Concepts
• Com+mon Object Request Broker Architecture
• Location Transparency
• Objects
• Portable
• Standard
![Page 35: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/35.jpg)
Simplified Architecture
• Interface Definition Language(IDL)
• Application Programming Interface(API)
• Object Request Broker(ORB)
![Page 36: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/36.jpg)
CORBA Architecture
Dyn.Inter-face
IDLStub
ORBInterface
IDLSkeleton
ObjectAdapter
Object ImplementationClient
Object Services: naming, events, life cycle, persistence, transactions, concurrency, relationships, externalization, object licensing, properties, object query.
ORB
OS KernelOS Kernel OS KernelOS KernelNetwork
![Page 37: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/37.jpg)
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); };
![Page 38: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/38.jpg)
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 - Manage ORB in Stock Quoter
Client.cpp
![Page 39: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/39.jpg)
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
![Page 40: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/40.jpg)
ef
![Page 41: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/41.jpg)
Implement Get_Stock Method
In stock_factory_i.cpp
// Return Object ReferenceQuoter::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 (); }
Stock_Factory_i.cpp
![Page 42: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/42.jpg)
Implementing Stock InterfaceIn 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
![Page 43: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/43.jpg)
Stock Operations and Attributes
In stock_i.cpp:
// Access objectclass 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
()); }
Stock_i.cpp
![Page 44: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/44.jpg)
Implement Server
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; }
Server.cpp
![Page 45: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/45.jpg)
•CORBA provides a communication infrastructure for a heterogeneous, distributed collection of collaborating objects•Analogous to “hardware bus”
Software Bus
![Page 46: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/46.jpg)
![Page 47: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/47.jpg)
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).
![Page 48: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/48.jpg)
OLE Example
• Pie chart generated by Excel embedded in a word document being displayed in a PowerPoint presentation..
![Page 49: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/49.jpg)
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.
![Page 50: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/50.jpg)
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.
![Page 51: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/51.jpg)
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.
![Page 52: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/52.jpg)
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 95/98/NT/2000 and in . Microsoft plans to support ActiveX controls for UNIX.
• Similar (but different) security issues as applets
![Page 53: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/53.jpg)
Example
Sub
()Resp = Window.Confirm "Use the MS Agent?"If Resp ThenWindow.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='http://activex.microsoft.com/" & _ "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='http://activex.microsoft.com/" & _ "controls/agent/cgram.exe#VERSION=1,5,0,0'>"Document.WriteLn "<" & Chr(47) & "OBJECT>"End IfEnd Sub
![Page 54: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/54.jpg)
Commercial Products : Microsoft COM/DCOM/COM+
Andrew Trevors
Software Architecture Group
![Page 55: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/55.jpg)
Overview
• What is COM / DCOM / COM+?• COM
– Client/Server Model
– Objects & Interfaces
– COM Servers
– COM Clients
– COM Library
– COM Example
• DCOM• COM+
![Page 56: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/56.jpg)
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.
![Page 57: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/57.jpg)
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.
![Page 58: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/58.jpg)
Client/Server Model
ClientApplication
COM
Server
Object
(1) “CreateObject” (2) Locate
implementation
(3) Get objectinterface pointer,return to Client
(4) Call interfacemembers
![Page 59: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/59.jpg)
Objects & Interfaces
• Interface– 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()
![Page 60: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/60.jpg)
COM Servers
• Servers come in three varieties:– In-process
• 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
![Page 61: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/61.jpg)
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
![Page 62: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/62.jpg)
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.
![Page 63: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/63.jpg)
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
![Page 64: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/64.jpg)
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
};
![Page 65: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/65.jpg)
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;
}
![Page 66: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/66.jpg)
COM Example
hRes = CoCreateInstance(&CLSID_STOCK, NULL,CLSCTX_SERVER,&IID_IUnknown, &pStock);
if (SUCCEEDED(hRes)) {// do something with pStock
}else {
// report error}
![Page 67: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/67.jpg)
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
![Page 68: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/68.jpg)
DCOM
In-ProcessObject
ClientApplication
LocalObjectProxy
RemoteObjectProxy
In-Process Server
COM
Client Process
RPC
RPC
LocalObject
Local Server
Stub
COM
Local Server Process
RemoteObject
Remote Server
Stub
COM
Remote Server Process
Remote Machine
![Page 69: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/69.jpg)
COM+
• Transactions– 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
![Page 70: Presentation Outline of Commercial Systems Bahman Part A: Java Beans Part B: Enterprise Java Beans John Corba OLE ActiveX Andrew COM DCOM COM+](https://reader035.vdocuments.us/reader035/viewer/2022062516/56649e405503460f94b31c6f/html5/thumbnails/70.jpg)
COM+
• COM+ Events