<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    gembin

    OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

    HBase, Hadoop, ZooKeeper, Cassandra

    Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

    There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

    About Me

     

    [原創(chuàng)] Dynamic DataService registration in OSGi Container for Graniteds v1.1.0

    In last entry(Adding OSGi support to graniteds v1.1.0), i talk about the OSGifition of Graniteds. Now i would like to add dynamic registration of Granite DataService by using annotation (@RemoteDestination).


    Step1:
       Define two constants:
      
       public static final String TOPIC_GDS_ADD_SERVICE ="org/granite/ds/add/serviceClass";
       
    public static final String SERVICE_CLASS="serviceClass";
       Then,we modify the org.granite.config.flex.ServicesConfig.java
      
      
    import org.osgi.service.event.Event;
    import org.osgi.service.event.EventHandler;
    public
     class ServicesConfig implements ScannedItemHandler,EventHandler{
         
    //
         
    //
         public void handleEvent(Event event) {
            
    if(event.getTopic().equals(TOPIC_GDS_ADD_SERVICE)){
              Class c
    =(Class) event.getProperty(SERVICE_CLASS);
              
    if(c!=null)
                handleClass(c);
    //this method is already provided by this Class, we just call it
              else
               System.out.println(
    "Class NOT Found!!");
            }
        }
     
      }

    Step2:

       in the AMFServiceAdaptor.java I mentioned in the last entry
      
      
        BundleContext context;
        
    public AMFServiceAdaptor(BundleContext context){
            
    this.context=context;
        }
       
    public void init(ServletConfig config) {
            
    try {
                
    super.init(config);
                graniteConfig 
    = GraniteConfig.loadConfig(getServletContext());
                servicesConfig 
    = ServicesConfig.loadConfig(getServletContext());
                Dictionary
    <String, Object> properties = new Hashtable<String, Object>();
                String[] topics 
    = new String[] { TOPIC_GDS_ADD_SERVICE};
                properties.put(EventConstants.EVENT_TOPIC, topics);
                context.registerService(EventHandler.
    class.getName(), servicesConfig, properties);
            } 
    catch (ServletException e) {
                e.printStackTrace();
            }
        }
      
      
    Step3:
       In the Activator we add:

    Activator.java  
     
      Dictionary<String, Object> properties = new Hashtable<String, Object>();
       properties.put(SERVICE_CLASS, TestService.
    class);
       ServiceReference eventAdminRef 
    = context.getServiceReference(EventAdmin.class.getName());
       
    if (eventAdminRef != null){
           EventAdmin admin
    =context.getService(eventAdminRef);
            
    if(admin!=null){
                admin.sendEvent(
    new Event(TOPIC_GDS_ADD_SERVICE,properties));    
       }
      
    TestService.java

     1 package net.blogjava.gembin.domain.services.test;
     2 
     3 import org.granite.messaging.service.annotations.RemoteDestination;
     4 
     5 
     6 @RemoteDestination(id="testService", service="granite-service",channel="my-graniteamf", scope="session")
     7 public class TestService {
     8    
     9     public void test(){
    10         System.out.println("test it!!!");
    11     }
    12 
    13 }


    Step4:
      Flex Part
     
                    [Bindable]
                    
    private var srv:RemoteObject = null;
                    
    import mx.messaging.ChannelSet;
                    
    import mx.messaging.config.ServerConfig;
                    
    import mx.rpc.remoting.mxml.Operation;
                    
    private function testSend():void{
                        srv 
    = new RemoteObject();
                        srv.endpoint 
    = ServerConfig.getChannel("my-graniteamf").endpoint;
                        srv.destination 
    = "testService"
                        srv.channelSet 
    = new  ChannelSet(); 
                        srv.channelSet.addChannel(ServerConfig.getChannel(
    "my-graniteamf"));
                         var operation:Operation 
    = new Operation();
                         operation.name 
    = "test";
                         operation.addEventListener(FaultEvent.FAULT,handleFault);
                         operation.addEventListener(ResultEvent.RESULT,handleRs);
                         srv.operations 
    = {test: operation};
                         srv.test();
                    }
                    private function handleFault(e:FaultEvent):void{
                        Alert.show(e.toString());
                    }
                    private function handleRs(e:ResultEvent):void{
                        Alert.show(e.toString());
                    }
                    <mx:Button id="Test" label="TestIt" click="
    testSend();"/>

    Screen shot


     
    Conclusion
      
       from this example, you can see it's very easy to add osgi dynamic feathure support in Graniteds.

    Enjoy it!!!


    Next entry Example for GraniteDS v1.2.0 OSGi bundle 

    posted on 2008-12-04 14:51 gembin 閱讀(1718) 評論(0)  編輯  收藏 所屬分類: OSGiFlexActionScript3

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(6)

    隨筆分類(440)

    隨筆檔案(378)

    文章檔案(6)

    新聞檔案(1)

    相冊

    收藏夾(9)

    Adobe

    Android

    AS3

    Blog-Links

    Build

    Design Pattern

    Eclipse

    Favorite Links

    Flickr

    Game Dev

    HBase

    Identity Management

    IT resources

    JEE

    Language

    OpenID

    OSGi

    SOA

    Version Control

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    free counters
    主站蜘蛛池模板: 亚洲精品国产成人中文| 亚洲欧洲在线观看| 国产免费观看青青草原网站| 久久久久女教师免费一区| 91亚洲精品麻豆| 久久亚洲私人国产精品vA| 四只虎免费永久观看| 日韩成人免费aa在线看| 国产片免费福利片永久| 国产免费啪嗒啪嗒视频看看| 国产一区二区三区免费在线观看| 国产极品美女高潮抽搐免费网站| 日本免费电影一区| 又黄又爽一线毛片免费观看| 亚洲国产精品13p| 精品福利一区二区三区免费视频| 水蜜桃视频在线观看免费| 无码毛片一区二区三区视频免费播放| 在线播放免费人成视频网站| 国产三级在线免费观看| 国产成人无码区免费网站| 国产99视频精品免费专区| 免费一区二区无码视频在线播放 | 成人永久免费高清| 国产无遮挡裸体免费视频 | 91大神免费观看| 2021精品国产品免费观看| 毛片免费在线播放| 国产一级淫片免费播放电影| 亚洲精品A在线观看| 成年女人免费v片| 国产精品免费小视频| 中文字幕中韩乱码亚洲大片| 永久久久免费浮力影院| 亚洲国产精品免费观看| 久久久久国色av免费看| 中国内地毛片免费高清| 16女性下面无遮挡免费| 在线观看免费国产视频| 国产成人亚洲精品狼色在线| 亚洲第一二三四区|