44
TRAINING & CONSULTING Transactions and J2EE Gie Indesteege Instructor & Consultant [email protected] JavaPolis 2003

JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Transactionsand J2EE

Gie IndesteegeInstructor & [email protected]

JavaPolis 2003

Page 2: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

The Answer to Your Questions

• What is a transaction?• Different transaction types?

• How can J2EE managetransactions?

Page 3: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Abis Training and Consulting

High-level technological ICT services• Training• Consulting

• Host basedtechnology

• Databaseconsolidation

• Reuse &integration

www.abis.be

OS/390z/OS

TSOCICS

IMS/DC

COBOLVisualAge Generator

SQLServerDB2IMS/DB DB2 UDB Oracle

UNIXAIX

NTW2000

MQSeries

XML

Customer Base

Tech

nolo

gy

OO AD

JavaVisualAge Java

WebSphere

Traditional AD

Page 4: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Agenda

� Transaction: definitions and glossary� Transaction participants� Transaction types� J2EE transactions� Q & A

Page 5: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Transaction: Definitions

• “Set of related operations that must becompleted together”

•“Atomic Logical Unit of Work,• that must be

•treated in a coherent and reliable way.”

Page 6: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Transaction: Glossary

� A tomicity� C onsistency� I solation� D urability

Transaction demarcation/boundaries

Transaction properties

� Commit� Rollback

Page 7: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Agenda

� Transaction: definition and glossary� Transaction participants� Transaction types� J2EE transactions� Q & A

Page 8: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Transaction Participants

� Application� Resource manager

• Relational database• TP monitor• JMS provider

� Transaction resource object• E.g. Connection

� Resource adapter – connector� Transaction manager

• Coordination of distributed transactions• Maintains transaction context• XA protocol

Page 9: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Transaction Participants

Client

J2EE ApplicationServer

J2EEapplicationcomponent

DB

Transaction manager

Resourcemanager

JDBC

EISResourcemanagerJCA/JMS

Resourceadapters

Page 10: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Agenda

� Transaction: definition and glossary� Transaction participants� Transaction types� J2EE transactions� Q & A

Page 11: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Transaction Types

� Local transaction• 1 resource manager• 1 phase commit

� Distributed (global) transaction• Access multiple transactional resources• 2 phase commit

� Flat transaction� Nested transaction� Compensating transaction

� Extended transaction

Page 12: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Local Transaction

1 resource manager

DBMS

Application

Page 13: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Traditional Transaction Manager

TeleProcessing monitor+ multiple resourcemanagers

DBMS-1

DBMS-2

Enterprise system

TransactionManager

1 2 3 4 5Program

Page 14: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Application Server AsTransaction Manager

DBMS-1

DBMS-2

Enterprise systemWeb Server system

ApplicationServer

12 3 4 5Program

J2EEapplicationserver

Page 15: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Distributed Transaction

Multiple resource managers

Client

J2EE Application Server

EJB A

EJB B

EJB C

JDBC

JCA

JMS

DB

EIS

Page 16: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Distributed Transaction

Multiple transaction managers

J2EE ApplicationServer

Client

J2EE ApplicationServer

EJB A

EJB B

JDBC

JCA

DB

EIS2PC

Page 17: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Distributed Transaction

2 PhaseCommit

Transactionmanager

Resourcemanager 1

Resourcemanager 2

Prepare to commit

Ready to commit

Prepare to commit

Ready to commit

Commit

Committed

Commit

Committed

Page 18: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Distributed Transaction

2 Phaseabort

Transactionmanager

Resourcemanager 1

Resourcemanager 2

Prepare to commit

Ready to commit

Prepare to commit

Don't commit

Abort

Aborted

Abort

Aborted

Page 19: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Flat Transaction

Begin trx

com

mit

exec

uted

com

mit

or ro

llbac

kex

ecut

ed

End trx

Transaction contextpropagation

App1 App2 Appn...

Page 20: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Nested Transaction

Begin T1

Begin T3

Begin T2

Commit or Rollback T3

Commit or Rollback T2

Commit or Rollback T1

negl

ecte

d

negl

ecte

d

com

mit

exec

uted

rollb

ack

exec

uted

rollb

ack

exec

uted

rollb

ack

exec

uted

Page 21: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Compensating Transaction

� Undo effect of previously committed transaction• for local transactions (resource adaptors)• programmatic application logic

ExampleupdateEIS();try {

usertrx.begin();updateRDBMS();usertrx.commit();

}catch (RollbackException ex) {

undoUpdateEIS();}

Page 22: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Extended Transaction

� Long lived� Message oriented� Web services

• Business Transaction Protocol (OASIS) – JSR-156• WS-Transaction, WS-Coordination• Activity Service (OMG) – JSR-95

Page 23: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Agenda

� Transaction: definition and glossary� Transaction participants� Transaction types� J2EE transactions� Q & A

Page 24: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

J2EE Transactions

� J2EE Technology• JTA – Java Transaction API• JTS – Java Transaction Service

� J2EE tiers• Client tier• Web tier• EJB tier• EIS tier• Web services

� J2EE Resource managers• JDBC• JCA• JMS

Page 25: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

J2EE Technology

JTA

JTS

Page 26: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

JTA and JTS

JTA� javax.transaction.UserTransaction

• explicit in code• implicit in EJB container

JTS� javax.transaction.TransactionManager� javax.transaction.xa.XAResource

handled by J2EE server and EIS resource managers

Page 27: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

J2EE Tiers

� Client tier� Web tier� EJB tier� EIS tier� Web services

Page 28: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

J2EE Client Tier

No J2EE requirements forapplets or application clients

Advise:delegate transactional responsibility to server tiers

Page 29: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

J2EE Web Tier

J2EE supports programmatic transactiondemarcation in servlets/JSPs

� implement in service() method (begin + commit)� 2 phase commit implied

Advise:Use JNDI to lookup for object java:comp/UserTransaction

Page 30: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

public void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {

Context ctx = new InitialContext();UserTransaction userTrx = (UserTransaction) ctx.lookup(“java:comp/UserTransaction”);

userTrx.begin();

// user code for accessing resources

userTrx.commit();}

J2EE Web Tier

Start new transaction context

Page 31: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

J2EE EJB Tier

J2EE supports transaction demarcation� programmatic (bean managed)

• Session beans-afterBegin(), beforeCompletion(),afterCompletion()

• Message driven beans-onMessage()

UserTransaction� declarative (container managed)

• Session beans• Entity beanstransaction attributes in deployment descriptor

Page 32: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

public void myMethod(…)throws RemoteException{ UserTransaction userTrx = ejbContext.getUserTransaction(); try {

userTrx.begin();// user code for accessing resourcesuserTrx.commit();

} catch (Exception e) { try { userTrx.rollback(); } catch (SystemException se) { … } }}

J2EE EJB Tier

Bean managed transaction

Page 33: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

J2EE EJB Tier

Container managed transaction attributesRequired

NotSupported

Supports

Mandatory

RequiresNew

Never

Client EJB

Client EJBClient EJB

Client EJB Client EJB

Client EJB Client EJB

Client EJB

Client EJB

Exception

Exception

Client EJB

Client EJB

Client EJB

Page 34: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

...<container-transaction> <method> <ejb-name>PersonBean</ejb-name> <method-name>*</method-name> </method> <trans-attribute>Required</trans-attribute></container-transaction><container-transaction> <method> <ejb-name>CompanyBean</ejb-name> <method-name>updateInfo</method-name> </method> <trans-attribute>Mandatory</trans-attribute></container-transaction>...

J2EE EJB Tier

Container managed transaction descriptor

Page 35: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

J2EE EJB Tier

idemXXXMDB

get/set ofCMP/CMR fields

loggingEntityCMP

XXXEntityBMP

NOT re-

com-men-ded-

EIS trx(no J2EEsupport)

XXXSession

NeverMandatorySupportsNotSupport’d

RequiresNew

Required

Depends on client

Best practices XXX

Page 36: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

J2EE EJB Tier

Notes:� Use Container Managed Transactions

preferably� trigger rollback by container via method

setRollbackOnly() on• SessionContext• EntityContext• MessageDrivenContext

Page 37: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

J2EE EIS Tier

Access via�JTA transaction

• transaction context propagated via J2EE server

�resource manager local transaction• only if no JCA connector is available• requires explicit commit/rollback• provide compensating transactions

Page 38: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

J2EE EIS Tier

Advise:�access EIS system in transaction scope�use appropriate isolation level for EIS

• ReadUncommitted• ReadCommitted• RepeatableRead• Serializable

Page 39: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

J2EE Resource Managers

� JDBC – Java Data Base Connectivity• J2EE defines access to 1 JDBC resource per trx

� JCA – Java Connector Architecture• integration with EIS via standard resource adapters

- NoTransaction- LocalTransaction- XATransaction

� JMS – Java Messaging Service• J2EE supports at least 1 JMS provider per trx• messages are delivered/consumed in UoW• transactions are NEVER propagated between sender

and receiver of message!

Page 40: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Transactions and J2EESummary� Transaction =

logical unit of work, sharing ACID properties� Transaction participants

application, trx manager, resource managers,resource adapters

� Transaction types• local or distributed• flat or nested• extended

� J2EE transaction management

Page 41: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

If You Only Remember One Thing…

Can you live any longer withouttransactions?

If not, think of J2EE support!

Page 42: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

J2EE Transactions - References

�Books• Designing Enterprise Applications with the J2EE platform

(2nd edition) by Inderjeet Singh, Beth Stearns, Mark Johnsonet al. (Addison Wesley 2002) ISBN 0-201-78790-3

• IBM Redpaper Transactions in J2EE by Jan Smolenski andPeter Kovari (IBM 2003) REDP-3659-00

�URLs• http://java.sun.com/products/jta• http://www-106.ibm.com/developerworks/java/

Page 43: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

Q&A

Page 44: JavaPolis 2003 - ABIS · J2EE Transactions ˜ J2EE Technology • JTA – Java Transaction API • JTS – Java Transaction Service ˜ J2EE tiers ... JavaPolis 2003 thanks you. Title:

TRAINING & CONSULTING

JavaPolis 2003

thanks you