<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)] 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: [原創(chuàng)] 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: [原創(chuàng)] Adding OSGi support to graniteds v1.1.0 2008-12-05 21:30 gembin

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

    導航

    統(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
    主站蜘蛛池模板: A国产一区二区免费入口| 亚洲Av无码乱码在线znlu| sihu国产精品永久免费| 亚洲AV一二三区成人影片| 国产亚洲一区二区三区在线观看 | 亚洲欧洲自拍拍偷精品 美利坚| 永久在线观看www免费视频| www免费插插视频| 亚洲av无码一区二区三区人妖 | 国产精品99久久免费观看 | 亚洲男人在线无码视频| 午夜免费福利影院| 18国产精品白浆在线观看免费| 花蝴蝶免费视频在线观看高清版| 国产精品亚洲专区在线播放| 亚洲永久在线观看| 亚洲激情校园春色| 亚洲黄色免费在线观看| 亚洲国产婷婷六月丁香| 亚洲午夜久久久影院伊人| 亚洲福利在线播放| 四虎永久精品免费观看| 好爽好紧好大的免费视频国产 | 中文字幕亚洲情99在线| 亚洲一区二区三区在线| 亚洲精品视频久久| 亚洲美免无码中文字幕在线| 亚洲男人天堂2017| 亚洲AV无码久久精品成人| 国产亚洲精品无码成人| 亚洲日本va中文字幕久久| 狠狠色婷婷狠狠狠亚洲综合| 亚洲精品动漫人成3d在线| 亚洲国产电影av在线网址| 亚洲AV日韩精品一区二区三区| 四虎永久在线精品免费影视| 国产做床爱无遮挡免费视频| 四虎永久精品免费观看| 亚洲精品动漫人成3d在线 | 久久久久久成人毛片免费看| 最新国产乱人伦偷精品免费网站 |