Overview
The Fess plugin system allows you to extend core functionality. Plugins are distributed as JAR files and are loaded dynamically.
Plugin Types
Fess supports the following types of plugins:
| Type | Description |
|---|---|
| DataStore | Content retrieval from new data sources (Box, Slack, etc.) |
| Script Engine | Support for new scripting languages |
| Web App | Web interface extensions |
| Ingest | Data processing during indexing |
Plugin Structure
Basic Structure
pom.xml Example
Plugin Registration
DI Container Registration
Plugins are registered via configuration files such as fess_ds.xml:
Auto Registration
Many plugins auto-register using the @PostConstruct annotation:
Plugin Lifecycle
Initialization
JAR file is loaded
DI container initializes components
@PostConstructmethods are calledPlugin is registered with the manager
Shutdown
@PreDestroymethods are called (if defined)Resources are cleaned up
Dependencies
Fess Core Dependency
External Libraries
Plugins can include their own dependency libraries:
Dependency libraries can be distributed with the plugin JAR or bundled into a fat JAR using Maven Shade Plugin.
Configuration Retrieval
Getting from FessConfig
Build and Installation
Build
Installation
From Admin Console:
Go to “System” -> “Plugins” -> “Install”
Enter the plugin name and install
Command Line:
Manual:
Copy JAR file to
plugins/directoryRestart Fess
Debugging
Log Output
Development Mode
During development, you can debug Fess from your IDE:
Debug run the
FessBootclassInclude the plugin source in your project
Set breakpoints
Published Plugins
Main plugins published by the Fess project:
| Plugin | Description |
|---|---|
| fess-ds-box | Box.com connector |
| fess-ds-dropbox | Dropbox connector |
| fess-ds-slack | Slack connector |
| fess-ds-atlassian | Confluence/Jira connector |
| fess-ds-git | Git repository connector |
| fess-theme-* | Custom themes |
These plugins are available on GitHub as development references.
Reference
DataStore Plugin Development - DataStore Plugin Development
Script Engine Plugin - Script Engine Plugin
Web App Plugin - Web App Plugin
Ingest Plugin - Ingest Plugin