James Server
  1. James Server
  2. JAMES-893

JSR250 Replacement For Avalon Framework

    Description

    Background
    ----------------
    James uses the Phoenix container and the Avalon Framework.

    Unfortunately, both are now dead projects. This is now starting to cause maintainability issues. Realistically, James will need to start maintaining a fork or accept that some features will not work correctly in this container. It is also hard to recruit developers willing to learn these obsolete technologies.

    Both Avalon and Phoenix take intrusive approaches to IoC. Avalon imposes coupling to a number of lifecycle interfaces. Phoenix requires a proliferation of finely grained internal interfaces.

    However, these components have many advantages. They are now well tested and debugged. Users of James (as opposed to developers) seem happy with them.

      Activity

      Hide
      Robert Burrell Donkin added a comment -

      Aims:

      1. Retain support for the Phoenix container
      2. Decouple services from Avalon and Phoenix intrusions

      Show
      Robert Burrell Donkin added a comment - Aims: 1. Retain support for the Phoenix container 2. Decouple services from Avalon and Phoenix intrusions
      Hide
      Robert Burrell Donkin added a comment - - edited

      Proposal Overview:

      • Use JSR-250 annotations on existing components to replace intrusive Avalon Framework
      • Use Service Locator to loosen coupling to Phoenix blocks
      Show
      Robert Burrell Donkin added a comment - - edited Proposal Overview: Use JSR-250 annotations on existing components to replace intrusive Avalon Framework Use Service Locator to loosen coupling to Phoenix blocks
      Hide
      Robert Burrell Donkin added a comment -

      Avalon Framework Provides:

      1. Configuration
      2. Service Location
      3. Lifecycle Events

      Show
      Robert Burrell Donkin added a comment - Avalon Framework Provides: 1. Configuration 2. Service Location 3. Lifecycle Events
      Hide
      Robert Burrell Donkin added a comment -

      Phase 1: Replace Avalon Lifecycle Interfaces

      • Use @PostConstruct to mark initialization method, remove Initializable
      • Use @PreDestroy to mark dispose method, remove Disposable
      Show
      Robert Burrell Donkin added a comment - Phase 1: Replace Avalon Lifecycle Interfaces Use @PostConstruct to mark initialization method, remove Initializable Use @PreDestroy to mark dispose method, remove Disposable
      Hide
      Robert Burrell Donkin added a comment -

      Phase 2: Replace Servicable Interface

      • Use @Resource annotations on setters to replace Serviceable
      Show
      Robert Burrell Donkin added a comment - Phase 2: Replace Servicable Interface Use @Resource annotations on setters to replace Serviceable
      Hide
      Robert Burrell Donkin added a comment -

      Phase 3: Replace Avalon Configuration

      • Model configuration with POJOs
      • Use @Resource annotations on setters to replace Configurable
      Show
      Robert Burrell Donkin added a comment - Phase 3: Replace Avalon Configuration Model configuration with POJOs Use @Resource annotations on setters to replace Configurable
      Hide
      Norman Maurer added a comment -

      I think its not to hard todo this with guice + guicey-fruit. IMHO we should start to build guice modules per "james module". Then after this is done we could easily write up the bindings.

      Show
      Norman Maurer added a comment - I think its not to hard todo this with guice + guicey-fruit. IMHO we should start to build guice modules per "james module". Then after this is done we could easily write up the bindings.
      Hide
      Norman Maurer added a comment -

      Done.. its in trunk now. Using Spring for JSR250 support

      Show
      Norman Maurer added a comment - Done.. its in trunk now. Using Spring for JSR250 support

        People

        • Assignee:
          Norman Maurer
          Reporter:
          Robert Burrell Donkin
        • Votes:
          0 Vote for this issue
          Watchers:
          0 Start watching this issue

          Dates

          • Created:
            Updated:
            Resolved:

            Development