--@sagacity         -          -ITwww.ufida.comwww.rayootech.com
‣‣‣     WTP Facet XDoclet ANT‣   OSGi——‣            Java      Bundle
“   ”            “”
OSGi
‣   ‣‣   ‣‣   ‣‣   ‣‣   ‣‣   ‣‣   ‣
Metadata                          Workflow‣         ‣              RuleEngine‣         ‣‣         ‣‣         ‣‣         ‣‣ ...
‣‣‣‣        ——200‣‣‣‣   ——
...                  ERPFlex      AJAX             Main FrameWork
...                  ERPFlex      AJAX             Main FrameWork
...                                  ERPHere you are!                Flex                      AJAX                       ...
...Flex    AJAX                                ERP                                      GAP-API               Main FrameWork
‣   Eclipse WTP Facets‣   XDoclet‣   Ant‣                        OSGi‣‣    Servlet‣
Eclipse WTP Facets‣‣     WTP Web Tools Platform‣       WTP‣‣   Facets‣   Facets
WTP Faceted  id            versions             requires      conflictsjst.java     1.3, 1.4, 1.5, 1.6                     ...
WTP Faceted  id            versions             requires      conflictsjst.java     1.3, 1.4, 1.5, 1.6                     ...
Dynamic Web Project
Dynamic Web ProjectFacets
XDoclet & Ant‣   XDoclet‣                            Merge Point‣   Ant‣‣‣             Facets   Ant     XDoclet
‣                           build.xml‣                  -MergePoint i18n oid spring include‣           TotalBuild‣   Facet
TotalBuild
TotalBuild
TotalBuild             Facets
‣‣   build.xml       clean compile jar distribution                                             db                        ...
Merge‣                                                             xdt‣   applicationContext.xdt------------spring‣   glob...
Merge <value>gap/wf/persistent/db/bo/GapwfProcessinstance.hbm.xml</value> <value>gap/wf/persistent/db/bo/GapwfActivityinst...
XDoclet                                                                   <path id="xdoclet.classpath">                   ...
TotalBuild‣   Facets     <!--                  build.xml-->     <target name="build">        <ant dir="${gap-api}" antfile=...
Facet‣       org.eclipse.ui.newWizards‣   category wizard
‣   org.eclipse.wst.common.project.facet.core.facets‣    <category />——Facet‣    <project-facet />——Facet‣    <project-fac...
Facet    <!--Facet                -->    <project-facet id="gap.mainframe">      <label>0.             </label>        <de...
Facet‣                org.eclipse.wst.common.project.facet.core.IDelegate‣   GAPFacetInstallDelegate                    Fa...
‣‣‣‣‣
‣‣       jar‣               Install Update Remove‣   Time For:
‣‣       jar‣                   Time For:Update                       Install        Remove‣   Time For:                O ...
OSGi‣‣   2005 R4.0     ——‣   2010 3      OSGi   4.2‣                            Bundle
update        install           refresh       INSTALLED                            STARTING  resolve              update  ...
OSGi‣                 Declarative Services‣               Framework Launching‣   Blueprint      Blueprint Service‣   Web  ...
OSGi‣                 Declarative Services‣               Framework Launching‣   Blueprint      Blueprint Service‣   Web  ...
‣   Service Component Model‣                         OSGi‣       xml           Component Service‣‣             Java POJO  ...
——‣       Bundle Manifest    Bundle-ManifestVersion: 2    ...    Service-Component: OSGI-INF/component.xml [, ...]*‣      ...
——‣   Enabled——‣   Satisfied——‣   Immediate Component——‣   Delayed Component——‣   Factory Component——
<=>%42.*%0$1-.*$0%*+$%#(45("$"*%#(")-120&*-("%&.%&%.$09-#$%-"%*+$%.$09-#$%0$1-.*0%&                                       ...
‣   R4.2                            API               OSGi‣    OSGi                ——org.osgi.framework.launch.FrameworkFa...
BluePrint‣   BluePrint             ——Spring Dynamic Modules-->Eclipse Gemini‣      OSGi                             depend...
3&45"$,67689       :$0;,(%"5)%5"$                                                                              5&(BluePrin...
BluePrint                ——   <!--          -->   <service id="orderService" interface="com.osgi.bs.IOrderService" ref="or...
BluePrint                ——   <!--reference         -->   <reference id="orderRef" interface="com.osgi.bs.IOrderService" t...
BluePrint                ——   <!--reference         -->   <reference id="orderRef" interface="com.osgi.bs.IOrderService" t...
BluePrint             VS‣‣‣   BluePrint                   Java‣   R4.0        DS R4.2    BS‣       DS                 BS
OSGi Web‣   Web            OSGi✓   Modularity——✓   Lifecycle——      |    |   |✓   Services——
OSGi Web‣✓   HttpService✓   Bridged
tion we have been using in Toast.                      Bridged—In the Bridged approach, the coding and exposure model     ...
tion we have been using in Toast.                                                                                         ...
——WAB‣   WAB——Web Application Bundle1.0 R4.2‣      Bundle                       OSGi                         Web‣         ...
Web Bundle Architecture Web Application                            Bundles    Bundles Deploy Bundle       Admin Console Bu...
Web Bundle Architecture Web Application                            Bundles    Bundles Deploy Bundle       Admin Console Bu...
‣   Equinox——                OSGi             Eclipse‣   Gemini (Spring DM)——           R4.2‣   Virgo (Spring DM Server)——...
Questions?   Follow me at             twitter.com/sagacity             t.sina.com.cn/n/
企业级软件的组件化和动态化开发实践
企业级软件的组件化和动态化开发实践
企业级软件的组件化和动态化开发实践
企业级软件的组件化和动态化开发实践
企业级软件的组件化和动态化开发实践
Upcoming SlideShare
Loading in …5
×

企业级软件的组件化和动态化开发实践

3,214 views

Published on

主要介绍了在构建企业软件基础平台的过程中对组件化和动态化技术的开发实践,包括大型项目的组件化开发过程、构建过程和装配机制等,主要涉及的技术包括XDoclet、Plug-in机制、WTP的facets机制等,同时还介绍了OSGiR4.2的企业级高级特性及其相关应用。

Published in: Technology
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,214
On SlideShare
0
From Embeds
0
Number of Embeds
536
Actions
Shares
0
Downloads
125
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • 企业级软件的组件化和动态化开发实践

    1. 1. --@sagacity - -ITwww.ufida.comwww.rayootech.com
    2. 2. ‣‣‣ WTP Facet XDoclet ANT‣ OSGi——‣ Java Bundle
    3. 3. “ ” “”
    4. 4. OSGi
    5. 5. ‣ ‣‣ ‣‣ ‣‣ ‣‣ ‣‣ ‣‣ ‣
    6. 6. Metadata Workflow‣ ‣ RuleEngine‣ ‣‣ ‣‣ ‣‣ ‣‣ ‣‣ ‣ Component Building
    7. 7. ‣‣‣‣ ——200‣‣‣‣ ——
    8. 8. ... ERPFlex AJAX Main FrameWork
    9. 9. ... ERPFlex AJAX Main FrameWork
    10. 10. ... ERPHere you are! Flex AJAX Main FrameWork
    11. 11. ...Flex AJAX ERP GAP-API Main FrameWork
    12. 12. ‣ Eclipse WTP Facets‣ XDoclet‣ Ant‣ OSGi‣‣ Servlet‣
    13. 13. Eclipse WTP Facets‣‣ WTP Web Tools Platform‣ WTP‣‣ Facets‣ Facets
    14. 14. WTP Faceted id versions requires conflictsjst.java 1.3, 1.4, 1.5, 1.6 jst.earjst.web 2.2, 2.3, 2.4 jst.java jst.ear, jst.ejbjst.ear 1.2, 1.3, 1.4, 5.0, 6.0 jst.javajst.ejb 1.1, 2.0, 2.1, 3.0, 3.1 jst.java jst.ear, jst.java
    15. 15. WTP Faceted id versions requires conflictsjst.java 1.3, 1.4, 1.5, 1.6 jst.earjst.web 2.2, 2.3, 2.4 jst.java jst.ear, jst.ejbjst.ear 1.2, 1.3, 1.4, 5.0, 6.0 jst.javajst.ejb 1.1, 2.0, 2.1, 3.0, 3.1 jst.java jst.ear, jst.java
    16. 16. Dynamic Web Project
    17. 17. Dynamic Web ProjectFacets
    18. 18. XDoclet & Ant‣ XDoclet‣ Merge Point‣ Ant‣‣‣ Facets Ant XDoclet
    19. 19. ‣ build.xml‣ -MergePoint i18n oid spring include‣ TotalBuild‣ Facet
    20. 20. TotalBuild
    21. 21. TotalBuild
    22. 22. TotalBuild Facets
    23. 23. ‣‣ build.xml clean compile jar distribution db merge resource‣ ant src webModule‣ Distribution
    24. 24. Merge‣ xdt‣ applicationContext.xdt------------spring‣ global.xdt---------------------------include global.jsp‣ web.xdt-----------------------------web.xml‣ ......‣ Merge Point <XDtMerge:merge file="workflow-hbm.data"></XDtMerge:merge>
    25. 25. Merge <value>gap/wf/persistent/db/bo/GapwfProcessinstance.hbm.xml</value> <value>gap/wf/persistent/db/bo/GapwfActivityinstance.hbm.xml</value> <value>gap/wf/persistent/db/bo/GapwfActivityinstancepre.hbm.xml</value> <value>gap/wf/persistent/db/bo/GapwfRevelantdata.hbm.xml</value> <value>gap/wf/persistent/db/bo/GapwfWorkitem.hbm.xml</value> <value>gap/wf/persistent/db/bo/GapwfWorkitemdata.hbm.xml</value> <value>gap/wf/persistent/db/bo/GapwfDynprocessrelation.hbm.xml</value> db merge resource src webModule
    26. 26. XDoclet <path id="xdoclet.classpath"> <fileset dir="${lib.dir}"> <include name="*.jar"/>‣ XDoclet classpath </fileset> <pathelement location="classes"/> </path>‣ Ant taskdef‣ target <taskdef name="xdoclet" classname="xdoclet.DocletTask" classpathref="xdoclet.classpath" /> <target name="gen-applicationContext.xml"> <xdoclet destdir="${webmodule.dir}/WEB-INF/conf/applicationContext" force=true mergedir="${merge.dir}"> <fileset dir="${source.dir}" includes="**/*.java" /> <template templateFile="template/applicationContext.xdt" destinationfile="applicationContext.xml" /> </xdoclet> </target>
    27. 27. TotalBuild‣ Facets <!-- build.xml--> <target name="build"> <ant dir="${gap-api}" antfile="build.xml" target="all" /> <ant dir="${venus-frame}" antfile="build.xml" target="all" /> <ant dir="${venus-page}" antfile="build.xml" target="all" /> <ant dir="${venus-log}" antfile="build.xml" target="all" /> ...... </target> <!-- --> <target name="plugin"> <available file="Templates" type="dir" property="Templates.present" /> <antcall target="clean" /> <move todir="Templates/0. "> <fileset dir="${gap-api}/dist" /> <fileset dir="${venus-frame}/dist" /> </move> ...... </target>
    28. 28. Facet‣ org.eclipse.ui.newWizards‣ category wizard
    29. 29. ‣ org.eclipse.wst.common.project.facet.core.facets‣ <category />——Facet‣ <project-facet />——Facet‣ <project-facet-version />——Facet‣ <template />—— Facet‣ <preset />—— Facet ——‣ org.eclipse.wst.common.project.facet.ui.images‣ org.eclipse.wst.common.project.facet.ui.wizard
    30. 30. Facet <!--Facet --> <project-facet id="gap.mainframe"> <label>0. </label> <description>GAP </description> <category>gap.category</category> </project-facet> <!-- Facet --> <project-facet-version facet="gap.mainframe" version="3.7"> <action id="gap.mainframe.install" type="INSTALL"> <delegate class="venus.tools.ide.facet.GAPFacetInstallDelegate"/> </action> <constraint> <requires facet="jst.web" version="[2.4"/> </constraint> </project-facet-version>
    31. 31. Facet‣ org.eclipse.wst.common.project.facet.core.IDelegate‣ GAPFacetInstallDelegate Facet‣ BuildFacetsDelegate‣ Facet Facet‣ Facet‣ XDoclet classpath‣ project nature .tomcatplugin‣
    32. 32. ‣‣‣‣‣
    33. 33. ‣‣ jar‣ Install Update Remove‣ Time For:
    34. 34. ‣‣ jar‣ Time For:Update Install Remove‣ Time For: O Gi
    35. 35. OSGi‣‣ 2005 R4.0 ——‣ 2010 3 OSGi 4.2‣ Bundle
    36. 36. update install refresh INSTALLED STARTING resolve update start refresh RESOLVED ACTIVE stopuninstall uninstall stop UNINSTALLED STOPPING
    37. 37. OSGi‣ Declarative Services‣ Framework Launching‣ Blueprint Blueprint Service‣ Web Web Application Bundle‣ JPA JTA JDBC......
    38. 38. OSGi‣ Declarative Services‣ Framework Launching‣ Blueprint Blueprint Service‣ Web Web Application Bundle‣ JPA JTA JDBC......
    39. 39. ‣ Service Component Model‣ OSGi‣ xml Component Service‣‣ Java POJO OSGi‣
    40. 40. ——‣ Bundle Manifest Bundle-ManifestVersion: 2 ... Service-Component: OSGI-INF/component.xml [, ...]*‣ OSGI-INF/ <?xml version="1.0" encoding="UTF-8"?> <scr:component name="bookstore-order" xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0"> <!-- --> <implementation class="com.osgi.ds.OrderService"/> <!-- --> <service><provide interface="com.osgi.ds.IOrder"/></service> <!-- --> <reference interface="com.osgi.ds.ICart" bind="setCart" unbind="unsetCart" policy="dynamic" cardinality="1..1"/> </scr:component>
    41. 41. ——‣ Enabled——‣ Satisfied——‣ Immediate Component——‣ Delayed Component——‣ Factory Component——
    42. 42. <=>%42.*%0$1-.*$0%*+$%#(45("$"*%#(")-120&*-("%&.%&%.$09-#$%-"%*+$%.$09-#$%0$1-.*0%& *+$%#(45("$"*%#(")-120&*-("7%?+$%.$09-#$%50(5$0*-$.%)(0%*+-.%0$1-.*0&*-("%#(".-.*%() 50(5$0*-$.%&.%/$)-"$/%-"%+), - & .)/0,12), %&)#%("%5&1$ @AB7 ?+$%.*&*$%/-&10&4%-.%.+(:"%-"%C-120$%@@D7D7% —— 3 & 4 ! , ) / 556 7 6 8 9 9 )* & $ % ) / : 1 9 21 " ) " % / : 1 " ( & 4 ! , $ % & 1 " )(+=,*>+,( 6789:&8;&<3‣ Enabled—— B&)/0&2 2,-$2.$&C B&)/0&2 D62,-$2.$&C‣ Satisfied—— +=,*>+,( $.%CA6,0$)E 9.:&?< !"#$"%&%()*+&(!,-.&( /&-.010*2&(3&12*-&4(3$&-*+*-0*"%(5& &B$6C$69‣ Immediate Component—— !"#$%&#&()*+&#(&,*$&(&-#./#0#+12314&4$#+14"*,5(0$*14#.&+12&#545&-#.&+05&#$%&(&#0(&#4 .54-6&#5*4,#*$7#$%&4#89:#%156-#-&0+$*)0$&#$%0$#+12314&4$#+14"*,5(0$*14;#<%*#0661=#89 !!"#$#2 3(4+5()-./0/1(1,- 2&4$0$*14#$1#&0,&(6/#(&+60*2#0+$*)0$&-#+12314&4$#+14"*,5(0$*14; 8%E$%&**0-62*$%()%&%/$,&$/%#(45("$"*%-.%*+$%/$,&-"1%()%#,&..%,(&/-"1%&"/%(6F$#*%#0‣ Delayed Component—— !"#$%&(()*+ *+$%&#*-9&*-("%()%&%/$,&$/%#(45("$"*%#(")-120&*-("%/($.%"(*%(##20%2"*-,%*+$0$%-.%& ,&-./&0123425&561257"#$%.6"25 )(0%&%.$09-#$%(6F$#*7%8%#(45("$"*%-.%&%/$,&$/%#(45("$"*%:+$"%-*%.5$#-)-$.%&%.$09-#$ *(0%#(45("$"*%&"/%/($.%"(*%+&9$%*+$%!""#$!%&#%&**0-62*$%()%*+$%(")(*#*&%$,$4 <1&(:;&(1 2345674%789‣ Factory Component—— <=>%42.*%0$1-.*$0%&%.$09-#$%&)*$0%*+$%#(45("$"*%#(")-120&*-("%6$#(4$.%.&*-.)-$/7%? *+-.%.$09-#$%42.*%,((E%*(%(6.$09$0.%()%*+$%.$09-#$%0$1-.*0%&.%-)%*+$%#(45("$"*I.%62" B&-"#&4 B&-"#&4 *$0$/%*+-.%.$09-#$7%?+-.%.*0&*$1%4&E$.%-*%5(..-6,$%*(%0$1-.*$0%.$09-#$.%:-*+(2*%#0$&*-" D%40*4+*&C 40*4+*&C )(0%*+$%62"/,$%&"/%,(&/-"1%#,&..$.3%*+$0$6%&,,(:-"1%0$/2#*-("%-"%-"-*-&,-J&*-("%*-4 4$4(0%)((*50-"*7 >8?7468>89 D%9& B&-"#&4 4&12*-& D%40*4+*&C K+$"%<=>%0$1-.*$0.%*+$%.$09-#$%("%6$+&,)%()%&%#(45("$"*%#(")-120&*-("3%-*%42.*%&9( 6 9& 4&12*-&+0-"1,E(F77% ,(&/%*(%(##20%)0(4%*+$%#(45("$"*L.%62"/,$7%<=>%#&"%$".20$%*+-.%6%0$1-.*$0-"1%&%-# 4&12*-& "G&1H*4&E(6 (6F$#*%:-*+%*+$%C0&4$:(0E%)(0%*+&*%.$09-#$7%M%0$1-.*$0-"1%&%-#+.!#/%&(+0%(6F$#*3%* &(:;&(1 (6F$#*%-.%"(*%"$$/$/%2"*-,%*+$%-#+.!#/%&(+0%-.%#&,,$/%*(%50(9-/$%*+$%.$09-#$%(6F$#*7% *+(C,%0#*-E 5-67=8 $0*-$.%)(0%*+-.%0$1-.*0&*-("%#(".-.*%()%*+$%#(45("$"*%50(5$0*-$.%&.%/$)-"$/%-"%+), - & .)/ 1&B*%C*%9 @AB7
    43. 43. ‣ R4.2 API OSGi‣ OSGi ——org.osgi.framework.launch.FrameworkFactory‣ OSGi web listener OSGi‣ Class<FrameworkFactory> factoryClass = ServiceLoader.load(FrameworkFactory.class); FrameworkFactory factory = factoryClass.newInstance(); Map<Object, Object> conf; ......// Framework framework=factory.newFramework(conf); framework.init(); BundleContext bundleContext = framework.getBundleContext(); ......// bundle framework.start();
    44. 44. BluePrint‣ BluePrint ——Spring Dynamic Modules-->Eclipse Gemini‣ OSGi dependency injection‣ OSGi‣ POJO‣ OSGI-INF/blueprint/ <?xml version="1.0" encoding="UTF-8"?> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"> ... </blueprint>
    45. 45. 3&45"$,67689 :$0;,(%"5)%5"$ 5&(BluePrint ——Bean‣ Java 9‣ ,+7/&(1 0,.0&,18‣ argument, property, scope‣ className, factoryMethod, factoryComponent !"!#$#" 45&(6 !"#$G#%&2&%&$3.$&$7#&-$/&-&(#$+,$#*#,#-%#2$+-$%"#$$/&.#0&.1..$+-%#3& <bean id="order" class="com.osgi.bs.OrderService" init-method="init" destroy-method="destroy"> 2(3)(#&#0&.1..<$!&70# CBC<C$.-$*&(# BCI$*.5+2#,$&-$.5#5+#9$.3$%"#$# <argument value="1"/> <argument value="2"/> &-2$%"#$/&.#0&.1..$+-%#3&6#<$!"#$%&70#$.-0)$*.5+2#,$&$,1//&)4$%"#$,./ %+.-,$7#%9##-$%"#$2+33##-%$3#&%1#,$&#$2+,61,,#2$+-$0&%#$,#6%+.-,< <property name="Description" value="This is the order"/> </bean> <01/$,67686 :$0;,=0;04$",3$0%5"$ :11,;571&).,)<=&/&(1 >8(1? %&()*&1@1 A&BC,;01;.( "1 45 "16 !"#$+2$.3$&$%.*$0
    46. 46. BluePrint —— <!-- --> <service id="orderService" interface="com.osgi.bs.IOrderService" ref="order"> <service-properties> <entry key="order.discount" value="0.8"/> </service-properties> </service> <!-- --> OrderService os = new OrderService(1, 2); os.setDescription( "This is the order" ); Hashtable props = new Hashtable(); props.put("order.discount", "0.8"); bundleContext.registerService(com.osgi.bs.OrderService.class.getName(), os, props);
    47. 47. BluePrint —— <!--reference --> <reference id="orderRef" interface="com.osgi.bs.IOrderService" timeout="1000" availability="optional"/> <bean id="orderClient" class="..."> <property name="order" ref="orderRef"/> </bean> <!--reference-list --> <reference-list id="orderRefs" interface="com.osgi.bs.IOrderService" availability="optional"> <reference-listener bind-method="bind" unbind-method="unbind"> <bean class="com.osgi.bs.ReferenceListener"/> </reference-listener> </reference-list>
    48. 48. BluePrint —— <!--reference --> <reference id="orderRef" interface="com.osgi.bs.IOrderService" timeout="1000" availability="optional"/> <bean id="orderClient" class="..."> List <property name="order" ref="orderRef"/> </bean> List <!--reference-list --> <reference-list id="orderRefs" interface="com.osgi.bs.IOrderService" availability="optional"> <reference-listener bind-method="bind" unbind-method="unbind"> <bean class="com.osgi.bs.ReferenceListener"/> </reference-listener> </reference-list>
    49. 49. BluePrint VS‣‣‣ BluePrint Java‣ R4.0 DS R4.2 BS‣ DS BS
    50. 50. OSGi Web‣ Web OSGi✓ Modularity——✓ Lifecycle—— | | |✓ Services——
    51. 51. OSGi Web‣✓ HttpService✓ Bridged
    52. 52. tion we have been using in Toast. Bridged—In the Bridged approach, the coding and exposure model same as in Solo, but here the OSGi framework is embedded into a wOSGi Web Servlets‣ JSPs✓ HttpService✓ Bridged HTTP OSGi Java Figure 19–1 Solo server-side configuration
    53. 53. tion we have been using in Toast. Bridged—In the Bridged approach, the coding and exposure model same as in Solo, but here the OSGi framework is embedded into a wOSGi Web Servlets‣ !"#$$%&()*+,-../00123%0454006%78%972:;0<28=2&:0>4;05?>?00@A>50#! JSPs✓ HttpService✓ Bridged 19.2 Embedding the Back End in a Web Application HTTP 323 OSGi Servlets Java JSPs Figure 19–1 Solo server-side configuration HTTP Lite HTTP Bridge OSGiEquinox Framework Application Server Figure 19–2 Bridged server-side configuration
    54. 54. ——WAB‣ WAB——Web Application Bundle1.0 R4.2‣ Bundle OSGi Web‣ Servlet2.5 JSP2.1 Manifest-Version: 1.0 Import-Package: ... ... Bundle-Version: 1.0 Bundle-Name: orderManager Bundle-ClassPath: WEB-INF/lib/commons-logging.jar,WEB-INF/ classes Web-ContextPath: /order Bundle-ManifestVersion: 2 Bundle-SymbolicName: com.osgi.bs.order
    55. 55. Web Bundle Architecture Web Application Bundles Bundles Deploy Bundle Admin Console Bundle Application Server/OSGi Runtime JVM
    56. 56. Web Bundle Architecture Web Application Bundles Bundles Deploy Bundle Admin Console Bundle Application Server/OSGi Runtime JVM
    57. 57. ‣ Equinox—— OSGi Eclipse‣ Gemini (Spring DM)—— R4.2‣ Virgo (Spring DM Server)—— OSGi Application Server‣ Felix—— OSGi‣ Nuxeo—— CMS OSGi
    58. 58. Questions? Follow me at twitter.com/sagacity t.sina.com.cn/n/

    ×