59
1 1 Extreme Java G22.3033-007 Session 11 - Main Theme Java Enterprise Web and Application Enabling (Part III) Dr. Jean-Claude Franchitti New York University Computer Science Department Courant Institute of Mathematical Sciences 2 Agenda Summary of Previous Session Enterprise JavaBeans (EJBs) and J2EE J2EE OMA Services J2EE Application Servers CORBA 3 Environments Web Services Enterprise Application Integration (EAI) and Business to Business Integration (B2Bi) Class Project & Assignment #4c

g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

1

1

Extreme JavaG22.3033-007

Session 11 - Main ThemeJava Enterprise Web and Application Enabling (Part III)

Dr. Jean-Claude Franchitti

New York UniversityComputer Science Department

Courant Institute of Mathematical Sciences

2

Agenda

Summary of Previous SessionEnterprise JavaBeans (EJBs) and J2EEJ2EE OMA ServicesJ2EE Application ServersCORBA 3 EnvironmentsWeb ServicesEnterprise Application Integration (EAI) andBusiness to Business Integration (B2Bi)Class Project & Assignment #4c

Page 2: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

2

3

Summary of Previous Session

Java Web-Enabling TechnologyTraditional Web Programming and JavaWeb and Proxy Servers

Java and XMLJava and XML Tools for CLDC ApplicationsJava Servlets and Java Server PagesJava-Based Application Server TechnologyClass Project & Assignment #4b

4

Part I

Enterprise JavaBeans (EJBs) and J2EE Also See Session 11 Sub-Topic 2 Presentation on:

“Using Enterprise JavaBeans”and Session 11 Handouts on:

“The Enterprise JavaBeans (EJB) Server Component Model”“Technical Introduction to Enterprise JavaBeans”

“Deploying and EJB Application”“Introduction to Enterprise JavaBeans”

“Building a Stateless Session Bean”“Using Enterprise JavaBeans”

“EJB Application Servers” “Enterprise JavaBeans FAQs”

“Is EJB Right for Me?”

Page 3: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

3

5

J2EE Platform:The Whole is Greater than the Sum of its Parts

6

J2EE: A Complete Computing Environment

Platform SpecificationLists required elements of the platformLists policies to follow for a valid implementation

Reference ImplementationSemantically correct prototype to test against

Compatibility Test SuiteAPI-level compatibility, component-level tests,end-to-end compatibility

Application Programming Model: java.sun.com/j2ee

Page 4: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

4

7

Enterprise JavaBeans Container

8

Enterprise JavaBeans and Services

Application ServerContainer

Enterprise JavaBean

ServicesLifecycle

Transaction

Security

Load Balancing

Error Handling

Persistence*

* In the EJB 1.0 specification support for persistence services isoptional. In the EJB 1.1 specification it is mandatory.

Threading

Page 5: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

5

9

Sample DemoBean Application Architecture

10

J2EE: Components

Enterprise JavaBeansServer-side solutions can be built without regardsfor the database, transaction server, or applicationthey run on

ServletsRun on vast majority of web servers

JavaServer PagesDynamic content leverages off the full power ofJava

Page 6: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

6

11

The Three Cs:Components, Containers, Connectors

12

J2EE: Containers

Containers provide high-performance, scalableenvironments for J2EE-enabled serversJ2EE-enabled servers support EJB-basedcomponents, servlets, and JSP-based pages

Page 7: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

7

13

J2EE: Connectors

Connectors allow J2EE-based solution to preserve,protect, and leverage off of existing enterpriseinvestments

14

J2EE: Unifying the Three Cs

Single platformStandard platform-independent technologyApplications built with components can be run onany J2EE server, and are able to talk to enterprise-class systems that exist today

Page 8: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

8

15

Creating an EJB ComponentExample:try {

// get the JNDI naming contextContext initialCtx = new InitialContext ();

// use the context to lookup the home interfaceCheckingHome home =

(CheckingHome) initialCtx.lookup ("checking");

// use the home interface to create the enterprise BeanChecking server = home.create ();

// invoke business methods on the beanserver.createAccount (1234, "Athul", 1000671.54d);

}catch (Exception ex) {ex.printStackTrace ();

}

16

Enterprise JavaBeans (EJBs)

Enterprise Application PlatformsComponent Modeling with EJBsServing EJBsSee Session 11 Handouts on EJBsSee Session 11 Sub-Topic 2 Presentation on UsingEnterprise JavaBeans

Towards “Model-Centric” Application Development

Page 9: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

9

17

Entity Beans in EJB Application ServersRepresent sets of data (all or part of a database table or a view)Functionality limited to creation, update, and deletion of dataManage persistence of dataMaintained in a cacheCan be container or bean managed

Container-managed beans are under the control of an applicationserver for persistence and transaction managementContainer-managed beans are restricted in the type andcomplexity of data they can manageBean-managed beans rely on user provided code for persistenceand transaction management

18

Session Beansin EJB Application Servers

Handle the business logic of EJB applicationsMay use multiple entity beans to gather application data

Page 10: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

10

19

Session and Entity Beans

Application Server

ATMSession

Bean

AccountEntity Bean

B

Transfer $100 fromAccount A to Account B

Subtract

$100

Add $100

Database

Update Account

Update Account

AccountEntity Bean

A

20

EJB Physical Partioning

WebServer

WebServer

WebServer

EJBServer

EJBServer

EJBServer

WebBrowser

WebBrowser

WebBrowser

Database

EJBs communicate to thedatabase through Java DatabaseConnectivity (JDBC). Theapplication server pools andmanages database connectionsfor maximum efficiency.

The application server distributesload across all available EJBservers and provides fail-over ifone of the EJB servers goesdown.

A Domain Name System (DNS)server routes incoming browserrequests evenly across a pool ofweb servers. This technique isreferred to as DNS round-robining.The application server providesfail-over if one of the web serversgoes down.

Page 11: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

11

21

EJB Component/Programming Model

22

Sample Java Application Server Services

Page 12: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

12

23

Part II

J2EE OMA Services

Also See Session 8 Handouts on:“JNDI”

“Jini - The Universal Network?”“Jini Connection Technology”

“Understanding Java Messaging and JMS”“JTS - Demarcated Transactions Support”

and Session 9 Main Theme Slides on:“Security in J2EE Web-Enabled Enterprise Applications”

and Session 11 Sub-Topic 1 Presentation on”“Java 2 Security Summarized”

24

J2EE OMA ServicesActivation Services

RMI Activation FrameworkJavaBeans Activation Framework

Naming and Directory ServiceJNDI and JNDI SPIs for CosNaming, RMI, NIS, NDS, LDAP

Trading ServiceJini

JTA and JTSMessaging Services

JMSJavaMail

Security ServicePersistence Service

Page 13: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

13

25

Java Messaging Service

Handles both Synchronous and Asynchronous MessagingTopic / point-to-point messagingQueue / publish-and-subscribe messaging

Common Way for Java Programs to Create / Send /Receive / Read Enterprise MessagesUsed in Conjunction with MOM Products

e.g., TIBCO, MQSeries

Different Message TypesTextMessages, MapMessages, ObjectMessages, etc.

26

Java Messaging Service (JMS)(connection, session, and messaging facilities)

Page 14: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

14

27

JMS Synchronous Subscriber Example// Lookup admin objects on default host

InitialContext ic = null;

ic = new InitialContext ();

ic.bind ();

// Lookup connection factory and Topic names

TopicConnectionFactory tcf =

(TopicConnectionFactory) ic.lookup ("primaryTCF");

Topic topic = (Topic)ic.lookup("primaryTopic");

// Dispose of InitialContext Resources

ic.dispose();

// Create and start a topic connection

TopicConnection topicConnection = tcf.createTopicConnection();

topicConnection.start ();

System.out.println("Creating topic session: not transacted, auto ack");

28

JMS Synchronous Subscriber Example(continued)

// Create topic session on the connection just created

TopicSession topicSession =

topicConnection.createTopicSession(false,1);

// Create subscriber

TopicSubscriber topicSubscriber =

topicSession.createSubscriber(topic);

// Listen for messages synchronously (blocking receive)

while (true) {

TextMessage textmsg2 = (TextMessage)topicSubscriber.receive();

System.out.println("Received : " + textmsg2.getText() );

}

Page 15: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

15

29

JMS v.s. RMI

RMILimited client connectionsPoor performance (no resource pooling, no store-and-forward, noload balancing)No guaranteed messaging and securityStatic client/servers with location dependent code

JMSSpecification / vendors address inherent RMI limitationsJMS may be implemented on top of RMI(java.rmi.server.RMISocketFactory) or sockets (java.net.Socket)Socket-based implementations are better throughput

30

JMS v.s. JavaSpacesJavaSpaces

Distributed persistence and data exchange mechanism for JavaJavaSpace data is stored in entries (typed grouping of fields)Client API allows writing, lookup, and removal of entriesJava programs/applets can use JavaSpaces to store their stateAPI includes support leasing, transactions, and eventsRuns on top of RMI and provides an alternative to JMSOnly supports transient objects on a small scale

JMSSupports large scale transient objectsDesigned to support access beyond firewallsSupports high performance and response times

Page 16: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

16

31

JMS v.s. InfoBus

InfoBusSolution for interconnecting Java components (e.g., Lotus’ KonaApplets) or arbitrary Java classesVirtual traffic cop for components on a web pageTags applets by content that can be exchanged among componentsJavaBeans components registered can exchange data with appletsProvides data producer, consumer, and controller modulesDesigned for components working together in the same JVM

JMSSupports communication across components that go beyond asingle JVM

32

JMS v.s. JSDT

Java Shared Data ToolkitLibrary that allows the addition of collaborative features to Java applets andapplicationsSupports the creation of network centric applications

e.g., shared whiteboards, chat environments, remote presentations, sharedsimulations, data distribution for enhanced group data workflow, etc.

Supports many simultaneous users and uses raw IP delivery (highlycollaborative, and high bandwidth services)Designed to work across the Internet (via HTTP) and firewalls

JMSNon real-timeCan use raw IP for delivery or higher-level protocols (SMTP, RMI, Javasockets)

Page 17: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

17

33

When to Use JMS

Use JMS in environments where CORBA has not beenembraced and where Java applications needs to transactasynchronouslyUse RMI for synchronous messaging where performance isnot an issueAlthough inefficient, JMS can be used across the firewallvia HTTP tunneling (same as RMI/no data push fromserver to clients)Use to isolate programmers from low-level transport APIswhile they focus on delivering enterprise-wide messaging

34

Java Transaction Service (JTS)EJB model implements two-phase commit, transaction contextpropagation, and distributed transactionsTransaction is an “ACID” unit of work

Atomic, Consistent, Isolated, DurableEJB transaction policies are defined at deployment time

Bean-demarcated transactionsClient-demarcated transactions

Transactional scopeScope includes any bean that participate in the bean method

Transaction scope is traced by looking at the thread of execution,and is also determined by transaction attributes

Page 18: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

18

35

Transaction Attributes

Attributes may apply to a whole bean or individual methodsSix attributes are supported by container to specify the way itmanages transaction:

TX_NOT_SUPPORTEDTX_SUPPORTSTX_REQUIREDTX_REQUIRES_NEWTX_MANDATORYTX_BEAN_MANAGED

36

TX_NOT_SUPPORTED

Container invokes bean methods without a transaction contextWhen bean method is invoked from within a transaction context,the container suspends that transaction context

Page 19: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

19

37

TX_SUPPORTSContainer includes the bean or method within the transaction scopein which it is invokedIf the bean method is invoked without a transaction context, thecontainer invokes the bean without a transaction contextWhen bean method is invoked from within a transaction context,the bean and everything it accesses becomes part of the transaction

38

TX_REQUIREDContainers invokes the bean within a transaction scopeWhen bean method is invoked from within a transaction context,the container invokes the bean from within that transaction contextWhen bean method is invoked without a transaction context, thecontainer creates a new transaction context and passes it to anybeans that are used by this bean method

Page 20: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

20

39

TX_REQUIRES_NEW

Container always invokes the bean method with a new transactioncontext regardless of existing transaction contextsNew transaction context is passed to all beans or resources used bythe bean method

40

TX_MANDATORYContainer always invokes the bean method within the transactioncontext associated with the clientjavax.jts.TransactionRequired Exception is raised if the beanmethod is invoked without a transaction contextTransaction context is passed to any beans used by the beanmethod

Page 21: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

21

41

TX_BEAN_MANAGEDContainer does not manage the bean class’ transactional contextThe bean class uses JTA’s javax.jtx.UserTransaction to explicitelymanage transaction boundariesIf one method uses this attribute, all methods must managetransaction on their ownMore efficient for EJBs that provide stateless services

42

SQL Transaction Isolation LevelsDetermines how isolated transactions are for read purposesIsolation levels are defined in the ANSI/ISO SQL92 standardsPrevents the following between concurrently executingtransactions:

Dirty reads: transaction reading uncommitted data from anothertransactionNon repeatable reads: transaction rereading data previouslyread and finding that another commited transaction hasmodified or deleted the dataPhantom reads: transaction executing a query and finding outthat another commited transaction inserted addition rows in theset of records returned by the query

Page 22: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

22

43

EJB Isolation LevelsLevels mapped in JDBC to static variables defined injava.sql.Connection interfaceAll methods invoked in the same transaction must have sameisolation levelTRANSACTION_READ_UNCOMMITTED

Transaction can read uncommitted dataTRANSACTION_READ_COMMITTED

Transaction cannot read uncommitted dataTRANSACTION REPEATABLE READ

Transaction cannot change data read by another transactionMore constrained than “read committed”

TRANSACTION_SERIALIZABLETransaction has exclusive read/update privileges via data locking

44

EJB Isolation Levels(continued)

TX_SERIALIZABLE (continued)Does to data what the synchronized keyword does to methodsOther transactions can neither write nor read the same dataMost restrictive to guarantee the highest level of data integritySlower as simple reads must wait in lineEJBs need to be fine-tuned for performance by leveraging thelevel of reads that will occur on the database, and its handling oflocking and choice of isolation level

Page 23: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

23

45

Client-Demarcated TransactionsJTS specification is based on CORBA OTS 1.1

Implements a Java transaction manager that sits between anapplication and one or more transaction-capable resourcemanagers (e.g., database servers, messaging systems, etc.)

JTS includes the JTA APIJTA API can be used to group operations into logical transactionsPackages: org.omg.CosTransactions and org.omg.CosPortability

http://java.sun.com/products/jts/javadoc/org/omg/CosTransactions/package-summary.html

JTA services:Transactional operations in client applicationsTransactional operations in app. servers (on behalf of clients)Global transaction management in a Java transaction manager (tocoordinate multiple resource managers)

46

JTA Usage (http://java.sun.com/jta)EJBs use JTA’s high-level transaction manager interface

javax.transaction.UserTransaction interface is exposed to EJBprogrammers (required by EJB spec.) to communicate with thetransaction manager and control transaction boundariesImportant methods:

public void begin() - nested transaction support up to TMpublic void commit() - may throw RollbackExceptionpublic int getStatus()public void rollback() - remove Transaction/thread associationpublic void setRollbackOnly() - used to veto a transaction explicitelypublic void setTransactionTimeout()

EJB server uses JTA’s high-level transaction manager interface and astandard Java mapping of the X/Open XA protocol(javax.transaction.xa.package)

Page 24: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

24

47

Getting Transaction AccessAll methods must have the TX_BEAN_MANAGED attributeBean methods can access transaction service viagetUserTransaction() in javax.ejb.EJBContext interface (parentinterface for SessionContext and EntityContext)public void doTransaction(String customerName, String

password,int age) throws MyException{try{UserTransaction trans=sessionctx.

ctx.getUserTransaction().begin();Context ctx = new InitialContext();TranstestHome home = (TranstestHome)ctx.lookup("ejb.TranstestHome");Transtest bean = home.create();bean.putUser(”xyz","word");bean.putAge(”xyz",10);trans.commit();}catch(Exception e){

trans.rollback();throw new MyException("an exception occurred" +e);}}

48

Getting Transaction Access(continued)

JTA allows exposure of the UserTransaction object via JNDIApproach compromises portability as other EJB servers may notsupport this approachContext ctx = new InitialContext();

UserTransaction utx =

(UserTransaction)ctx.lookup("ajndiname");

utx.begin(); // do work utx.commit();

In the case of entity beans and stateless session beans:Transaction managed via UserTransaction must begin and end inthe same methodReason is that this type of bean instances are shared across manyclients via instance pooling and instance swapping on the server

Page 25: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

25

49

Getting Transaction Access(continued)

Stateful beans:Allow UserTransaction object to span multiple method as there is only oneinstance associated with a client and it maintains conversational stateBean/transaction state is consistent even if the container may internallyactivate/passivate to leverage server resourcespublic class MyStatefulBean implements SessionBean {

public SessionContext ctx;

public void setSessionContext(SessionContext ctx){

this.ctx=ctx;}

public void method1(){

ctx.getUserTransaction().begin();

// do some work}

public void method2(){

// do some more work }

public void method3(){

// do yet some more work and finally commit

ctx.getUserTransaction().commit();}

50

Getting Transaction Access(continued)

Stateful beans (continued)Repeated calls to getUserTransaction() return a reference to the sameUserTransaction object.UserTransaction.getStatus() may be called to check the UserTransaction stateTransaction state between method calls may be cached and database updatespostponed to improve performancejavax.ejb.SessionSynchronization allows the server to inform a stateful sessionbean of the various stages in the transaction by invoking callback methods

afterBegin():notifies bean that a new transaction has started (invoked priorto the delegation of business methods to the instance)afterCompletion(): notifies bean that transaction has completed (should beused to reset instance variables)beforeCompletion(): notifies bean that transaction is about to be commited

Client-demarcated transactions across methods should be avoided as they areoverly complex and may lock up resources

Page 26: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

26

51

Exception Handling and TransactionsException handling depends on the type of exception, isolation level, andtransactional attribute of the bean methodAny exception thrown outside the transaction scope causes a rollbackExample involving two stateless session beans (MiddleBean/TranstestBean)

52

Exception Handling and Transactions(continued)

Stateless beans deployment scenarios for the example suggested in theprevious slide:

Page 27: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

27

53

Exception Handling and Transactions(continued)

Illustrated explanation of the three possible scenarios that result fromthrowing a deliberately planted exception as per the example suggested:

54

Exception Handling and Transactions(continued)

Example Case 1:Transaction context is propagated to TranstestBeanWhen exception is thrown in second bean, it falls within the transaction context andpropagates upContainer traps the exception in the first bean and rolls back the transaction

Example Case 2:Second bean does not participate in the transaction, and the transaction context is notpropagated to itException thrown falls outside the transaction context and is detected by thecontainer that rolls back the transactionThere is no way to undo any changes made by the second bean

Example Case 3:The second bean has a new transaction context for each methodThe transaction of the exception-throwing method is rolled backThe exception moves up and the container rolls back the initial transactionSecond method executes successfully in its own transaction

Page 28: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

28

55

Exception Handling and Transactions(continued)

Exception handling guidelines:If an exception is meant to signify that the method cannot completesuccessfully, it should not be caughtIf an exception is caught, the method should try to correct the problemand continueIn order for the transaction to be rolled back, a method must throw anexception and propagate out of itApplication exception will not cause rollback if they are thrown andcaught within the transactional scopeRuntime or unchecked exceptions always cause a transaction to rollbackregardless of the transaction attribute or transactional scope

56

Exception Handling and Transactions(continued)

Unilateral Decisions:Transaction manager allows certain heuristic/speculative decisions basedon the state of participating resources in a transaction and the underlyingtwo-phase commit protocolDecisions occur when one of the resources in the transaction unilaterallydecides to commit or rollback the transaction (without TM permission)Resulting exceptions caused by breaking a transaction atomicity:

javax.transaction.HeuristicCommitExceptionRollback requested but all updates were committed instead

javax.transaction.Heuristic.MixedExceptionSome updates were committed and others were rolled back

javax.transaction.HeuristicRollbackExceptionAll relevant updates were rolled back

Page 29: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

29

57

Jini’s Service-Based Architecture

58

Jini’s Relationship to Other Java Services

Page 30: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

30

59

Part III

J2EE Application Servers

Also See Session 11 Handouts on:“Application Servers Comparison”

“WebSphere by IBM”

60

Java-Based and J2EEApplication Servers

Third-Party Vendorshttp://www.app-serv.com/contend.html

See:http://www.mgm-edv.de/ejbsig/ejbservers.html http://www.javaworld.com/javaworld/tools/jw-tools-appserver.htmlhttp://www.appserver-zone.com/http://www.devx.com/devxpress/gurl.asp?i=1X1095373X7360

WebSphere Architecture and Programming Model:http://www.research.ibm.com/journal/sj/373/bayeh.html

Page 31: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

31

61

JBoss.org Jboss 2.4.4(J2EE Support)

See:www.jboss.orghttp://www.jboss.org/documentation/HTML/index.html

J2EE Specifications SupportEJB 1.1 (partial 2.0), JSP 1.1, Servlets 2.2, JNDI 1.0,JDBC 1.2/2.0, JavaMail / JAF, JMS 1.0.1, JTA 1.0/JTS,JMX 1.0, JAAS 1.0

RMI 1.0 SupportIIOPHTTP

62

JBoss.org Jboss 2.4.4(differentiators)

Component ArchitectureBasic EJB Container (low memory/disk space requirements)Java Management Extension (JMX) InfrastructurePlug and Play Services: JBossMQ (JMS), JBossMX JavaMail),JBossTX (JTS/JTA), JBossSX (JAAS), JBossCX (JCAconnectivity), JBossCMP

Unique FeaturesBuilt-in SQL database server (Cloudscape not required)Hot deploy, Runtime generated stubs/skeletons objects(distributed invocation enablers)

See References:http://www.jboss.org/testimonials.jsp

Page 32: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

32

63

JBoss.org JBoss JMX Infrastructure(Version 2.4.4 for JVM 1.3+)

^TomCat Servlet Container

Jetty Web Server/Servlet Container

64

JBoss.org Jboss 2.4.4(security)

EJB 1.1 security model and custom security via security proxy layerEJB 1.1 declarative security via JAAS LoginModules and Subjects

Business methods do not contain any security related logic

<method-permission> <role-name>employee</role-name>

<method>

<ejb-name>EmployeeService</ejb-name>

<method-name>*</method-name>

</method>

</method-permission>

EJB 1.1 Custom security APIjava.security.Principal getCallerPrincipal()boolean isCallerInRole(java.lang.String roleName)

Page 33: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

33

65

JBoss.org Jboss 2.4.4(standard ejb-jar.xml security elements)

66

JBoss.org Jboss 2.4.4(database connections)

Resource adapter architecture:Resource adapter (ConnectionFactory)JBoss (ConnectionManager)Resource adapter (ManagedConnectionFactory)ManagedConnection

Connections possible via :Vendor supplied resource adapter (InstantDB included)JDBC drivers wrapped into a JCA resource adapter

Minerva pools (multiple pools per data source)BMP, and CMP support (via JAWS O/R mapper)

Page 34: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

34

67

JBoss.org Jboss 2.4.4(other features)

ManagementRemote monitoring and administration

JVM and Platform CertificationJDK 1.3 on Win 95/98/NT/2000, Solaris, Linux, etc.

Tools SupportJBuilder, Visual Age, and Forte

Enterprise Assurance FeaturesLow memory/disk space needs, security, performance

Application Support and Proprietary ExtensionsJbossServer, JMX Infrastructure, JBossMQ, JBossMX, JBossTX,JBossSX, JBossCX, JBossCMP

68

BEA WebLogic 6.1(J2EE Support)

EJB 2.0, Servlet 2.3, JSP 1.2, JNDI, JDBC, JMS, JTA/JTSWeb Services (SOAP and WSDL support)J2EE Connector Architecture 1.0XML Support:

JAXP 1.1, SAX 2.0, DOM Level 2, W3C Schemas

RMI 1.0 SupportIIOPHTTPT3 (rich sockets)

Multiplexed, bi-directional, asynchronousOne socket per thread

Page 35: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

35

69

BEA WebLogic 6.1(differentiators)

Unique FeaturesJMS Performance Enhancements

Optional asynchronous I/ODeployment descriptor editing utilities

Tuxedo IntegrationOracle optimizationsEJB caching improvementsetc.

See References:http://www.beasys.com/products/weblogic/server/index.shtml

70

BEA WebLogic Application Server 6.1

Page 36: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

36

71

BEA WebLogic 6.1(Security)

Secure Socket LayerRSA EncryptionX.509 digital certificatesACL down to the method level by users/groupsSecurity realms

Can import information from otherauthorization/authentication systems into the ACL

Firewall tunneling via HTTP and HTTPS tunnelingSecurity audit and logging interfaces

72

BEA WebLogic 6.1(Data Stores)

RDBMS support via JDBCOODBs (e.g., Versant, ODI)Object relational mapping tools

(e.g., WebGain’s TOPLink)Cache accelerators:

TimesTen’s Front-Tier

Page 37: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

37

73

BEA WebLogic 6.1 Database Connectivity

74

BEA WebLogic 6.1(Supported Client Types)

Thin ClientsWeb Clients (e.g., HTML, WML)

Fat ClientsProgrammatic Clients (e.g., Java applets, Javastandalone applications, COM clients)Use XML/RMI to communicate with server

Client AdministrationZero Administration Client (ZAC)

Page 38: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

38

75

BEA WebLogic 6.1(Management)

Swing-based ConsoleMonitoring/Update of Applications and ClustersViewing of Detailed Execution Information

Servlets, EJBs, JMS queues/topicsThird Party Management Framework Support via SNMP

76

BEA WebLogic 6.1(JVM and Platform Certification)

PlatformsLinuxIBM OS/390Sun SolarisNT and Windows 2000

Certified JVMs listed on the BEA Web Site

Page 39: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

39

77

BEA WebLogic 6.1(Tools Support)

IBM VisualAge for JavaKLGroup JprobeWebGain Studio

Visual Café Enterprise SuiteMacroMedia DreamWeaverTendril Structure BuilderTOPLink O/R Mapping Tool

78

BEA WebLogic 6.1(Enterprise Assurance Features)

PerformanceHigh Performance HTTP Web ServerPlugins: Netscape (NSAPI), IIS (ISAPI), ApacheSocket Handling via interrupts (performance pack)Clustering (load balancing, automatic failover)

ReliabilityScalability

Page 40: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

40

79

BEA WebLogic 6.1(Application Support and Proprietary Extensions)

Common logs, instrumentation, configuration, mgmt, etc.dbKona and htmlKona (OO interface to HTML)The WorkSpace (thread-safe hash table)Scheduling (define actions or triggers)File I/O (seamless manipulation of remote files)CGI Support (to support migration of first generation apps)Connection Filtering (block/allow connections fromclients)

80

IBM WebSphere Application Server (WAS) 4.0(J2EE Support)

J2EE Specifications SupportEJB 1.1, JSP 1.1, Servlet 2.2, Servlet Extensions, JNDI, JDBC,JMS, JTA/JTSJ2EE Web application (.war) interface with Tivoli Policy DirectorJava 2 Connectivity (J2C) and J2EE-based connectors support(mySAP, PeopleSoft, CICS, IMS, Oracle, J.D. Edwards, etc.

RMI 1.0 SupportIIOPHTTP

Requirements: 384MB (NT/2000) of memory, 180 MB ofdisk space, 500MHz processor or faster

Page 41: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

41

81

IBM WebSphere Application Server (WAS) 4.0(differentiators)

Performance:Connection pooling, and dynamic EJB reloadingPerformance monitoring interface (PMI) APIsPerformance tuning wizards, and log analyzers

Unique Features:Java-based “silent” installXML parse XML4J V3.1.1Websphere (cached) JNDI naming (com.ibm.websphere.naming)Interoperability between Web Services and J2EE (Lotus Domino, WS Commerce Suite,WS B2B integrator, MQSeries, WS Everyplace Suite, WS Business Components,VisualAge for Java and WS StudioApplication and migration tools (logging, tracing, debugging, deployment/assembly)

See References:http://www-4.ibm.com/software/webservers/appserv/http://www-4.ibm.com/software/webservers/studio/

82

IBM WebSphere Application Server (WAS) 4.0(http://www.research.ibm.com/journal/sj/373/bayeh.html)

Page 42: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

42

83

IBM WebSphere Application Server (WAS) 4.0(HTTP server clustering)

84

IBM WebSphere Application Server (WAS) 4.0(servlet engine)

Page 43: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

43

85

IBM WebSphere Application Server (WAS) 4.0(JavaServer subsystem)

86

IBM WebSphere Application Server (WAS) 4.0

Page 44: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

44

87

IBM WebSphere Application Server (WAS) 4.0(features - slide 1 of 2)

SecurityJ2EE roles-based authorizationHardware crypto accelerator and smart cards

Data StoresSequelLink JDBC drivers, Oracle, Microsoft SQLServer, Informix, Sybase, DB2 (integrated)

Supported Client TypesWeb clientsProgrammatic clientsWeb Services clients

88

IBM WebSphere Application Server (WAS) 4.0(features slide 2 of 2)

JVM and Platform CertificationJDK 1.3 across OS platformsWindows NT/2000, Solaris, AIX, HP-UX, Linux, OS/390

Tools SupportWebSphere Studio 4.0

Enterprise Assurance FeaturesPerformance, reliability, scalability

Application Support and Proprietary ExtensionsJMS-XA/MQSeries, TXSeries, Java/C++, CORBA, COM+

Page 45: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

45

89

Other Commercial J2EE Environments

Borland AppServeriPlanet.com iPlanetSybase EAServerOracle 9iIONA iPortalXoology ConcertoAligo M-1Advanced Network Systems WebIx

90

Part IV

CORBA 3 Environments

Page 46: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

46

91

CORBA 3 EnvironmentsSee:

http://ditec.um.es/~dsevilla/ccm/Implementations (mostly open source):

GOAL Group OpenCCM - http://corbaweb.lifl.fr/OpenCCM/ExoLab.org OpenCCM - http://corbaweb.lifl.fr/OpenCCM/iCMG K2-CCM (C++) - K2-CCMMICO/E (Eiffel ORB) - MicoCCM pageJavaCCM - http://dog.team.free.fr/details_javaccm.htmlTAO Group - http://www.cs.wustl.edu/~schmidt/TAO.htmlIONA iPortal (no CCM) - http://www.iona.com/products/ip_ipas_home.htmOther companies: Eurescom/GMD/Humboldt U, ComputationalPhysics/Photon Research, Sprint, ONE, Siemens, Sourceforge MI-3 (“MissionImpossible 3”) and CIF projects (http://sourceforge.net/projects/cif/), etc.

See Session 3 Sub-Topic 1 Presentation on “CORBA 3”

92

Generic CORBA 3 Platform

Page 47: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

47

93

Part V

Web Services

94

Content, Discovery, Universal access, andIntelligent Software Agents

UDDI: Universal Description, Discovery, and IntegrationIndustry-wide effort to bring a common standard for business-to-business(B2B) integrationSet of standard interfaces for accessing a database of web servicesSee UDDI Browser at http://www.soapclient.com/uddisearch.htmljUDDI (pronounced "Judy") is an open source Java-based implementation ofa UDDI registryAlso see

http://www.sun.com/software/xml/developers/uddi/http://www-3.ibm.com/services/uddi/index.htmlhttp://uddi.microsoft.com/default.aspxhttp://www.oasis-open.org/cover/uddi.htmlhttp://www.itpapers.com/cgi/SubcatIT.pl?scid=436

Intelligent Software Agents: ATLAS, Aglets, etc.

Page 48: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

48

95

XML-Based e-Services Protocols andArchitectures

XML-RPC and Peer-to-Peer Computinghttp://xml.coverpages.org/xml-rpc.html

Simple Object Application Protocol (SOAP)http://soap.develop.com/xmlrpc/

Universal Description, Discovery, and Integration (UDDI)Web Service Definition Language (WSDL)

http://www.w3.org/TR/wsdl

Pervasive devicesResource Description Framework (RDF)

Platform for Internet Content Selection (PICS)Platform for Privacy Preferences (P3P)Channel Definition Format (CDF)Rich Site Summary (RSS)Blocks Extensible Exchange Protocol (BXXP)

96

XML-Based e-Services Protocols andArchitectures (continued)

XML Protocol (XMLP): XML-Based MessagingSystems

Standardized application to application XML messaging (viaHTTP, and MQSeries)

XML and User Identification/SecurityXML and Databases

XML and JDBCXML Extensions and Tools for Oracle, Informix, IBM DB2, andMicrosoft SQL Server

Transaction Authority Markup Language (XAML)Coordinated processing of transaction-supporting web servicesbetween internal fulfillment services and external services

Page 49: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

49

97

XML-Based e-Services Protocols andArchitectures (continued)

Sun’s Open Net Environment (ONE)HP’s NetAction/e-speak platformOracle’s Dynamic Services platformMicrosoft .NET platformIBM WebSphere Architecture (WSA)platform

98

Microsoft .NET PlatformSmart Devices + Windows XP + Web Services

http://www.microsoft.com/netFirst set of Microsoft Web Services

http://www.microsoft.com/net/hailstorm.asp

Page 50: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

50

99

Part VI

EAI and B2Bi:Enterprise Application Integration and Business to

Business Integration

Also See Session 11 Sub-Topic 3 Slides and Handout on:“Enterprise Application Integration”

100

Enterprise Application Integration (EAI)XML Applications Categories:

XML Server-Side POP FrameworksUser Interface and Presentation Related Contexts

XML EAI (MOM) FrameworksSimple Data Representation and Exchange

Web ServicesMessage-oriented ComputingTowards “Loosely Connected” Component-Based Architectures

See article athttp://java.sun.com/features/2001/02/xmlj2ee.p.html

See Session 11 SubTopic 3 Presentation on EAISee Session 11 Handout on EAI

Page 51: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

51

101

XML & DBMSs ComparisonBoth separate data from rendition/presentation infoSimilar languages

DBMSs: Forms and Reporting, DDL, DQL, DCLXML: XSL, XQL, and processing instructions

No DML in XMLXML is paired with a scripting or programming language

Validation capabilitiesDBMSs: datatyping, relationship constraintsXML: data type validity and semantic consistency checks

XML can handle data too complex for some databasesXML interchangeable form of data vs. multidatabases

102

MOM Application Development Tools

Serializing Java objects into XML usingreflection

Sims Computing lightweight XML messagingframework (based on JMS)xmlBlaster Message Oriented Middlewareproject

MOM platform that uses XML for the messagemeta-data and quality of service informationMessages can be filtered using XPath expressionswhich match against the XML header document

Developing MOM applications using theSAX/DOM APIs

Page 52: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

52

103

B2Bi: B2B commerce and EnterpriseApplication Integration (EAI)

B2Bi is based on the transformation and routingof XML documentsB2Bi patterns:

Direct Application IntegrationData ExchangeClosed Process IntegrationOpen Process Integration

Existing Frameworks:WebMethods B2Bi EAI frameworkMQSI (MQSeries Integrator)

See STP/T+1 in Sub-Topic 1/2 Presentation

104

B2Bi Direct Application IntegrationArchitecture

Page 53: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

53

105

B2Bi Direct Application IntegrationRequirements

Ability to interact directly with applicationAPIsIntegration brokers with built-in support foradapters, transformations, and asynchronouscontent0based routingSame Integration Broker on both endsSecure transport, componentauthentification, and user authorizationsFederated security control

106

Data Exchange B2BiArchitecture

Page 54: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

54

107

Data Exchange B2BiRequirements

Translation of data native to an applicationinto a common document format, andtransmission via a gatewayNo constraints on the presence ofIntegration BrokersB2B transactions enabled via a commondata exchange format

108

Closed Process Integration B2BiArchitecture

Page 55: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

55

109

Closed Process Integration B2BiRequirements

Principal participant responsible formanaging processesOther participants are secondary, and do nothave visibility into the entire processRequires the introduction of businessprocess integration (BPI) services

B2Bi product offerings are beginning toincorporate BPI as an essential componentIn this case, B2Bi enables the integration oflogical business process elements expressed asactivities rather than data

110

Closed Process Integration B2BiArchitecture

Page 56: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

56

111

Closed Process Integration B2BiRequirements

Introduces the notion of shared processesrather than operating from a centralizedmaster process manager modelEach participant is actively managingbusiness processes within its domainThe BPI layer must support fine-grainedcontrol of managed processes

112

EAI Frameworks and XMLXML complements EAI technology

Powerful meta languageSimplicitySeparation of content and presentation formatCommon open standard

EAI Frameworks must address thelimitations of XML

Limited Semantics InterpretationLack of data transformation facilitiesInefficiencies of text-based documentsAbsence of component-based routing

Page 57: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

57

113

EAI Provides Data Transformations

114

Efficiency: Binary Objects on the Wire

Page 58: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

58

115

Architecture Frameworks (ongoing)CORBA & Applets (e.g., VisiBroker, and ORBacus)Web Servers (e.g., Apache), Servlet & JSP Engines(e.g., Tomcat, JRun)J2EE Application Servers (e.g., JBoss, WebLogic)J2ME CLDC MIDP/PADP configuration and profilesXML Parsers (e.g., Xerces J)XML server-side POP frameworks (e.g., Cocoon)XML EAI frameworks (e.g., WebMethods)IDEs (e.g., JBuilder), and JavaBeans Development Kit(e.g., BDK)

116

Assignment

ReadingsBuilding Java Enterprise Systems: Part VII, 34-38Using Java 2 Enterprise Edition: Parts I, III, and XSlides and handouts posted on the course web site

Assignment #4c: While using the same specifications as for Assignment #3a,implement a new version of your application using a “Delegate”EJB Architecture using BEA’s WebLogic Server 6.0. Detailsregarding the proposed architecture are available at:http://www.weblogic.com/docs51/classdocs/corba.html#code

Page 59: g22 3033 007 c111 - nyu.edu · 3 5 J2EE Platform: The Whole is Greater than the Sum of its Parts 6 J2EE: A Complete Computing Environment QPlatform Specification QLists required elements

59

117

EJB/CORBA Interoperability(http://www.weblogic.com/docs51/classdocs/corba.html#code and

http://www.javaworld.com/javaworld/jw-12-1999/jw-12-iiop_p.html)