Osgi là gì

package org.o7planning.tutorial.helloosgi.mathconsumer;import org.osgi.framework.BundleActivator;import org.osgi.framework.BundleContext;public class Activator implements BundleActivator { private static BundleContext context; static BundleContext getContext() { return context; } public void start(BundleContext bundleContext) throws Exception { Activator.context = bundleContext; System.out.println("MathConsumer Starting..."); System.out.println("MathConsumer Started"); } public void stop(BundleContext bundleContext) throws Exception { Activator.context = null; System.out.println("MathConsumer Stopped"); }}
MathConsumer là một OSGi nó cũng được gọi là 1 Bundle. Bây giờ chúng ta sẽ khai báo MathConsumer sử dụng một số Bundle khác mục đích để có thể chạy MathConsumer sau này.

Bạn đang xem: Osgi là gì


org.eclipse.osgiorg.eclipse.equinox.consoleorg.apache.felix.gogo.commandorg.apache.felix.gogo.runtimeorg.apache.felix.gogo.shell
*

*

*

*

*

Như hình minh họa chúng ta thấy ID của OSGi MathConsumer là 2, sử dụng lệnh "stop" để dừng Bundle này.
package org.o7planning.tutorial.helloosgi.mathservice;public interface MathService { public int sum(int a, int b);}
package org.o7planning.tutorial.helloosgi.mathservice.impl;import org.o7planning.tutorial.helloosgi.mathservice.MathService;public class MathServiceImpl implements MathService {
package org.o7planning.tutorial.helloosgi.utils;public class MathUtils { public static int minus(int a, int b) { return a- b; }}
Đăng ký dịch vụ MathService để các OSGi khác có thể sử dụng. Việc này được thực hiện trong Activator của OSGi MathService.

Xem thêm: Từ Điển Anh Việt "Data Flow Diagram ( Dfd Là Gì, Sơ Đồ Luồng Dữ Liệu (Data Flow Diagram


package org.o7planning.tutorial.helloosgi;import org.o7planning.tutorial.helloosgi.mathservice.MathService;import org.o7planning.tutorial.helloosgi.mathservice.impl.MathServiceImpl;import org.osgi.framework.BundleActivator;import org.osgi.framework.BundleContext;public class Activator implements BundleActivator { private static BundleContext context; static BundleContext getContext() { return context; } public void start(BundleContext bundleContext) throws Exception { Activator.context = bundleContext; System.out.println("Registry Service MathService..."); this.registryMathService(); System.out.println("OSGi MathService Started"); } private void registryMathService() { MathService service = new MathServiceImpl(); context.registerService(MathService.class, service, null); } public void stop(BundleContext bundleContext) throws Exception { Activator.context = null; System.out.println("OSGi MathService Stopped!"); }}
Cấu hình để xuất khẩu (export) 2 packages org.o7planning.tutorial.helloosgi.utilsorg.o7planning.tutorial.helloosgi.mathservice.OSGi giống như một cái hộp đóng, các OSGi khác chỉ có thể sử dụng các class/interface của OSGi này nếu nó nằm trong các package được xuất khẩu ra ngoài.
OSGi MathConsumer chỉ có thể sử dụng các class/interface nằm trong các package mà MathService xuất khẩu.