How to change Wicket to deployment mode
By default, Wicket is running in development mode. In this post we will see how to change that to Deployment mode ( commonly called as production mode ).
There is two method to change wicket to run in deployment (production) mode :
1. web.xml
The first st way is add a ‘configuration’ context-param in web.xml.
File : web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app ... >
...
<filter>
<filter-name>wicket.app</filter-name>
<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
<init-param>
<param-name>applicationClassName</param-name>
<param-value>org.starobjects.wicket.viewer.app.WicketObjectsApplication</param-value>
</init-param>
<init-param>
<param-name>configuration</param-name>
<param-value>deployment</param-value>
</init-param>
</filter>
</web-app>
The system property is checked first, allowing you to add a web.xml param for deployment, and a command-line override when you want to run in development mode during development.
2. Wicket getConfigurationType()
The 2nd way is override the Wicket application getConfigurationType() method.
File : Wicket Application class
import org.apache.wicket.Application;
import org.apache.wicket.protocol.http.WebApplication;
public class WicketApplication extends WebApplication
{
@Override
public String getConfigurationType()
{
return Application.DEPLOYMENT;
}
}
Note The Wicket application always has the highest priority. For example, if web.xml is âdevelopmentâ and Wicket application is ‘deployment’, Wicket will run in ‘deployment’ mode.
How do I know in what mode (DEVELOPMENT/DEPLOYMENT) my application runs?
As of Wicket 1.3.0, you can call Application.getConfigurationType(). Prior to that, there is no flag telling you in which mode you are. If you want a flag subclass Application.configure() store the “configurationType” parameter in a variable.
if (DEVELOPMENT.equalsIgnoreCase(configurationType))
{
log.info("You are in DEVELOPMENT mode");
getResourceSettings().setResourcePollFrequency(Duration.ONE_SECOND);
getDebugSettings().setComponentUseCheck(true);
getDebugSettings().setSerializeSessionAttributes(true);
getMarkupSettings().setStripWicketTags(false);
getExceptionSettings().setUnexpectedExceptionDisplay(
UnexpectedExceptionDisplay.SHOW_EXCEPTION_PAGE);
getAjaxSettings().setAjaxDebugModeEnabled(true);
}
else if (DEPLOYMENT.equalsIgnoreCase(configurationType))
{
getResourceSettings().setResourcePollFrequency(null);
getDebugSettings().setComponentUseCheck(false);
getDebugSettings().setSerializeSessionAttributes(false);
getMarkupSettings().setStripWicketTags(true);
getExceptionSettings().setUnexpectedExceptionDisplay(
UnexpectedExceptionDisplay.SHOW_INTERNAL_ERROR_PAGE);
getAjaxSettings().setAjaxDebugModeEnabled(false);
}


