Lightweight Modular Service Container - Based on existing JBoss Modules, Maven, and CDI Standard Technologies.
Java
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bom
container-api
container-tests [maven-release-plugin] prepare for next development iteration Feb 8, 2017
container [maven-release-plugin] prepare for next development iteration Feb 8, 2017
manager [maven-release-plugin] prepare for next development iteration Feb 8, 2017
maven-plugin
proxy-tests
proxy
se-tests [maven-release-plugin] prepare for next development iteration Feb 8, 2017
se [maven-release-plugin] prepare for next development iteration Feb 8, 2017
test-harness
.gitignore
.travis.yml
CONTRIBUTING.md
LICENSE Initial commit. Jun 28, 2013
README.md
pom.xml

README.md

Furnace

Lightweight Modular Service Container - Based on JBoss Modules and Maven. It's easier than OSGi :)

Build Status License Maven central

Usage

First, include the Furnace dependency in your project:

<dependency>
   <groupId>org.jboss.forge.furnace</groupId>
   <artifactId>furnace-se</artifactId>
   <version>${version.furnace}</version>
</dependency>

Then configure the container and start it:

Furnace furnace = FurnaceFactory.getFurnace()
furnace.addRepository(AddonRepositoryMode.MUTABLE, new File(OperatingSystemUtils.getUserForgeDir(), "addons"));

To install addons, you will need to add the following dependencies to your project:

<dependency>
   <groupId>org.jboss.forge.furnace</groupId>
   <artifactId>furnace-manager</artifactId>
   <version>${version.furnace}</version>
</dependency>

<dependency>
   <groupId>org.jboss.forge.furnace</groupId>
   <artifactId>furnace-manager-resolver-maven</artifactId>
   <version>${version.furnace}</version>
</dependency>

Then create a new AddonManager:

AddonManager manager = new AddonManagerImpl(furnace, new MavenAddonDependencyResolver())

Once you have an AddonManager instance, you can begin to install addons (You can do this while Furnace is running):

InstallRequest request = manager.install(AddonId.from("org.example:my-addon", "1.0.0.Final"));
request.perform();

Don't forget to start Furnace:

Future<Furnace> future = furnace.startAsync();
future.get(); // wait for Furnace to start, before continuing.

Once this is done, you'll now be able to request services from Furnace's AddonRegistry, and utilize the functionality of the addons you've installed:

MyServiceType instance = furnace.getAddonRegistry().getServices(MyServiceType.class).get();

Of course, addons can be pre-bundled into a project using the Furnace Maven Plugin, making it much simpler (and faster) to run your application:

<plugin>
   <groupId>org.jboss.forge.furnace</groupId>
   <artifactId>furnace-maven-plugin</artifactId>
   <version>${version.furnace}</version>
   <executions>
      <execution>
         <id>deploy-addons</id>
         <phase>prepare-package</phase>
         <goals>
            <goal>addon-install</goal>
         </goals>
         <inherited>false</inherited>
         <configuration>
            <addonRepository>${basedir}/addon-repository</addonRepository>
            <addonIds>
               <addonId>org.example:my-addon,1.0.0.Final</addonId>
            </addonIds>
         </configuration>
      </execution>
   </executions>
</plugin>

To learn more about writing addons, see the full documentation here: https://github.com/forge/core#developing-an-addon