SlideShare a Scribd company logo
Wicket Live on Stage
     A Wicket case study
Agenda

• Why Wicket?
• What is Vocus?
• Wicket in Action
Topicus
• ASP/SAAS provider
 • healthcare
 • education
 • finance
 • insurance
Topicus Gifkikker
ket
      ic
 hy W
W
Web 2002

• Struts
• JSPs
• OJB
Web 2003

• Maverick
• Velocity
• Baritus
• Hibernate
Parnassys
Parnassys: searching
Parnassys: attendance
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
Web 2005

• Wicket
• Hibernate 3!
• Java 5
• Start of Vocus
Vocus

• Student information system
• Secondary/High school
• SaaS solution
• Fully web based
Functionality

• Registration
• Funding
• Results/Exams
• Student guidance
• Attendance
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
DEMO
Student information at a glance
     (data has been scrambled)
Entering grades from home
   (data has been scrambled)
Wicket’s TreeTable in action
    (data has been scrambled)
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
Keeping your server
         alive
• request logger
• serialization check
• use a profiler
• pick the right GC
• run on JDK 6 (mustang)
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});

    
}
  
}
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);
}
Questions?
BEER!

More Related Content

Wicket Live on Stage