...
The Resin wiki page at http://wiki.caucho.com/Wicket also provides an up-to-date documentation of the integration.
Resin 3.1.5 includes Wicket plugins to support full WebBeans (JSR-299) integration for the Wicket application object, and dependency injection for component objects.
The Application object can use the following capabilities:
- Injection using @In, @Named, and custom @BindingType injection for both application services and components and app-server resources (databases, jms, ejb, etc)
- Predefined aspects such as EJB's @TransactionAttribute and @RolesAllowed
- Both WebBeans and EJB interception using @Interceptors or @InterceptionType
- WebBeans @Observes for listening for application events
The components get @In and @Named injection, but not the other capabilities, since interception conflicts with the Wicket style of allowing components to use "new" for easy instantiation.
The three plugin classes are
- com.caucho.wicket.ResinApplicationFactory - for creating applications
- com.caucho.wicket.ResinComponentInjector - for injecting component resources
- com.caucho.wicket.ResinWebApplication - as a convenience for injecting resources
The application factory is configured in Wicket's <filter> definition as the applicationFactoryClassName. The sample WEB-INF/resin-web.xml might look like the following:
Code Block |
---|
<web-app xmlns="http://caucho.com/ns/resin">
<filter filter-name="wicket"
filter-class="org.apache.wicket.protocol.http.WicketFilter">
<init-param
applicationClassName="demo.HelloWorldApplication"
applicationFactoryClassName="com.caucho.wicket.ResinApplicationFactory"/>
</filter>
<filter-mapping url-pattern="/*" filter-name="wicket"/>
</web-app>
|
The component injector is registered with your Application object and looks like the following:
Code Block |
---|
import com.caucho.wicket.*;
public MyApplication extends WebApplication {
public MyApplication()
{
addComponentInstantiationListener(new ResinComponentInjector());
}
...
}
|
The Resin wiki page at http://wiki.caucho.com/Wicket also provides an up-to-date documentation of the integration.
(I'd meant to put this under the integration guides section, not a top-level page, but I don't seem to have the permissions to move it.)