Java WebJ2EETomcat , Ph.D.
EJB (II)Transaction and SecurityResource ConnectionDeploymentWeb Services
Review: J2EE Framework
Web Application Architecture: MVC Model
Transaction Conceptbegin transaction debit checking account credit savings account update history log commit transaction
CMT Transaction Managementpublic void transferToSaving(double amount) throws InsufficientBalanceException { checkingBalance -= amount; savingBalance += amount; try { updateChecking(checkingBalance); if (checkingBalance < 0.00) { context.setRollbackOnly(); throw new InsufficientBalanceException(); } updateSaving(savingBalance); } catch (SQLException ex) { throw new EJBException ("Transaction failed due to SQLException: " + ex.getMessage()); }}
BMT Transaction Management : JDBCpublic void ship (String productId, String orderId, int quantity) { try { con.setAutoCommit(false); updateOrderItem(productId, orderId); updateInventory(productId, quantity); con.commit(); } catch (Exception ex) { try { con.rollback(); throw new EJBException("Transaction failed: " + ex.getMessage()); } catch (SQLException sqx) { throw new EJBException("Rollback failed: " + sqx.getMessage()); } }}
BMT Transaction Management : JTApublic void withdrawCash(double amount) {UserTransaction ut = context.getUserTransaction();try { ut.begin(); updateChecking(amount); machineBalance -= amount; insertMachine(machineBalance); ut.commit(); } catch (Exception ex) { try { ut.rollback(); } catch (SystemException syex) { throw new EJBException ("Rollback failed: " + syex.getMessage()); } throw new EJBException ("Transaction failed: " + ex.getMessage());}
Transaction Allowance
Bean Type Container-Managed Bean-Managed JTA JDBC Entity Y N N Session Y Y Y Message-driven Y Y Y
Updating Multiple Databases
Resource Connections
Resource Manager Type Connection Factory Type JNDI Subcontext JDBC javax.sql.DataSource java:comp/env/jdbc JMS javax.jms.TopicConnectionFactory javax.jms.QueueConnectionFactory java:comp/env/jms JavaMail javax.mail.Session java:comp/env/mail URL java.net.URL java:comp/env/url Connector javax.resource.cci.ConnectionFactory java:comp/env/eis JAXR Resource Adapter javax.xml.registry.ConnectionFactory java:comp/env/eis/JAXR
Database Connectionprivate String dbName = "java:comp/env/jdbc/SavingsAccountDB";
InitialContext ic = new InitialContext(); DataSource ds = (DataSource) ic.lookup(dbName);
Connection con = ds.getConnection();
EJB Deployment: Security Declare
Programmatic Security in the EJB Tier public String getUser() { return context.getCallerPrincipal().getName(); }
boolean result = context.isCallerInRole("Customer");
Propagating Security Identity
Web Deployment: Security Declare
Packaging ModulesEJBejbWebjava(connector),
Deployment Configuration FilesEJB web.xml
EJB Deployment: Packaging
EJB and Web ServicesJ2EE1.4 Web Services.Net Web ServicesPerl Web Services
EJB2.1 ContainerStatelessSession BeanSOAPSOAPSOAP
Web Services
Web Services SupportWeb services are Web-based enterprise applications that use open, Extensible Markup Language (XML)-based standards and transport protocols to exchange data with calling clients. The J2EE platform provides the XML APIs and tools you need to quickly design, develop, test, and deploy Web services and clients that fully interoperate with other Web services and clients running on Java-based or non-Java-based platforms. It is easy to write Web services and clients with the J2EE XML APIs. No low-level programming is needed because the XML API implementations do the work of translating the application data to and from an XML-based data stream that is sent over the standardized XML-based transport protocols. The translation of data to a standardized XML-based data stream is what makes Web services and clients written with the J2EE XML APIs fully interoperable.
Web Services Concept
Web Services
Web Services Standards
Three Players of WS
SOAP
UDDI
WSDL
J2EE Web Services