The Spring Framework J2EE without EJB - PowerPoint PPT Presentation

1 / 24
About This Presentation
Title:

The Spring Framework J2EE without EJB

Description:

JAX-RPC (WSDL/SOAP), Hessian, Burlap. Spring and J2EE (1) J2EE ... Hessian, Burlap, SOAP, RMI, HTTP invoker. protocol to be chosen according to requirements ... – PowerPoint PPT presentation

Number of Views:172
Avg rating:3.0/5.0
Slides: 25
Provided by: keithd76
Category:

less

Transcript and Presenter's Notes

Title: The Spring Framework J2EE without EJB


1
The Spring FrameworkJ2EE without EJB
  • Jürgen Höller
  • http//www.springframework.com
  • juergen_at_interface21.com

2
Agenda
  • J2EE Reviewed
  • Introducing the Spring Framework
  • Spring and J2EE
  • Core Container
  • AOP Framework
  • Transactions Data Access
  • Remoting
  • Further Services

3
J2EE Reviewed (1)
  • Challenges of modern server-side software
    development
  • multi-threaded execution
  • resource and transaction management
  • remote service access
  • HTTP server integration
  • Java 2 Enterprise Edition (J2EE tm)
  • set of specifications for standard
    applicationserver infrastructure
  • industry standard backed by Sun, IBM, Oracle
  • application server implements standard APIs
  • application uses standard APIs

4
J2EE Reviewed (2)
  • J2EE specifies system services
  • Servlets, JSP, JTA, JDBC, JMS, JavaMail
  • builds on underlying standard Java runtime
  • J2EE also specifies component models
  • Servlets for HTTP endpoints
  • EJBs for middle tier components
  • Focus on traditional 3-tier server layout
  • focus on physical separation between tiers
  • middle tier always requires application server
  • Low-level APIs
  • direct usage in applications often cumbersome
  • comfortable high-level APIs?

5
J2EE Reviewed (3)
  • Scope of J2EE is limited
  • EJBs are coarse-grained components
  • mainly for (remote) service façades
  • special deployment effort for every component
  • How to deal with fine-grained,co-located
    application objects?
  • forced to use custom solutions
  • common open source libraries / frameworks
  • How to run outside of an application server?
  • not covered by traditional J2EE
  • important for unit tests and integration tests
  • also important for productive development

6
Spring Framework (1)
  • Java / J2EE Application Framework
  • based on Rod Johnsons bookJ2EE Design
    Development (Wiley, 2002)
  • current book "J2EE Development without EJB"(Rod
    Johnson, Jürgen Höller Wiley, 2004)
  • Focus on "Plain Old Java Objects" (POJOs)
  • natural, generic component model for applications
  • flexible alternative to EJB, not tied to J2EE
  • Open Source Project on SourceForge
  • Apache license
  • since February 2003
  • 25 developers

7
Spring Framework (2)
  • Business objects as decoupled POJOs
  • configuration and wiring through framework
  • or usage as normal Java objects
  • independent from the actual environment
  • no unnecessary ties to a framework
  • reusable in any kind of environment
  • in particular testability in unit / integration
    tests
  • Generic middleware services
  • e.g. declarative transactions for POJOs
  • flexible alternative to EJB CMT
  • for all applications, including standalone
  • leverage J2EE container services when available

8
Spring Framework (3)
  • Integration with existing solutions
  • Object/Relational Mapping tools
  • web frameworks
  • remoting protocols
  • "Its all about choice"
  • JDBC, Hibernate, JDO, Oracle TopLink,Apache OJB,
    iBATIS SQL Maps
  • Spring Web MVC, Spring Web Flow,Struts, WebWork,
    Tapestry, JSF
  • HTTP invoker, RMI invoker, conventional
    RMI,JAX-RPC (WSDL/SOAP), Hessian, Burlap

9
Spring and J2EE (1)
  • J2EE provides standard system services
  • to be leveraged by higher-level components
  • Spring abstractions can run on top of J2EE

Application components
Spring application containerSpring service
abstractions
J2EE system servicesJ2EE deployment and
management
10
Spring and J2EE (2)
  • Spring is a de-facto standard Java / J2EE
    application framework
  • typically running on top of J2EE server
  • but application components are not tied to J2EE
  • Most popular "lightweight container"
  • widespread adoption over the past 2.5 years
  • endorsed / supported by BEA, IBM, Oracle
  • e.g. support partnership for Spring on WebLogic
  • EJB3 specification will follow Spring model
  • adopts some important ideas from Spring

11
Spring and J2EE (3)
  • Constantly increasing download numbers
  • 30.000 downloads of every point release
  • gt400.000 downloads overall
  • Growing Spring ecosystem
  • Spring sister projects
  • Acegi Security, Spring Web Flow
  • used or supported by many other products
  • open source and commercial
  • e.g. Atlassian Confluence, Liferay Portal
  • 5 dedicated books on Spring already available
  • by various authors
  • more books in the works

12
Core Container (1)
  • "Inversion of Control"
  • configuration and lifecycle of application
    objects
  • objects do not configure themselves, but get
    configured from the outside
  • objects don't know the origin of their
    configuration
  • "Dependency Injection"
  • "setter-based" (JavaBean properties)
  • "constructor-based" (constructor arguments)
  • alternative "Service Lookup"
  • for example JNDI

13
Core Container (2)
  • Fine-grained externalized configuration
  • representing the internal structure of the
    application
  • references to other components
  • configuration parameters
  • enables flexible configuration management
  • at fine-grained component level
  • switching between different deployment scenarios
  • XML bean definitions
  • most common configuration format
  • often separate admin properties file
  • linked into XML bean definitions through
    placeholders

14
Core Container (3)
ltbean id"dataSource" class"org.apache.commons.db
cp.BasicDataSource"gt ltproperty
name"driverClassName" value"jdbc.driver"/gt
ltproperty name"url" value"jdbc.url"/gt
ltproperty name"username" value"jdbc.username"
/gt ltproperty name"password" value"jdbc.passw
ord"/gt lt/beangt ltbean id"itemDao"
class"org.springframework.samples.jpetstore.dao.i
batis.SqlMapItemDao"gt ltproperty
name"dataSource" ref"dataSource"/gt ltproperty
name"sqlMap" ref"sqlMap"/gt lt/beangt ltbean
id"petStore"class"org.springframework.samples.j
petstore.domain.logic.PetStoreImpl"gt ltproperty
name"orderDao" ref"orderDao"/gt ltproperty
name"itemDao" ref"itemDao"/gt lt/beangt
15
AOP Framework (1)
  • "Aspect-Oriented Programming"
  • proxies for arbitrary POJOs
  • flexible combination of interceptors
  • no fixed component model ("EJB a la carte")
  • "Cross-Cutting Concerns"
  • actions at the beginning/end of a method call

Target method
Caller
intercept
16
AOP Framework (2)
  • Do not repeat code factor out interceptor
  • e.g. logging configurable trace log
  • e.g. security authorization checks
  • e.g. common exception handling
  • e.g. transaction demarcation
  • Method interceptor
  • interceptor can be applied to any methods
  • interceptor can be enabled/disabled
  • AOP Alliance MethodInterceptor interface
  • reuse of pre-built interceptors

17
Transactions DAOs (1)
  • Transaction Strategy Abstraction
  • PlatformTransactionManager SPI
  • switching between JTA and native transactions
  • Transaction Demarcation Options
  • programmatic demarcation a la JTA
  • declarative demarcation for arbitrary POJOs
  • Transaction Definitions
  • all EJB CMT propagation codes supported
  • REQUIRED, REQUIRES_NEW, etc
  • optional transaction semantics beyond EJB
  • nested, isolation level, timeout, read-only flag

18
Transactions DAOs (2)
  • DataAccessException hierarchy
  • independent of JDBC, Hibernate, JDO, etc
  • unchecked, as most failures are not recoverable
  • subclasses like OptimisticLockingFailureException
  • Support for DAO implementations
  • implicit access to resources
  • many operations become one-liners
  • no try/catch blocks anymore
  • Pre-built integration classes for many solutions
  • JDBC JdbcTemplate
  • Hibernate HibernateTemplate

19
Transactions DAOs (3)
  • Example for a JDBC-based DAO
  • public class ExampleJdbcDao extends
    JdbcDaoSupport public void clearDatabase()
    throws DataAccessException     getJdbcTemplate()
    .update("DELETE FROM imagedb")    public
    void deleteImage(int imageId) throws
    DataAccessException     getJdbcTemplate().update
    ("DELETE FROM imagedb WHERE id?", new
    Object new Integer(imageId))    public
    int getNrOfImages() throws DataAccessException
        return getJdbcTemplate().queryForInt(
    "SELECT COUNT() FROM imagedb")  

20
Remoting
  • Export POJOs as remote services
  • in server-side Spring applications
  • through Spring remote service exporter
  • Make remote services accessible
  • in client-side Spring applications
  • through Spring remote proxy factory
  • Protocol choice is configuration matter
  • Hessian, Burlap, SOAP, RMI, HTTP invoker
  • protocol to be chosen according to requirements
  • Support for integration of EJBs
  • through Spring EJB proxy factory
  • declarative proxies for Stateless Session Beans

21
Further Services
  • JMS Support
  • lightweight messaging
  • JCA Support
  • access to J2EE Connectors
  • Mail Support
  • JavaMailSender
  • Scheduling Support
  • Quartz, Timer
  • Web Application Support
  • Struts, JSF, WebWork, Tapestry
  • Spring Web MVC, Spring Web Flow

22
Summary (1)
  • Spring is a popular Java application framework
  • core container, AOP framework
  • transactions, data access, remoting
  • dedicated support for J2EE environments
  • integrating with many existing solutions
  • Solves ubiquitous architectural issues
  • wiring and configuration of components
  • flexible configuration of interceptors
  • declarative transaction demarcation
  • implicit management of resources

23
Summary (2)
  • Works in any environment
  • no special compilation or deployment steps
  • no special class loader
  • can run on J2EE, but not tied to J2EE
  • seamless switching between deployment scenarios
  • For any kind of application
  • J2EE web applications running on e.g. Tomcat
  • full J2EE applications running on e.g. WebLogic
  • rich clients (usually with J2EE server as
    backend)
  • standalone applications (with GUI or headless)

24
http//www.springframework.org
http//www.springframework.com
Write a Comment
User Comments (0)
About PowerShow.com