<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

     

    [原創] Adding OSGi support to graniteds v1.1.0

    There are sevral steps to OSGify the graniteds v1.1.0

    Step1:
     create a adaptor serlvet which is used to register it in the OSGI env.
     

     1
     package org.granite.adaptor;
     2 
     3 import java.io.DataInputStream;
     4 import java.io.DataOutputStream;
     5 import java.io.IOException;
     6 
     7 import javax.servlet.ServletConfig;
     8 import javax.servlet.ServletException;
     9 import javax.servlet.http.HttpServlet;
    10 import javax.servlet.http.HttpServletRequest;
    11 import javax.servlet.http.HttpServletResponse;
    12 
    13 import org.granite.config.GraniteConfig;
    14 import org.granite.config.flex.ServicesConfig;
    15 import org.granite.context.AMFContextImpl;
    16 import org.granite.context.GraniteContext;
    17 import org.granite.messaging.amf.AMF0Message;
    18 import org.granite.messaging.amf.io.AMF0Deserializer;
    19 import org.granite.messaging.amf.io.AMF0Serializer;
    20 import org.granite.messaging.amf.process.AMF0MessageProcessor;
    21 import org.granite.messaging.webapp.HttpGraniteContext;
    22 
    23 /**
    24  * 
    25  * @author gembin
    26  *
    27  */
    28 public class AMFServiceAdaptor extends HttpServlet {
    29     // for Granite Data Service(GDS)
    30     private GraniteConfig graniteConfig = null;
    31     private ServicesConfig servicesConfig = null;
    32 
    33     public void init(ServletConfig config) {
    34         try {
    35             super.init(config);
    36             graniteConfig = GraniteConfig.loadConfig(getServletContext());
    37             servicesConfig = ServicesConfig.loadConfig(getServletContext());
    38             
    39         } catch (ServletException e) {
    40             e.printStackTrace();
    41         }
    42     }
    43     
    44     public ServicesConfig getServicesConfig(){
    45          return servicesConfig;
    46     }
    47     
    48     protected void doPost(HttpServletRequest request,
    49             HttpServletResponse response) throws ServletException, IOException {
    50         System.out.println("Start Processing AMF Request"+getServicesConfig());
    51         try {
    52             GraniteContext context = HttpGraniteContext.createThreadIntance(
    53                     graniteConfig, servicesConfig, getServletContext(),request,response);
    54          
    55             if (context == null)
    56                 throw new ServletException("GraniteContext not Initialized!!");
    57              
    58             AMFContextImpl amf = (AMFContextImpl) context.getAMFContext();
    59             //Phase1 Deserializing AMF0 request
    60             System.out.println(">>>>> Deserializing AMF0 request from"+request.getRequestURI());
    61             AMF0Deserializer deserializer = new AMF0Deserializer(
    62                     new DataInputStream(request.getInputStream()));
    63             AMF0Message amf0Request = deserializer.getAMFMessage();
    64             
    65             //Phase2 Processing AMF0 request 
    66             System.out.println(">>>>> Processing AMF0 request: " + amf0Request);
    67             AMF0Message amf0Response = AMF0MessageProcessor.process(amf0Request);
    68             System.out.println("<<<<< Returning AMF0 response: " + amf0Response);
    69 
    70             //Phase3 Send back response to the client
    71             response.setContentType(AMF0Message.CONTENT_TYPE);
    72             AMF0Serializer serializer = new AMF0Serializer(new DataOutputStream(response.getOutputStream()));
    73             serializer.serializeMessage(amf0Response);
    74             
    75             System.out.println("End of Processing AMF Request");
    76         } catch (Exception e) {
    77             e.printStackTrace();
    78             throw new ServletException(e);
    79         }
    80     }
    81 
    82 }
    83



    Step2:
       register the servlet in OSGi Container
    HttpContext commonContext = httpService.createDefaultHttpContext();
    Dictionary initparams 
    = new Hashtable();
    initparams.put(
    "servlet-name""AMFMessageServlet");
    httpService.registerServlet(
    "/WebContent/graniteamf/amf",new AMFServiceAdaptor(), initparams, commonContext);

    Step3:
        Ensure the servicesConfigPath(/WEB-INF/flex/services-config.xml) and graniteConfigPath(/WEB-INF/granite/granite-config.xml),otherwise, you need
    modify the source code of ServicesConfig.java and GraniteConfig.java to put the good config files in your project!


    finally:
       you've made it. it's time to create a testService to test it.
    Sample:

      public class UserAuthenticateService{
         public boolean auth(String username,String pwd){
            if (pwd.equals("1234") && username.equals("gembin")) {
                    return true;
             } 
           return false;
         }
      }
      put this service in the service-config.xml
       <services>
            <service
                id="granite-service"
                class="flex.messaging.services.RemotingService"
                messageTypes="flex.messaging.messages.RemotingMessage">
                <destination id="authenticateService">
                    <channels>
                        <channel ref="my-graniteamf"/>
                    </channels>
                    <properties>
                        <scope>session</scope>
                        <source>net.blogjava.gembin.domain.services.security.UserAuthenticateService</source>
                    </properties>
                </destination>
            </service>
        </services>

    For the actionscript part, i just omit it. if you don't know how to use it to communicate to the data service or you have some questions, pls reply.

    Next entry Dynamic DataService registration in OSGi Container for Graniteds v1.1.0

    Enjoy it!!!

    posted on 2008-12-03 23:18 gembin 閱讀(1700) 評論(2)  編輯  收藏 所屬分類: OSGiFlex

    評論

    # re: [原創] Adding OSGi support to graniteds v1.1.0 2008-12-05 00:52 Franck Wolff

    Hi,

    Would you like to contribute your code to GraniteDS? I guess other people would be happy to get builtin OSGi support in GDS.

    Regards,
    Franck.

    PS: you'll find my email on GDS site.  回復  更多評論   

    # re: [原創] Adding OSGi support to graniteds v1.1.0 2008-12-05 21:30 gembin

    i'm very happy to contribute!
      回復  更多評論   

    導航

    統計

    常用鏈接

    留言簿(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
    主站蜘蛛池模板: 成人国产mv免费视频| 57pao一国产成永久免费 | 大地资源中文在线观看免费版| 国产在线观看www鲁啊鲁免费| 亚洲中文无码mv| 午夜免费福利影院| 亚洲AV无码精品国产成人| 国产精品免费视频一区| 美女啪啪网站又黄又免费| 亚洲精品第一国产综合境外资源 | 亚洲日本乱码卡2卡3卡新区| 日韩吃奶摸下AA片免费观看| 久久久久se色偷偷亚洲精品av | 亚洲一卡2卡3卡4卡5卡6卡| 在线免费观看色片| 美女被羞羞网站免费下载| 亚洲天堂免费在线视频| 国产免费无码一区二区| 亚洲精品美女在线观看播放| 三年片在线观看免费大全| 国产精品亚洲а∨无码播放麻豆 | 日本亚洲欧洲免费天堂午夜看片女人员| A国产一区二区免费入口| 国产AV无码专区亚洲AVJULIA| 久久国产高潮流白浆免费观看 | 九九九精品视频免费| 亚洲第一极品精品无码久久| 8x8x华人永久免费视频| 亚洲国产欧美国产综合一区 | 亚洲午夜成人精品无码色欲| 亚洲国产精品一区二区第四页| a级毛片在线免费| 亚洲av乱码一区二区三区香蕉| 国产无遮挡吃胸膜奶免费看视频| 国产vA免费精品高清在线观看 | 亚洲乱码av中文一区二区| 中文字幕在线亚洲精品| 国产日本一线在线观看免费| 欧洲美女大片免费播放器视频| 亚洲永久中文字幕在线| 亚洲国产成人久久笫一页|