基于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资料。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值