[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [equinox-dev] Integrating plugin bundles in normal Java

Your eclipse application (org.my.Application extension) implements the method org.eclipse.equinox.app.IApplication.start(IApplicationContext). Once your application is done it should return from the start(IApplicationContext) method. This should eventually cause the platform to shutdown and return from main(launcherArgs). If this is not happening then I recommend you opening a bug with a testcase to reproduce.

Thanks.

Tom



Inactive hide details for Tom Hsu ---01/09/2009 12:38:12 PM---Hi experts,Tom Hsu ---01/09/2009 12:38:12 PM---Hi experts,


From:

Tom Hsu <tom.hsu@xxxxxxxxxx>

To:

Equinox development mailing list <equinox-dev@xxxxxxxxxxx>

Date:

01/09/2009 12:38 PM

Subject:

Re: [equinox-dev] Integrating plugin bundles in normal Java




Hi experts,

I have successfully my app A from another main POJO class like the following:

   public static void main(String[] args) {
       String[] launcherArgs = {
               "-configuration",
               "C:\\pathTto\\configuration",
               "-install",
               "C:\\pathToIntall",
               "-DJavaAgentLogConfigFile=C:\\pathToLogConfig\\log4j-commandline.xml",
               "-application",
               "org.my.Application",
       };
       org.eclipse.core.launcher.Main.main(launcherArgs);
   }

The above requires the use of startup.jar's org.eclipse.core.launcher.Main.main. However, I notice I do not have control once I called Main.main. I do not have a way for my App A to return the control to the calling main java file. I tried throwing an Exception in my app A to see if it will bubble up to the POJO main method, but it does not. I cannot use System.exit(0) since it terminates the whole JVM. snippet:
try {
org.eclipse.core.launcher.Main.main(launcherArgs);
} catch (Exception ex)
{
System.out.println("I am done with app A");
}

in app A's terminate method:
terminate() {
System.out.println();
//System.exit();
throw new RuntimeException("I am done. get me out of here");
}

What is a better way to achieve this? Bascially I want to run App A which through eclipse and use osgi from another program. Once App A is done, it needs to terminate and return control to the my POJO.

Regards,
Tom

Thomas Watson wrote:
      I would recommend that you launch app A in a way that is consistent with the normal launch of eclipse. By that I mean use a configuration folder with a config.ini that is the same as if you are launching your application with the eclipse.exe. The config.ini configures a set of bundles into the framework for your application. You should be able to do something like this

             String[] equinoxArgs = { "-console", "-noExit",
                   "-configuration" "/path/to/configuration",
                   "-application", "myApp.Application"};
            BundleContext context = EclipseStarter.startup(equinoxArgs, null);
             Object appResult = EclipseStarter.run(null);


      Tom



      Inactive hide details for Tom Hsu ---10/29/2008 01:41:44 PM---Hi experts,Tom Hsu ---10/29/2008 01:41:44 PM---Hi experts,

      From:

      Tom Hsu <tom.hsu@xxxxxxxxxx>

      To:

      equinox-dev@xxxxxxxxxxx

      Date:

      10/29/2008 01:41 PM

      Subject:

      [equinox-dev] Integrating plugin bundles in normal Java




      Hi experts,

      I am new to equinox so please excuse me for some obvious/stupid
      questions. However, I am still trying to wrap my head around this module
      system.

      I am tasked with integrating an existing application A that is build
      using bundles and equinox osgi in eclipse into another standalone Java
      program B that will be traditional jar based program. I would like to
      invoke the Equinox OSGi system to load these bundles/packages in the
      standalone Java program through code and execute the main method of the
      app A through program B.

      My setup is as follows:
      /plugins/ all the bundles that app A requires are here.
              also app A has a main bundle here

      I can use Eclipse Application run option to launch it or comandline
      "java -cp startup.jar org.eclipse.core.launcher.Main -
      application myApp.Application ..."

      However, I am exploring the option to launch app A with another existing
      java program B. As a prototype, I am writing a plain POJO with main method:

        public static void main(String[] args) throws Exception {
            String[] equinoxArgs = { "-console", "-noExit" };
            BundleContext context = EclipseStarter.startup(equinoxArgs, null);
           
            String pluginDir = "
      file:C:\\work\\";
            String commonJarName =
      "org.eclipse.equinox.common_3.2.0.v20060603.jar";
            String configJarName =
      "org.eclipse.update.configurator_3.2.2.R32x_v20070111.jar";
           
            Bundle commonBundle = context.installBundle(pluginDir +
      commonJarName);
            Bundle configBundle = context.installBundle(pluginDir +
      configJarName);
            configBundle.start();
           
            String jarName = "fetchlets.jar";
            String directoryPath = "
      file:C:\\work\\plugins\\";
            String locationStr = directoryPath + jarName;

            Bundle bundle = context.installBundle(locationStr);
            bundle.start();
        }

      However, my bundle fetchlets.jar cannot be started because, the
      configurator bundle does not auto-discover all the required bundles in
      the plugins directory. Can someone help me figure out if I can tell the
      EclipseStarter to auto-load all bundles at a specific locations?

      Or is there another approach I can use that is very similar to the run
      options in Eclipse where setting the platform will suffice to load all
      the plugins automatically?

      I have been looking at:

      http://www.eclipse.org/equinox/documents/quickstart.php
      http://www.eclipsezone.com/eclipse/forums/t93976.rhtml


      Regards,
      Tom
      _______________________________________________
      equinox-dev mailing list

      equinox-dev@xxxxxxxxxxx
      https://dev.eclipse.org/mailman/listinfo/equinox-dev





      _______________________________________________
      equinox-dev mailing list
      equinox-dev@xxxxxxxxxxx
      https://dev.eclipse.org/mailman/listinfo/equinox-dev
       
      _______________________________________________
      equinox-dev mailing list
      equinox-dev@xxxxxxxxxxx
      https://dev.eclipse.org/mailman/listinfo/equinox-dev


GIF image

GIF image