首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

基于Maven构建OSGI(3)

2012-08-24 
基于Maven构建OSGI(三)注册web应用请参考如下实例程序: package testweb.internal import javax.servlet.

基于Maven构建OSGI(三)

注册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资料。

热点排行