Wicket Live on Stage

5,351 views

Published on

Wicket Live on Stage features a Wicket project that has been in production use for over a year. The application is a web application for dutch highschools for administration of students' data for funding, guidance, graduation, attendance and financial purposes.

The presentation describes the road to choosing Wicket as the core framework, and includes screenshots of the live demo (which isn't captured in this presentation) of Vocus (http://www.vocuslis.nl).

Published in: Business, Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,351
On SlideShare
0
From Embeds
0
Number of Embeds
39
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Wicket Live on Stage

  1. 1. Wicket Live on Stage A Wicket case study
  2. 2. Agenda • Why Wicket? • What is Vocus? • Wicket in Action
  3. 3. Topicus • ASP/SAAS provider • healthcare • education • finance • insurance
  4. 4. Topicus Gifkikker
  5. 5. ket ic hy W W
  6. 6. Web 2002 • Struts • JSPs • OJB
  7. 7. Web 2003 • Maverick • Velocity • Baritus • Hibernate
  8. 8. Parnassys
  9. 9. Parnassys: searching
  10. 10. Parnassys: attendance
  11. 11. Problems with MVC • 1 change requires N files to be modified (for large values of N) • high learning curve • back button • procedural programming • little to no reuse • complex UI neigh impossible
  12. 12. Web 2005 • Wicket • Hibernate 3! • Java 5 • Start of Vocus
  13. 13. Vocus • Student information system • Secondary/High school • SaaS solution • Fully web based
  14. 14. Functionality • Registration • Funding • Results/Exams • Student guidance • Attendance
  15. 15. Wicket usage • Started with 1.1 • Moved along with 1.2 • Backports from 1.3 into custom 1.2 branch • Currently migrating to 1.3
  16. 16. DEMO
  17. 17. Student information at a glance (data has been scrambled)
  18. 18. Entering grades from home (data has been scrambled)
  19. 19. Wicket’s TreeTable in action (data has been scrambled)
  20. 20. Chart 2 300000 #Requests 225000 150000 75000 0 2007-09-12 2007-09-18 2007-09-24 2007-09-30 2007-10-06 2007-10-12 2007-10-18 2007-10-24 2007-10-30 2007-11-05 2007-11-11 2007-11-17 2007-11-23 2007-11-29 >300 users
  21. 21. Keeping your server alive • request logger • serialization check • use a profiler • pick the right GC • run on JDK 6 (mustang)
  22. 22. function ClickZoekresultaten(url) { if($('SRP_SearchResultsPanel').style.display=='none') { new Ajax.Updater( 'SRP_SearchResultsPanel', url, { asynchronous : true, method : 'get', onComplete : function() { Effect.SlideDown('SRP_SearchResultsPanel', {duration : 0.5}); Behaviour.apply(); } } ); } else { Effect.SlideUp('SRP_SearchResultsPanel', {duration : 0.5}); } }
  23. 23. add(new AttributeModifier(quot;onclickquot;, true, new Model() { @Override public Object getObject(Component component) { return quot;ClickZoekresultaten('quot; + component.urlFor(ILinkListener.INTERFACE) + quot;'); return false;quot;; } })); public void onClick() { Panel panel = (Panel) getParent().get(quot;resultatenquot;); showResultaten(); ComponentRequestTarget target = new ComponentRequestTarget(panel); WebRequestCycle cycle = (WebRequestCycle) RequestCycle.get(); // zet de contenttype op xml om UTF-8 goed voor elkaar te krijgen WebResponse response = (WebResponse) cycle.getResponse(); response.setContentType(quot;text/xmlquot;); response.setLastModifiedTime(Time.START_OF_UNIX_TIME); response.setHeader(quot;Cache-controlquot;, quot;no-cache, must-revalidatequot;); cycle.setRequestTarget(target); }
  24. 24. Questions?
  25. 25. BEER!

×