Name | OSGi Plugin | ||
---|---|---|---|
Publisher | Donald Brown Apache Software Foundation | ||
License | Open Source (ASL2) | ||
Version | 0.1-SNAPSHOT | Compatibility | Struts Bundled with Struts from 2.01.9+ |
Homepage | |||
Download |
Overview
Note |
---|
This plugin is only experimental and hasn't been released yet. It is not ready to be used in production applications. |
The Struts 2 OSGi plugin
Excerpt |
---|
leverages OSGi to allow Struts 2 applications to be divided into multiple jars (bundles) and managed at runtime |
Features
- Application packages can be divided into bundles
- Supports Velocity and FreeMarker templates
- Supports Struts Spring integration
Missing Features
- No GUI for bundle administration
- Probably can't access application classes from bundles, including Spring classes
- No support for any results other than Velocity
Simple Usage
If your actions do not extend ActionSupport, and you are not using Spring then convert your jar that contains Actions, Velocity files, and a struts.xml
file into a bundle, add a few lines in the jar's manifest.mf:
No Format |
---|
Bundle-Activator: org.apache.struts2.osgi.StrutsActivator
Export-Package: com.mycompany.myapp.actions
Bundle-Version: 1.0.0
Bundle-SymbolicName: foo.actions
|
Now the jar is ready to be deployed. Drop the jar into the /WEB-INF/classes/bundles
directory and it will automatically be installed when the application starts up.
Advanced Usage
If your actions extend ActionSupport, or use other classes distributed with Struts, you will have to list their package names in the jar's manifest.mf:
No Format |
---|
Import-Package: com.opensymphony.xwork2
|
If you want to use the Spring as the object factory for your actions, then follow these steps:
...
<constant name="struts.objectFactory" value="osgi" />
<constant name="struts.objectFactory.delegate" value="spring" />
<constant name="struts.freemarker.manager.classname" value="org.apache.struts2.osgi.BundleFreemarkerManager" />
...
Wiki Markup |
---|
{rate:title=Rating|theme=dynamic} |
Overview
This plugin
Excerpt |
---|
provides support for starting an instance of Apache Felix inside a web application, and scanning installed bundles for Struts configuration |
If you are going to use Velocity results, then add Velocity and Common Digester jars to your application. Using maven:
...
<dependency>
<groupId>velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.5</version>
</dependency>
<dependency>
<groupId>velocity-tools</groupId>
<artifactId>velocity-tools</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>commons-digester</groupId>
<artifactId>commons-digester</artifactId>
<version>1.8</version>
</dependency>
Example
Here is how an example architecture would look:
Gallery |
---|
Settings
The following settings can be customized. See the developer guide.
Setting | Description | Default | Possible Values |
---|---|---|---|
| The alias of the ObjectFactory to wrap |
| Any configured alias |
Installation
Follow these steps to use this plugin:
- Copying the plugin jar into your application's
/WEB-INF/lib
directory. - Modify your
web.xml
to add the osgi configuration provider to your Struts 2 filter:Code Block lang xml <filter> <filter-name>struts</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> <init-param> <param-name>configProviders</param-name> <param-value>org.apache.struts2.osgi.OsgiConfigurationProvider</param-value> </init-param> </filter>
Resources
Version History
...
Version
...
Date
...
Author
...