A new Intermediate construction frameworks Edward Currie and Mark Thomas Framework Managers.
Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma...
-
Upload
reynold-west -
Category
Documents
-
view
226 -
download
1
Transcript of Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma...
![Page 1: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/1.jpg)
Spring and DWRFrameworks for Rich Web Enterprise Application
Thomas [email protected]
www.wiradikusuma.com
Presentation to the 20th Java User Group Meet Up (JaMU), May 20, 2006
![Page 2: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/2.jpg)
Objective
• To introduce Spring, an application framework for developing enterprise applications.
• To introduce DWR, an Ajax framework for developing Rich Internet Application (RIA).
• To show Spring+DWR integration to get the best of both worlds.
![Page 3: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/3.jpg)
Agenda
• Intro to Spring
• Spring wiring
• Spring step-by-step
• Intro to DWR
• DWR configuration
• DWR step-by-step
• Spring and DWR integration
![Page 4: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/4.jpg)
Typical JavaEE App Development
• Usually developing web applications that serve many users and access (possibly many, heterogeneous) enterprise resources.
• EJB is used because we want some of its features.
• EJB is complicated, for a reason.
• Testing is tedious.
• Is there an easier way?
![Page 5: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/5.jpg)
Here Comes Spring!
• An open source Java/JavaEE application framework.
• Codes originally came from Rod Johnson’s book “Expert One-on-One: J2EE Design and Development”, Wrox Press, 2002.
• Enables POJOs to achieve things that were previously only possible with EJBs.
![Page 6: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/6.jpg)
Spring Mission Statement
• JavaEE should be easier to use.• OO design is more important than any
implementation technology, such as JavaEE.
• Testability is essential, and a framework such as Spring should help make your code easier to test.
• Spring should not compete with good existing solutions (Hibernate, Struts, etc), but should foster integration.
![Page 7: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/7.jpg)
Spring Described
• Lightweight
• Inversion of control
• Aspect-oriented
• Container
• Framework
![Page 8: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/8.jpg)
Spring Modules
![Page 9: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/9.jpg)
Some Spring Usage Scenarios
![Page 10: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/10.jpg)
Some Spring Usage Scenarios - 2
![Page 11: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/11.jpg)
Inversion of Control
• Dependency injection– Beans define their dependencies through
constructor arguments or properties– The container provides the injection at
runtime• “Don’t talk to strangers,” also known
as the Hollywood principle, “Don’t call me I’ll call you.”
• Decouples object creators and locators from application logic
• Easy to maintain and reuse• Testing is easier
![Page 12: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/12.jpg)
Spring Bean Definition• The bean class is the actual implementation of the bean
being described by the BeanFactory. • Bean examples: DAO, DataSource, Transaction Manager,
Persistence Manager, Service objects, etc.• Spring config contains implementation classes while your
code should program to interfaces.• Bean behaviors include:
– Singleton or prototype– Autowiring– Spring-aware interfaces– Initialization and destruction methods
• init-method• destroy-method
• Beans can be configured to have property values set. • Can read simple values, collections, maps, references to
other beans, etc.
![Page 13: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/13.jpg)
Simple Spring Bean Example<bean id="orderBean" class="example.OrderBeanImpl"
init-method="init"><property name=“maxOrder">10</property><property name="orderDAO"> <ref bean="orderDAO"/></property>
</bean>
public class OrderBeanImpl implements OrderBean {// ...
public void setMaxOrder(double maxOrder){ this.maxOrder = maxOrder;
} public void setOrderDAO(OrderDAO orderDAO){
this.orderDAO = orderDAO; }
// ...}
![Page 14: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/14.jpg)
Spring BeanFactory
• BeanFactory is core to the Spring framework– Lightweight container that loads bean
definitions and manages your beans.– Configured declaratively using an XML file,
or files, that determine how beans can be referenced and wired together.
– Knows how to serve and manage a singleton or prototype defined bean
– Responsible for lifecycle methods.– Injects dependencies into defined beans
when served
• Avoids the use of singletons and factories
![Page 15: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/15.jpg)
Spring ApplicationContext• A Spring ApplicationContext allows you to get
access to the objects that are configured in a BeanFactory in a framework manner.
• ApplicationContext extends BeanFactory– Adds services such as international messaging
capabilities.– Add the ability to load file resources in a generic
fashion.• Several ways to configure a context:
– XMLWebApplicationContext – Configuration for a web application.
– ClassPathXMLApplicationContext – standalone XML application context
– FileSystemXmlApplicationContext• Allows you to avoid writing Service Locators
![Page 16: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/16.jpg)
XMLWebApplicationContext<context-param>
<param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener> <listener-class> org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
![Page 17: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/17.jpg)
Spring MVC
![Page 18: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/18.jpg)
Sample Spring Application
• DEMOApplicationContext factory = new
ClassPathXmlApplicationContext(“config.xml");
• index.jsp<%@ taglib
uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:redirect url="something.htm"/>
• Spring Bind Tag<%@taglib
uri="http://www.springframework.org/tags" prefix="spring"%>
<spring:bind path="command.property">
![Page 19: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/19.jpg)
Web is All Around
• History of dynamic web applications
• Web 2.0 and Ajax
• The DWR approach to Ajax
• Tools and widgets
![Page 20: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/20.jpg)
Ajax – Not a Football Team
• Not one technology, several technologies:– XHTML and CSS– Document Object Model (DOM)– XML (and XSLT)– XMLHttpRequest (XHR)– JavaScript
![Page 21: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/21.jpg)
Ajax Approach to Web
![Page 22: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/22.jpg)
Ajax Approach to Web - 2
![Page 23: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/23.jpg)
Issues in Ajax
• Browser incompatibilities
• Back button and browser history
• Working with XML in JavaScript
• Accessibility
![Page 24: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/24.jpg)
Ajax Frameworks
• DWR• Echo2• JSON-RPC• Sajax• Many more…
• Why DWR?– Mostly used framework– Integrates best with Spring
![Page 25: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/25.jpg)
DWR Described
• Open source Java library
• Allows code in a web browser to use Java functions running on a web server as if it was in the browser
• Two main parts:– Java Servlet– JavaScript
• Dynamically generates JavaScript code based on Java classes
![Page 26: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/26.jpg)
Sample DWR Configuration
• web.xml:<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>
uk.ltd.getahead.dwr.DWRServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
![Page 27: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/27.jpg)
Sample DWR Configuration - 2
• dwr.xml:<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD
Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<allow>
<create creator="new" javascript="myDate">
<param name="class" value="java.util.Date"/>
</create>
</allow>
</dwr>
![Page 28: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/28.jpg)
DWR Step-by-step
1. Install the DWR JAR file2. Edit the config files3. Go to the following URL:
http://localhost:8080/[YOUR-WEBAPP]/dwr/ 4. Put this in your JSP:
<script src='/[YOUR-WEBAPP]/dwr/interface/[YOUR-SCRIPT].js'></script>
<script src='/[YOUR-WEBAPP]/dwr/engine.js'></script>
<script src='/[YOUR-WEBAPP]/dwr/util.js'></script>
![Page 29: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/29.jpg)
Spring+DWR Integration
• Check list:1. Use the latest DWR. The Spring
creator has changed so it is well worth checking that you have the latest download.
2. Make sure DWR and Spring each are working OK in your application.
3. Configure DWR to work with Spring.
4. Check result in the debug pages: http://localhost:8080/[YOUR-WEBAPP]/dwr/
![Page 30: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/30.jpg)
Spring+DWR Integration - 2
• The SpringCreator:<create creator="spring" javascript="test"> <param name="beanName" value="test"/> </create>
• Find the Spring configuration:– ContextLoaderListener
<context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/classes/beans.xml</param-value></context-param>
<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
– Or by “location*” parameters<create creator="spring" javascript="test"><param
name="beanName" value="test"/><param name="location" value="beans.xml"/></create>
– Or by setting the BeanFactory DirectlySpringCreator.setOverrideBeanFactory(BeanFactory)
![Page 31: Spring and DWR Frameworks for Rich Web Enterprise Application Thomas Wiradikusuma thomas@wiradikusuma.com Presentation to the 20 th.](https://reader030.fdocuments.net/reader030/viewer/2022012904/5697bfdd1a28abf838cb1542/html5/thumbnails/31.jpg)
Resources
• Spring Website: www.springframework.org
• The Spring Reference Manual.• Walls, Craig and Ryan Breidenbach.
Spring in Action. Manning. 2003. • Johnson, Rod and Jurgen Hoeller.
J2EE without EJB. Wrox. 2004.• DWR Website:
http://www.getahead.ltd.uk/dwr