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

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

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

    J2EE之巔

     

    基于Spring DM的WEB應用開發

     

    Spring DM 1.1.x的最大特性便是它可以支持在其中部署WEB應用,我使用后感覺這是個很酷的特性,我甚至覺得用這種方式開發基于OSGi WEB應用比使用Spring DM Server更好,至少目前你可以獲得更好的便攜性(可以在多個Spring DM支持的OSGi平臺上運行),并且Spring DM Server并沒有提供更多的企業應用支持。

    不過對于剛使用Spring DM進行WEB應用開發的人來說,成功地配置卻不是一件容易的事。以下詳細的講解一下相關配置。

    1  運行環境所需的Bundles

    0             ACTIVE      system.bundle_3.2.2.R32x_v20070118

    1             ACTIVE      com.springsource.slf4j.api_1.5.0

    2             RESOLVED    org.springframework.osgi.jetty.web.extender.fragment.osgi_1.0.0

                               Master=46

    3             ACTIVE      org.springframework.bundle.osgi.extender_1.0.1.v200803070100

    4             ACTIVE      org.springframework.bundle.spring.core_2.5.5

    5             ACTIVE      org.springframework.bundle.spring.web_2.5.5

    6             ACTIVE      com.springsource.org.objectweb.asm_2.2.3

    7             RESOLVED    osgi_log_config_1.0.0

                               Master=36

    8             ACTIVE      org.springframework.bundle.osgi.core_1.0.1.v200803070100

    9             ACTIVE      com.springsource.slf4j.log4j_1.5.0

    10           ACTIVE      org.springframework.bundle.spring_2.5.2.v200803070100

    11           ACTIVE      org.springframework.bundle.spring.context_2.5.5

    12           ACTIVE      javax.servlet_2.4.0.v200706111738

    13           ACTIVE      org.springframework.osgi.servlet-api.osgi_2.5.0.SNAPSHOT

    14           ACTIVE      com.springsource.net.sf.cglib_2.1.3

    15           ACTIVE      org.springframework.bundle.spring.beans_2.5.5

    16           ACTIVE      javax.servlet.jsp_2.0.0.v200706191603

    18           ACTIVE      org.springframework.osgi.jetty.start.osgi_1.0.0

    19           ACTIVE      org.springframework.bundle.osgi.io_1.0.1.v200803070100

    20           ACTIVE      org.aopalliance_1.0.0

    21           ACTIVE      org.springframework.bundle.spring.context.support_2.5.5

    23           ACTIVE      com.springsource.org.aopalliance_1.0.0

    24           ACTIVE      org.springframework.bundle.spring.aop_2.5.5

    25           ACTIVE      com.springsource.slf4j.org.apache.commons.logging_1.5.0

    30           ACTIVE     org.objectweb.asm_2.2.3

    33           ACTIVE      org.mortbay.jetty.server_6.1.9

    35           ACTIVE      org.mortbay.jetty.util_6.1.9

    36           ACTIVE      org.springframework.osgi.log4j.osgi_1.2.15.SNAPSHOT

                               Fragments=7

    37           ACTIVE      org.mortbay.jetty_5.1.11.v200706111724

    43           ACTIVE      org.springframework.bundle.osgi.extender_1.1.2

    44           ACTIVE      org.springframework.bundle.osgi.io_1.1.2

    45           ACTIVE      org.springframework.bundle.osgi.web_1.1.2

    46           ACTIVE      org.springframework.bundle.osgi.web.extender_1.1.2

                               Fragments=2

    47           ACTIVE      org.springframework.bundle.osgi.core_1.1.2

    以上這些Bundles可以在spring dm 1.1.2的發布包中找到,以上Bundlesstart level設置為2。

    2 加入Log4j日志配置Bundles

    這個Bundles的目的在于提供log4j.properties,詳細做法可以參考本人的”spring osgi快速入門

    3 開發WEB應用

    WEB應用的開發方式和普通的WEB基本上一樣,只是加入一些OSGi的配置。

    大致結構如下:

    META-INF

                   MANIFEST.MF

    WEB-INF

                   Classes

                   Lib

                   Web.xml

                   applicationContext.xml

    1 MANIFEST.MF配置參考:

    Manifest-Version: 1.0

    Bundle-ManifestVersion: 2

    Bundle-Name: Osgi_web_app Plug-in

    Bundle-SymbolicName: osgi_web_app

    Bundle-Version: 1.0.0

    Bundle-Vendor: ccsoft

    Import-Package: javax.servlet,

     javax.servlet.http,

     javax.servlet.resources;version="2.4.0",

     org.ccsoft.service,

     org.springframework.osgi.web.context.support;version="1.1.2",

     org.springframework.web.context,

     org.springframework.web.context.support

    Bundle-ClassPath: WEB-INF/classes/,

     .

    Require-Bundle: org.springframework.bundle.osgi.core,

     org.springframework.bundle.osgi.io,

     org.springframework.bundle.spring.beans,

     org.springframework.bundle.spring.context,

     org.springframework.bundle.spring.core

    2 為了在web應用中使用spring dmIoC功能,web.xml中需要加入一些特定配置,類似于使用Spring時的配置,web.xml配置參考如下:

    <?xml version="1.0" encoding="ISO-8859-1"?>

    <web-app xmlns="http://java.sun.com/xml/ns/j2ee"

          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

          xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

          version="2.4">

          <display-name>Simple Osgi WebApp Bundle</display-name>

          <description>Simple OSGi War</description>

          <context-param>

           <param-name>contextClass</param-name>                                                                        

           <param-value>org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext</param-value>   

          </context-param>

         

          <listener>

           <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>                       

          </listener>

          <servlet>

                <servlet-name>MyServlet</servlet-name>

                <servlet-class>org.ccsoft.web.MyServlet</servlet-class>

          </servlet>

         

          <servlet-mapping>

                <servlet-name>MyServlet</servlet-name>

                <url-pattern>/servlet</url-pattern>

          </servlet-mapping>

         

         

    </web-app>

    至于applicationContext.xml則是標準的spring dm配置文件形式,只是沒有放在我們所熟悉的位置(META-INF/spring

    配置示例:

    <?xml version="1.0" encoding="UTF-8"?>

    <beans xmlns="http://www.springframework.org/schema/beans"

     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

     xmlns:osgi="http://www.springframework.org/schema/osgi"

     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

                                   http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd">

         

          <osgi:reference id="HelloServiceOsgi" interface="org.ccsoft.service.SpeakService"/>

    </beans>

    在你的WEB應用中可以使用如下代碼來訪問別的Bundle提供的服務

    WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(req.getSession().getServletContext());

    SpeakService ss=(SpeakService)ctx.getBean("HelloServiceOsgi");

    與你使用Spring開發WEB應用的寫法是完全一致的。

    好了現在你可以利用spring dm開發你的web應用了。更多相關問題還會在后續文章中逐一討論。

    蔡超

    軟件架構師

    Chao.cai@hp.com

    Chaocai2001@yahoo.com.cn

    致力于OSGi在中國的推廣

    posted on 2008-12-22 17:20 超越巔峰 閱讀(3170) 評論(1)  編輯  收藏

    評論

    # re: 基于Spring DM的WEB應用開發[未登錄] 2010-07-15 11:16 Jack

    我現在也在做spring-dm和war包相關的部署,我看了一下配置和你這個差不多,但是一運行就會出現OsgiBundleXmlWebApplicationContext這個類NoClassDefFoundError這樣的錯誤,請問你有沒有遇到過這個問題呢?  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    常用鏈接

    留言簿(12)

    隨筆分類(54)

    隨筆檔案(59)

    文章分類(2)

    文章檔案(1)

    相冊

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品国产福利片| 亚洲成aⅴ人在线观看| 污视频网站免费在线观看| 日本牲交大片免费观看| 亚洲av无码一区二区三区四区| 91免费精品国自产拍在线不卡| 亚洲永久在线观看| 免费观看大片毛片| 激情婷婷成人亚洲综合| 亚洲国产一成久久精品国产成人综合 | 日韩在线免费播放| 久久精品熟女亚洲av麻豆| 免费国产怡红院在线观看| 免费一级特黄特色大片| 国产亚洲?V无码?V男人的天堂| 中文字幕成人免费高清在线视频 | 免费成人午夜视频| 国产日韩久久免费影院 | 亚洲第一AV网站| 91久久成人免费| 亚洲日本中文字幕天天更新| 四虎影视永久免费观看| 中国一级特黄的片子免费 | 特级毛片aaaa级毛片免费| 亚洲色成人中文字幕网站| 9420免费高清在线视频| 亚洲精品无码专区在线| 国产精品V亚洲精品V日韩精品| 国内精品免费在线观看| 国产亚洲国产bv网站在线| 全亚洲最新黄色特级网站 | 免费人成在线观看播放a| 亚洲AV无码一区二区三区系列 | 女人隐私秘视频黄www免费| 91亚洲国产成人精品下载| 日本免费人成视频播放| a毛片免费全部在线播放**| 亚洲一区二区三区亚瑟| 亚洲精品无码成人片在线观看 | 午夜免费福利在线| 精品国产污污免费网站|