Uploaded image for project: 'Nuxeo Platform'
  1. Nuxeo Platform
  2. NXP-27481

Explore and implement an easy way to start Nuxeo Runtime

    XMLWordPrintable

    Details

    • Type: New Feature
    • Status: Open
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: QualifiedToSchedule
    • Component/s: Runtime

      Description

      Context

      We have more and more needs about starting a Nuxeo Runtime outside of our Tomcat packaging. Here below a non exhaustive list:

      • conversion service as micro service
      • CoreSession through REST
      • nuxeo maven plugin
      • junit framework integration

      In each cases, we need to programmatically configure and start a Nuxeo Runtime.

      We do have ways to start Nuxeo Runtime in such way but these implementations presents some limitations:

      • our runtime implementation is tied to OSGi specification
        only bundle registry seems to be sometime useful but it is complicated/verbose to use it in a non OSGi context
      • it was originally designed to be used in tests with JUnit 4
        in order to ease things, this runtime is far from the OSGi one has every bundles share the same runtime context (equivalent of classLoader)

      Goals

      We want a simple API to initialize runtime, specify which bundles/components we want to deploy and finally start it. Something like:

      NuxeoRuntimeService runtime = new NuxeoRuntimeService.Buidler().deploy("org.nuxeo.runtime").initialize();
      runtime.start();
      runtime.stop();
      

      API related to OSGi specification should be deprecated in implementation and replaced by a generic specification (if needed).
      At the same time, check which current API makes sense and keep them. Others will be deprecated in implementation and not used latter.

      Ultimate goal, of this long story, is to have a Nuxeo Runtime used everywhere and not depending on case.

      Non Goals

      We do not want to implement everything we'll need in future, for instance partial deployement will be added later when new implementation will be robust enough and used in junit integration. This is also the case for APIs allowing to stop/standby runtime in order to undeploy/deploy bundles/components.
      We do not want to bridge new API to OSGi one now, bridges will be added later when new implementation will be robust enough and if our OSGi implementation is still relevant.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                kleturc Kevin Leturc
                Reporter:
                kleturc Kevin Leturc
                Participants:
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:

                  Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0 minutes
                  0m
                  Logged:
                  Time Spent - 1 day
                  1d