注册web应用请参考如下实例程序:
package testweb.internal; import javax.servlet.Servlet; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceEvent; import org.osgi.framework.ServiceListener; import org.osgi.framework.ServiceReference; import org.osgi.service.http.HttpService; /** * Extension of the default OSGi bundle activator */ public final class ExampleActivator implements BundleActivator, ServiceListener { private BundleContext bundleContext; private ServiceReference ref; private Servlet servlet; public void start(BundleContext context) throws Exception { bundleContext = context; servlet = new QueryWebServlet(bundleContext); // 在HttpService中注册Servlet registerServlet(); } public void stop(BundleContext context) throws Exception { try { unregisterServlet(); } catch (Throwable t) { t.printStackTrace(); } servlet = null; bundleContext = null; ref = null; } public void serviceChanged(ServiceEvent event) { switch (event.getType()) { case ServiceEvent.REGISTERED: registerServlet(); break; case ServiceEvent.UNREGISTERING: unregisterServlet(); break; } } /* * 注册Web应用 */ private void registerServlet() { if (ref == null) { ref = bundleContext .getServiceReference(HttpService.class.getName()); } if (ref != null) { try { HttpService http = (HttpService) bundleContext.getService(ref); if (null != http) { // 注册动态资源Servlet http.registerServlet("/osgi/servlet", servlet, null, null); // 注册静态资源HTML http.registerResources("/osgi/file", "webapp", null); } } catch (Exception e) { e.printStackTrace(); } } } /* * 卸载Web应用 */ private void unregisterServlet() { if (ref != null) { try { HttpService http = (HttpService) bundleContext.getService(ref); if (null != http) { http.unregister("/osgi/servlet"); http.unregister("/osgi/file"); } } catch (Exception e) { e.printStackTrace(); } } } }
更详尽的内容请参考其他相关OSGI资料。