distributed transactions overviewjava.coe.psu.ac.th/.../transactiontv/transactions.pdf · how...

44
Copyright © 2002 [email protected] +1 (877) 866-JAVA P. O. Box 80049 Austin, TX 78708 Fax: +1 (801) 383-6152 Distributed Transactions Overview Distributed Transactions Overview

Upload: others

Post on 13-May-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

Copyright © [email protected] • +1 (877) 866-JAVA

P. O. Box 80049Austin, TX 78708Fax: +1 (801) 383-6152

Distributed Transactions Overview

Distributed Transactions Overview

Page 2: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

2Copyright © 2002 by The Middleware Company

OutlineOutline

At the end of this presentation, you will understand:

� How to define a transaction� How transactions are coordinated across multiple data sources� How Enterprise Java Beans use distributed transactions� The different transaction policies, or attributes, used in EJB� The different transaction isolation levels used by EJB data sources

Page 3: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

3Copyright © 2002 by The Middleware Company

Transactions and ACIDTransactions and ACID

▼A Transaction is a unit of work that has ACID properties:� Atomicity: Changes are either all committed or rolled back� Consistency: Changes to the state of the resource move from one

valid state to another� Isolation: Changes to the shared resources do not become visible to

other clients until the transaction commits� Durability: Changes to the shared resources survive subsequent

system or media failures

Page 4: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

4Copyright © 2002 by The Middleware Company

RoadmapRoadmap

Where are we?

� How to define a transaction� How transactions are coordinated across multiple data sources� How Enterprise Java Beans use distributed transactions� The different transaction policies, or attributes, used by Enterprise

Java Beans� The different transaction isolation levels used by Enterprise Java

Bean data sources

Page 5: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

5Copyright © 2002 by The Middleware Company

An Example Transaction

Page 6: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

6Copyright © 2002 by The Middleware Company

What is Two Phase Commit (2PC)?What is Two Phase Commit (2PC)?

▼When a transaction manager commits a transaction it is performed in two phases:� Phase I

�Transaction manager (TM) issues prepare requests to each participating resource manager (RM) to query their ability to commit their work

�A positive reply from an RM means that it is prepared�A negative reply initiates a rollback operation by the TM

� Phase II�The TM directs all participating RMs to commit their work on behalf

of the global transaction if phase I was successful�Otherwise, the TM issues a rollback directive to all participating

RMs▼After phase II completes, TM conveys the outcome to the client

Page 7: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

7Copyright © 2002 by The Middleware Company

What is the X/Open DTP Model (XA)?What is the X/Open DTP Model (XA)?▼X/Open Distributed Transaction Processing (DTP) model is a

software architecture that allows:� Multiple application programs to share resources provided by multiple

resource managers� Their work to be coordinated into global transactions

▼Most RDBMS’s support the XA protocol

Page 8: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

8Copyright © 2002 by The Middleware Company

Benefits of Transactions:High Availability and RecoveryBenefits of Transactions:High Availability and Recovery

Transactions greatly simplify server recovery, thereby enabling availability

▼ Should a server fail, when it recovers:� Consistency ensures state from transactions active during failure is ignored� Durability ensures state from successfully completed transactions is maintained

▼ In other words, all work not check-pointed by a successful commit is discarded under error conditions

▼ Consequently, client code can be much simpler▼ Highly available server code can also be simpler, if a service is managing

the transactional resources

Page 9: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

9Copyright © 2002 by The Middleware Company

Java Transaction Service (JTS)Java Transaction Service (JTS)

▼The Java Transaction Service (JTS):� Allows multiple invocations on multiple distributed objects to be

treated as one unit of work� Supports industry-standard, 2-phase-commit protocols� Specifies the relationship between a transaction manager and its

participating resources� Also specifies the responsibilities of these components throughout the

critical completion phases of a transaction� Can be built upon older TP monitors such as Tuxedo, Encina, etc.� Applies transactional semantics to the distributed object world

Page 10: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

10Copyright © 2002 by The Middleware Company

Scenario: JTS In Use

TransactionOriginator

TransactionalServer

TransactionalServer

JTS

TransactionalServer

Begin a transaction

begin()

Page 11: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

11Copyright © 2002 by The Middleware Company

Transaction Context Created

TransactionOriginator

TransactionalServer

TransactionalServer

JTS

TransactionalServer

Page 12: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

12Copyright © 2002 by The Middleware Company

Transactional Operation

TransactionOriginator

TransactionalServer

TransactionalServer

JTS

TransactionalServer

buy_shirt()

buy_shirt()

register_resource()

Page 13: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

13Copyright © 2002 by The Middleware Company

Transactional Operation

TransactionOriginator

TransactionalServer

TransactionalServer

JTS

TransactionalServer

buy_pants()

buy_pants()

register_resource()

Page 14: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

14Copyright © 2002 by The Middleware Company

More Transactional Operations

TransactionOriginator

TransactionalServer

TransactionalServer

JTS

TransactionalServer

buy belt, socks, hat

buy_socks()

buy_hat()

buy_belt()

register_resource()

Page 15: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

15Copyright © 2002 by The Middleware Company

End Transaction

TransactionOriginator

TransactionalServer

TransactionalServer

JTS

TransactionalServer

end transaction

commit()

Page 16: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

16Copyright © 2002 by The Middleware Company

Completion Phase 1

TransactionOriginator

TransactionalServer

TransactionalServer

JTS

TransactionalServer

prepare()

prepare()

prepare()

Page 17: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

17Copyright © 2002 by The Middleware Company

Responses to Phase 1

TransactionOriginator

TransactionalServer

TransactionalServer

JTS

TransactionalServer

vote_commit

vote_commit

vote_commit

Page 18: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

18Copyright © 2002 by The Middleware Company

Completion Phase 2

TransactionOriginator

TransactionalServer

TransactionalServer

JTS

TransactionalServer

commit()

commit()

commit()

Page 19: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

19Copyright © 2002 by The Middleware Company

RoadmapRoadmap

Where are we?

� How to define a transaction� How transactions are coordinated across multiple data sources� How Enterprise Java Beans use distributed transactions� The different transaction policies, or attributes, used by Enterprise

Java Beans� The different transaction isolation levels used by Enterprise Java

Bean data sources

Page 20: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

20Copyright © 2002 by The Middleware Company

Enterprise Java Beans and Distributed TransactionsEnterprise Java Beans and Distributed Transactions

EJB depends on JTS for managing distributed transactions

▼EJB clients can explicitly originate and complete transactions� i.e. demarcation code exists in the client at compile time

▼A more flexible alternative is EJB container-managed transactions:� Containers implicitly originate and complete transactions� Transactional policies may be configured declaratively at deployment

time in the deployment descriptor

Page 21: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

21Copyright © 2002 by The Middleware Company

RoadmapRoadmap

Where are we?

� How to define a transaction� How transactions are coordinated across multiple data sources� How Enterprise Java Beans use distributed transactions� The different transaction policies, or attributes, used by

Enterprise Java Beans� The different transaction isolation levels used by Enterprise Java

Bean data sources

Page 22: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

22Copyright © 2002 by The Middleware Company

EJB Container Transaction PoliciesEJB Container Transaction Policies

NOT SUPPORTED� Upon entering the method, any current transaction is suspended for

the duration of the invocationREQUIRED

� If there is no transaction active, then one will be started upon entering the method

� The transaction will be committed before leaving the method if the container started it

SUPPORTS� If a transaction is active, work is done in the context of that transaction� No new transactions are started

Page 23: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

23Copyright © 2002 by The Middleware Company

EJB Container Transaction Policies ...continuedEJB Container Transaction Policies ...continuedREQUIRES NEW

� A new transaction will be started upon entering the method, even if there is a transaction active

� The transaction will be committed before leaving the methodMANDATORY

� Upon entering the method, an exception is thrown if there is no transaction active

NEVER� This bean can never be involved in a transaction, an exception will be

thrown if a transaction is active BEAN MANAGED

� A Session Bean performs the transaction control itself. This option is NOT available for Entity Beans

Page 24: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

24Copyright © 2002 by The Middleware Company

Setting the Container Managed Transaction PolicySetting the Container Managed Transaction Policy// File: ejb-jar.xml

...

<ejb-jar>

<enterprise-beans>

<session>

...

<transaction-type>Container</transaction-type>

</session>

</enterprise-beans>

...

<container-transaction>

<method>

<ejb-name>lab08.ShoppingCartHome</ejb-name>

<method-intf>Remote</method-intf>

<method-name>performPurchase</method-name>

<method-params></method-params>

</method>

<trans-attribute>Required</trans-attribute>

</container-transaction>

Page 25: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

24Copyright © 2002 by The Middleware Company

Setting the Container Managed Transaction PolicySetting the Container Managed Transaction Policy// File: ejb-jar.xml

...

<ejb-jar>

<enterprise-beans>

<session>

...

<transaction-type>Container</transaction-type>

</session>

</enterprise-beans>

...

<container-transaction>

<method>

<ejb-name>lab08.ShoppingCartHome</ejb-name>

<method-intf>Remote</method-intf>

<method-name>performPurchase</method-name>

<method-params></method-params>

</method>

<trans-attribute>Required</trans-attribute>

</container-transaction>

Page 26: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

24Copyright © 2002 by The Middleware Company

Setting the Container Managed Transaction PolicySetting the Container Managed Transaction Policy// File: ejb-jar.xml

...

<ejb-jar>

<enterprise-beans>

<session>

...

<transaction-type>Container</transaction-type>

</session>

</enterprise-beans>

...

<container-transaction>

<method>

<ejb-name>lab08.ShoppingCartHome</ejb-name>

<method-intf>Remote</method-intf>

<method-name>performPurchase</method-name>

<method-params></method-params>

</method>

<trans-attribute>Required</trans-attribute>

</container-transaction>

When the method performPurchaseis called, the container will ensure the method will be invoked within a transaction.

Page 27: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

25Copyright © 2002 by The Middleware Company

Setting the Container Managed Transaction Policy . . .cont’dSetting the Container Managed Transaction Policy . . .cont’dFile: ejb-jar.xml ...continued

<container-transaction>

<method>

<ejb-name>lab08.ShoppingCartHome</ejb-name>

<method-intf>Remote</method-intf>

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

</method>

<trans-attribute>NotSupported</trans-attribute>

</container-transaction>

</assembly-descriptor>

</ejb-jar>

All methods will have the “NotSupported” transaction attribute applied to them.

Page 28: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

25Copyright © 2002 by The Middleware Company

Setting the Container Managed Transaction Policy . . .cont’dSetting the Container Managed Transaction Policy . . .cont’dFile: ejb-jar.xml ...continued

<container-transaction>

<method>

<ejb-name>lab08.ShoppingCartHome</ejb-name>

<method-intf>Remote</method-intf>

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

</method>

<trans-attribute>NotSupported</trans-attribute>

</container-transaction>

</assembly-descriptor>

</ejb-jar>

All methods will have the “NotSupported” transaction attribute applied to them.

Page 29: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

26Copyright © 2002 by The Middleware Company

Explicitly Starting TransactionsExplicitly Starting Transactions

//File: clientTransaction.java

import javax.naming.InitialContext;

import javax.transaction.UserTransaction;

public class clientTransaction {

public static void main (String [] argv)){

UserTransaction ut =null;

InitialContext ctx =new InitialContext();

ut=(UserTransaction)ctx.lookup(“java:comp/UserTransaction ”);

ut.begin();

//do some transaction work

ut.commit(); //or ut.rollback();

}

}

Page 30: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

27Copyright © 2002 by The Middleware Company

javax.transaction.UserTransactionjavax.transaction.UserTransaction

public interface javax.transaction.UserTransaction

{

public abstract void begin();

public abstract void commit();

public abstract int getStatus();

//rolls back a transaction

public abstract void rollback();

//flags a transaction to be rolled back

public abstract void setRollbackOnly();

public abstract void setTransactionTimeout(int);

}

//Note that exceptions have been removed for clarity

Page 31: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

28Copyright © 2002 by The Middleware Company

RoadmapRoadmap

Where are we?

� How to define a transaction� How transactions are coordinated across multiple data sources� How Enterprise Java Beans use distributed transactions� The different transaction policies, or attributes, used by Enterprise

Java Beans� The different transaction isolation levels used by Enterprise Java

Bean data sources

Page 32: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

29Copyright © 2002 by The Middleware Company

Transaction Isolation ConceptsTransaction Isolation Concepts

There exist three types of transaction violations�Dirty reads�Non-repeatable reads �Phantom reads

Page 33: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

30Copyright © 2002 by The Middleware Company

Transaction Isolation LevelsTransaction Isolation Levels

When deploying an EJB, you control the extent of transaction violations permitted by that beans’ DataSource using the following isolation levels: Dirty reads

permitted?Non-repeatable reads permitted?

Phantom reads permitted?

Transaction Read UncommittedTransaction Read CommittedTransaction Repeatable Read

Transaction Serializable Read(most stringent)

no

yes

nono

yesyes

yes

yes yes

nono

no

Page 34: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

31Copyright © 2002 by The Middleware Company

Setting the Isolation LevelSetting the Isolation Level// File: CMP_Weblogic_CMP_RDBMS959981339550.xml

...

<weblogic-rdbms-bean>

...

<attribute-map>

...

</attribute-map>

<finder-list>

...

</finder-list>

<options>

...

<transaction-isolation>TRANSACTION_SERIALIZABLE</transaction-isolation>

</options>

</weblogic-rdbms-bean>

The transaction isolation level is defined for the connection used by the EJB to communicate with the DB.

Page 35: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

31Copyright © 2002 by The Middleware Company

Setting the Isolation LevelSetting the Isolation Level// File: CMP_Weblogic_CMP_RDBMS959981339550.xml

...

<weblogic-rdbms-bean>

...

<attribute-map>

...

</attribute-map>

<finder-list>

...

</finder-list>

<options>

...

<transaction-isolation>TRANSACTION_SERIALIZABLE</transaction-isolation>

</options>

</weblogic-rdbms-bean>

The transaction isolation level is defined for the connection used by the EJB to communicate with the DB.

Page 36: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

32Copyright © 2002 by The Middleware Company

Do You Need a Distributed Transaction Service?Do You Need a Distributed Transaction Service?▼Just because your application has transactions does not mean

you need support for distributed transactions▼Because enterprise software architects have become

accustomed to not having the luxury of distributed transactions,many have learned to architect around the need� Most enterprises do not use TP monitors� 90% of enterprises that use TP monitors use them as middleware, not

distributed transaction coordinators, often due to the large performance penalty

Page 37: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

33Copyright © 2002 by The Middleware Company

You Need Distributed Transactions When:You Need Distributed Transactions When:▼Your business objects use multiple or different kinds of

databases and the transaction must span more than one db▼You have a single db, but your business objects are distributed▼You want to involve legacy systems, other transactional

middleware, or queuing systems in your transactions▼You have none of the above needs right now, but want to allow

for any of the above in the future, without making code changes

Page 38: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

34Copyright © 2002 by The Middleware Company

Simplify Transaction Model Whenever PossibleSimplify Transaction Model Whenever Possible

DistributedDistributed

TransactionsTransactionsDistributedDistributed

TransactionsTransactions

Page 39: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

35Copyright © 2002 by The Middleware Company

Simplifying Transaction ModelsSimplifying Transaction Models

How much ACID do you really need?� Need to strike balance between ACID and throughput +

responsiveness� Often forces us to improve concurrency at the expense of currency� For example, many banking systems use stale data (yesterday’s

balances) as their starting point… unauthorized overdrafts sometimes result, but other limits keep that under control�Real-time balances that reflect intra-day balances increase system

complexity

Page 40: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

36Copyright © 2002 by The Middleware Company

Simplifying Transaction ModelsSimplifying Transaction Models

▼If Read operations greatly outnumber Write operations:�You can arrange to send transactions requiring Writes to a

particular container�All modifications to bean state happen in this one container�Can combine with problem-domain-level partitioning

Page 41: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

37Copyright © 2002 by The Middleware Company

SummarySummary

▼How to define a transaction and its ACID properties▼How transactions are coordinated across multiple data sources▼The interfaces used by the Java Transaction Service (JTS)▼How Enterprise Java Beans use distributed transactions▼The different transaction policies that can be used by

Enterprise Java Beans▼The different Transaction Isolation policies that can be use by

Enterprise Java Beans▼Changing transaction properties▼Studying the amount of transaction distribution you really need

Page 42: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

38Copyright © 2002 by The Middleware Company

Appendix A: Sample ejb-jar.xml fileAppendix A: Sample ejb-jar.xml file// File: ejb-jar.xml

<?xml version="1.0"?>

<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTDEnterprise JavaBeans 1.1//EN''http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd'>

<ejb-jar>

<enterprise-beans>

<session>

<ejb-name>lab08.ShoppingCartHome</ejb-name>

<home>lab08_StatefulSession.ShoppingCartHome</home>

<remote>lab08_StatefulSession.ShoppingCart</remote>

<ejb-class>lab08_StatefulSession.ShoppingCartBean</ejb-class>

<session-type>Stateful</session-type>

<transaction-type>Container</transaction-type>

</session>

</enterprise-beans>

Page 43: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

39Copyright © 2002 by The Middleware Company

Appendix A: Sample ejb-jar.xml file ...continuedAppendix A: Sample ejb-jar.xml file ...continuedFile: ejb-jar.xml ...continued

<container-transaction>

<method>

<ejb-name>lab08.ShoppingCartHome</ejb-name>

<method-intf>Remote</method-intf>

<method-name>performPurchase</method-name>

<method-params></method-params></method>

<trans-attribute>Required</trans-attribute>

</container-transaction>

<container-transaction>

<method>

<ejb-name>lab08.ShoppingCartHome</ejb-name>

<method-intf>Remote</method-intf>

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

<trans-attribute>NotSupported</trans-attribute>

</container-transaction>

</assembly-descriptor>

</ejb-jar>

Page 44: Distributed Transactions Overviewjava.coe.psu.ac.th/.../TransactionTV/Transactions.pdf · How transactions are coordinated across multiple data sources How Enterprise Java Beans use

40Copyright © 2002 by The Middleware Company

Appendix B: Sample weblogic-ejb-jar.xml fileAppendix B: Sample weblogic-ejb-jar.xml file<?xml version="1.0"?>

<!DOCTYPE weblogic-ejb-jar PUBLIC '-//BEA Systems, Inc.//DTD WebLogic 5.1.0 EJB//EN''http://www.bea.com/servers/wls510/dtd/weblogic-ejb-jar.dtd'>

<weblogic-ejb-jar><weblogic-enterprise-bean>

<ejb-name>lab08.ShoppingCartHome</ejb-name>

<caching-descriptor>

<max-beans-in-free-pool>100</max-beans-in-free-pool>

<max-beans-in-cache>100</max-beans-in-cache>

<idle-timeout-seconds>300</idle-timeout-seconds>

</caching-descriptor>

<jndi-name>lab08.ShoppingCartHome</jndi-name>

<transaction-isolation>

<isolation-level>TRANSACTION_SERIALIZABLE</isolation-level>

<method>

<ejb-name>lab08.ShoppingCartHome</ejb-name>

<method-intf>Remote</method-intf>

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

</method>

</transaction-isolation>

</weblogic-enterprise-bean>

<security-role-assignment>

<role-name>system</role-name>

<principal-name>system</principal-name>

</security-role-assignment>

<security-role-assignment>

<role-name>guest</role-name>

<principal-name>guest</principal-name>

</security-role-assignment></weblogic-ejb-jar>