kackb00n: OSGi - Custom Launcher - Service-Registrierung

Beitrag lesen

Hallo!

Ich probiere mich zur Zeit in OSGi einzuarbeiten, tue mich dabei aber an einigen Stellen relativ schwer.

Folgende Situation:

Ich habe einen eigenen Launcher, das ist nur ein "simples" Java-Projekt, momentan auch nur mit der Main-Klasse:

public class Main {

	public static void main(String[] args) {
		Map<String, String> props = new HashMap<>();
		
		try {
			Framework fw = getFactory().newFramework(props);
			fw.init();

			BundleContext ctx = fw.getBundleContext();
			AutoProcessor.process(props, ctx);
			
			// Install core bundles

			// Hier!
			
			fw.start();
			fw.waitForStop(0);
			
			System.exit(0);
		}
		catch(Exception e) {
			e.printStackTrace(System.err);
			System.exit(1);
		}
	}
	
	public static FrameworkFactory getFactory() {
		return ServiceLoader.load(FrameworkFactory.class).iterator().next();
	}

}

Dann habe ich noch ein OSGi-Bundle, dass nicht viel mehr macht als ein Interface bereitzustellen.

public interface ArgumentsProvider {
	public String[] getArguments();
}

Da sollen dann Argumente, die über die main(String[] args) ankommen bereit gestellt werden. Allerdings habe ich keine Ahnung wie ich nun die Dependencies setzen muss.

An der Stelle die ich im Launcher mit // Hier! markiert hab, hab ich mir etwas in der Art vorgestellt:

			ctx.registerService(
					ArgumentsProvider.class.getName(),
					new ArgumentsProvider() {
						public String[] getArguments() {
							return args;
						}
					},
					null
			);

Könnt ihr mir sagen, wie ich die Dependencies setzen muss?

MfG kackb00n