前言

第壹篇主要是快速入门上手为主,后面会逐渐的详细讲解sg-uap和osgi的关系,以及osgi在idea里面的使用

会有大量的截图,截图与文字相结合一起描述迁移项目的过程

大体步骤:

  1. 迁移的整体思路
  2. 本人笔记本以及项目目录的基本介绍
  3. 前期的铺垫和准备工作(含有简单的tomcat配置)
  4. idea中的项目文件(模块)的各个配置
  5. 项目启动
  6. 个人总结

一、迁移的整体思路

sg-uap是把eclipse封装了,同时内置了osgi框架,osgi实现了多jar独立加载,独立部署;但是sg-uap也同时实现了spring框架,让开发的子模块能独立且充分的利用spring框架,这就比较厉害了;

但是万变不离其宗,osgi框架是主体,我们只需要研究出,sg-uap是如何把osgi引入的以及如何又把各个子模块加载进来就可以自行实现sg-uap项目迁移到idea了;

我预先大概说明一下

1.sg-uap项目都有一个主项目,此主项目其实为一个普通的web项目;

2.web项目的作用有三个:

a)每个公司都可以把自己个性化配置或者设置放在此处(主要是安全方面的过滤器)

b)通过web.xml中的listener:“com.sgcc.uap.kernel.web.broker.UapModuleContextListener”,

      把sg-uap的自己开发的一个“com.sgcc.uap.kernel.web_2.6.0.v20210421125300.jar”加载到java的内存中(具体里面的细节我会再后期的教程中详细讲解,不在此次讲解)

c)再通过web.xml中的servlet:“com.sgcc.uap.kernel.web.server.UapModuleContextServlet”,

      把osgi框架加载到内存中,框架jar包就是“org.eclipse.osgi.jar”(默认是*/platform/Version2.0.0/thirdparty/org.eclipse.osgi.jar路径)

      这里也是经过了大量的初始化工作,才最终启动了osgi的框架(具体里面的细节我会再后期的教程中详细讲解,不在此次讲解)

d)整体来讲就是:先启动web项目,web项目的web.xml配置文件,做了大量的初始化操作,然后启动了osgi框架,整个系统就会开始逐步的把sg-uap的插件包以及自己的各个项目依次加载到内存中,最终启动完毕。

二、本人笔记本以及项目目录的基本介绍

1.JDK是1.6_x64的,idea是2018.3的,tomcat6,win7x64系统(系统不是重点,Mac笔记本也没问题的,因为部分截图和截图工具是在mac上操作的)

2.sg-uap客户端在D盘的UAP Studio里面(2.8的版本)

3.公司的开发项目在D盘的workspace下(sg-uap使用)

4.迁移到idea时,我是在D盘的workspace4(由idea使用)里面建立了一个主项目文件夹(仅仅是文件夹,没有任何被迁移的项目文件,因为这个新建的项目文件夹是为了引入workspace里面的项目文件夹)

sg-uap的客户端目录图片:(这里有个sguap-server文件夹记一下,后面有用「一大堆的插件包就在这里」)

java项目迁移说要设置sdk_java项目迁移说要设置sdk

sg-uap使用的项目工作空间workspace图片(dabd和dabd-schem是我需要使用的项目和子模块项目,其他的都用uap打包成jar包了):

java项目迁移说要设置sdk_idea_02

idea使用的项目工作空间workspace4图片(这个图是一个比较细致的截图,后面建立各种目录时,可以参考这个截图):

java项目迁移说要设置sdk_idea_03

三、前期的铺垫和准备工作

1.因为本次是一个简单的迁移教程,所以我们需要把其他依赖但不用的子模块都发布成jar包的形式(用uap的都懂我就不讲了)

java项目迁移说要设置sdk_osgi_04

2.用idea创建一个普通的java项目(建立到workspace4文件夹中,命名为uap-idea,删除项目里面的空模块),具体步骤看截图

java项目迁移说要设置sdk_osgi_05

选择java》sdk=1.6》)(其他的不用选择)》下一步

java项目迁移说要设置sdk_jar包_06

    这里啥也不选择》下一步

java项目迁移说要设置sdk_ide_07

     这里新建项目,名称为:uap-idea》(我的项目是在workspace4下面建立的)》完成 即可

java项目迁移说要设置sdk_idea_08

     整个项目就是这个样了,但我不用这些,我要把这个模块删除,然后导入uap的项目

java项目迁移说要设置sdk_ide_09

 右上角(项目配置)》Project选项卡(这里就是一个简单的配置看一下就好)

java项目迁移说要设置sdk_java项目迁移说要设置sdk_10

     Modules》点击uap-idea模块》点击上方的“减号”删除此模块

java项目迁移说要设置sdk_ide_11

     删除之后的结果:空空如也

java项目迁移说要设置sdk_ide_12

     关闭“项目配置”后的界面

java项目迁移说要设置sdk_idea_13

 

3.引入workspace里面的主项目:dabd以及自己要开发的子模块:dabd-schem(这个时候肯定会有很多警告和错误提示,跟着截图一步一步来,就没事了)

java项目迁移说要设置sdk_idea_14

    “项目配置” 》Modules》ImportModules(导入模块)》现在开始导入主项目“dabd”》点击OK(确定)

java项目迁移说要设置sdk_java项目迁移说要设置sdk_15

     选择“eclipse”模块

java项目迁移说要设置sdk_ide_16

     选择“Keep project and module files in”,保持模块还在原来的地方

java项目迁移说要设置sdk_osgi_17

    此时idea已经识别出来了一个dabd的项目(到这里应更不会出问题。。。,有问题请截图留言,我一定回复) 

java项目迁移说要设置sdk_idea_18

     保持跟我一样的选择即可

java项目迁移说要设置sdk_idea_19

    此时主项目已经导入进来了,把src设置为Sources类型(好像可以自动识别),下面的开发项目类似(就不再文字描述,看图即可) 

java项目迁移说要设置sdk_jar包_20

     下面开始导入开发的项目

java项目迁移说要设置sdk_java项目迁移说要设置sdk_21

java项目迁移说要设置sdk_ide_22

java项目迁移说要设置sdk_osgi_23

java项目迁移说要设置sdk_ide_24

java项目迁移说要设置sdk_idea_25

java项目迁移说要设置sdk_java项目迁移说要设置sdk_26

java项目迁移说要设置sdk_osgi_27

     此时两个必要的项目均已导入完毕,下面需要把报错的地方逐一修复

java项目迁移说要设置sdk_osgi_28

    此时此刻两个项目产生的错误信息如下 

java项目迁移说要设置sdk_jar包_29

     先解决主项目:把项目依赖的东西除了jdk(jdk为1.6没有的先自己导入一个来)以外的统统删除(后面我们再重新引入)

java项目迁移说要设置sdk_idea_30

     删除后的结果,只剩下自己的模块和一个jdk的引用

java项目迁移说要设置sdk_idea_31

     开发项目也是如此,把该删除的都删除了

java项目迁移说要设置sdk_ide_32

    删除后的结构如下 :此时idea也不再报错信息了😂😂😂

java项目迁移说要设置sdk_java项目迁移说要设置sdk_33

         整体项目效果如下:下一步我们要开始引入tomcat和各种依赖包了(下面是重点

java项目迁移说要设置sdk_osgi_34

 

  自己复制出来一个分tocmat6,我把自己的tomcat6命名为tomcat6-uap,并在tomcat6-uap里面的bin文件夹中新建一个sguap-server(不建此文件夹则无法启动项目)

   在workspace4里面建立两个文件夹:eclipse、tomcat6-uap(这个名字必须与前面的tomcat6-uap一致,不一致则无法启动项目)

   把刚才独立复制的tomcat6-uap放到eclipse文件夹中;把uap的客户端目录里面的sguap-server文件夹复制到workspace4下面的tomcat6-uap文件夹里面里面,

   并重命名为binsguap-server(不重命名此文件夹则无法启动项目),细节请参考截图

java项目迁移说要设置sdk_osgi_35

         把tomcat6-uap加入到idea中

java项目迁移说要设置sdk_java项目迁移说要设置sdk_36

         配置tomcat一系列操作:配置tomcat,点击配置

java项目迁移说要设置sdk_idea_37

         弹出选择tomcat对话框

java项目迁移说要设置sdk_jar包_38

         选择tomcat6-uap文件夹

java项目迁移说要设置sdk_osgi_39

         确定后,修改tomcat服务名称为tocmat-dabd(之前是:Unnamed),到此tomcat配置结束(下面开始了各个依赖包的配置

java项目迁移说要设置sdk_ide_40

四、idea中的项目文件(模块)的各个配置

         先把公共插件目录下的WEB-IINF/lib下面的这个jar包放入到主项目的lib下面(不放入会导致项目启动时会出发下载jar包的逻辑,先复制过来我们进入下一个环节)(后期会详细讲解为什么要这样做)

java项目迁移说要设置sdk_java项目迁移说要设置sdk_41

         这是要项目里面依赖的jar包(主项目里面的lib和其他开发项目打成jar包集合目录)

java项目迁移说要设置sdk_java项目迁移说要设置sdk_42

         先把主项目的自身的lib目录添加为一个项目jar包库

java项目迁移说要设置sdk_jar包_43

         命名为dabd-lib

java项目迁移说要设置sdk_java项目迁移说要设置sdk_44

         然后把其他辅助的项目jar包(repository-application-plugins)添加为一个项目jar包库

java项目迁移说要设置sdk_java项目迁移说要设置sdk_45

         命名为dadb-plugins

java项目迁移说要设置sdk_idea_46

         这里开始添加开发项目的lib,但是右键,功能是灰色的,没法用(我这里不行不代表你那里不行),继续看下面操作

java项目迁移说要设置sdk_ide_47

         从项目配置》Libraries》点击加号(添加一个新的jar包库)(现在是刚才已经添加的那两个:dabd-lib和dabd-plugins)

java项目迁移说要设置sdk_ide_48

         找到开发项目的lib文件夹(选中文件夹和选中里面的jar包都行)

java项目迁移说要设置sdk_osgi_49

         点击ok(确定)后会提示,是否把此jar包库添加到指定的项目模块中(因为这是开发项目的lib所以你可以添加到开发项目中,但你可以不加入,后面统一处理)

java项目迁移说要设置sdk_idea_50

         我这里默认叫“common-lang3xxx”,您可以重命名一下

java项目迁移说要设置sdk_osgi_51

         我这里重命名为“dabd-scheme-lib”

java项目迁移说要设置sdk_idea_52

         到此,我们已经完成了80%的工作,现在还需要在添加两个jar包库,再对两个项目模块进行配置,基本就差不多了

         现在开始添加公共的外部jar包库(就是在workspace4/tomcat6-uap/binsguap-server/WEB-INF/repository/platform/Version2.0.0/里面的jar包库)

         分别添加两个文件夹:infrastructure、thirdparty

java项目迁移说要设置sdk_ide_53

         此时把infrastructure添加进来,并把此jar包库,添加到了两个模块中

java项目迁移说要设置sdk_java项目迁移说要设置sdk_54

         再把thirdparty也添加进来,同时添加到这两个模块中

java项目迁移说要设置sdk_jar包_55

         此时铺垫工作全部完成:总共引入了五个jar包库

java项目迁移说要设置sdk_java项目迁移说要设置sdk_56

         重要的配置:五个jar包库在两个模块中引入情况

其他的都是provided模式!!!

java项目迁移说要设置sdk_jar包_57

其他都是provided模式!!!

java项目迁移说要设置sdk_ide_58

         这里有个需要注意的地方:把dabd-schem模块的paths设置为bin目录(这里可能是默认的,如果是这样就不用改了,如果不是请参考我这个截图),这里如果不是bin,则无法实现热更新

java项目迁移说要设置sdk_osgi_59

        把dabd项目配置为一个WEB工程(这里会的就不用看了,不会的请看下面的截图)

        打开项目配置》Facets》添加》Web模式

java项目迁移说要设置sdk_ide_60

        选中dabd项目(因为只有dabd项目是标准的web项目结构)

java项目迁移说要设置sdk_idea_61

        这里有两个地方需要注意:(非常关键:好多小伙伴就是死在这个配置上面的)

        两个配置:一个是配置web.xml的文件路径,一个是配置WebContent的路径(就参考我的配置来就行)

        配置完后,点击右下角“Create Artifact”(如果没有点击ok就行,然后参考下面Artifacts的配置截图)

java项目迁移说要设置sdk_jar包_62

Artifacts这里的配置如下:主要是把web功能的编译结构确定了:里面有dadb的类编译路径、web工程根目录路径、web.xml的配置路径、项目依赖的jar包库路径

java项目迁移说要设置sdk_java项目迁移说要设置sdk_63

         这里web工程的最终配置图(这里项目构建名称改为了:dabd)(这里没弄好的话,仔细对比你的配置和我的配置截图)

java项目迁移说要设置sdk_osgi_64

一切模块配置就绪!!!!!!

五、项目启动

        tocmat里面添加要发布的web工程(从artifacts里面来的)

java项目迁移说要设置sdk_java项目迁移说要设置sdk_65

       就是dabd这个web工程(也只有这一个),下面的应用上下文名称是/dabd

java项目迁移说要设置sdk_osgi_66

         我这里出现了启动时,内存不足,所以需要配置一下VM的启动参数:-Xms1024m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m

java项目迁移说要设置sdk_idea_67

         tocamt配置就绪

java项目迁移说要设置sdk_idea_68

         启动tocmat:这里机器性能有位关键(mac电脑40秒,win配置好的话应该是一分钟左右)

        在控制台输入ss,回车,控制台输出了osgi的启动模块信息

java项目迁移说要设置sdk_jar包_69

        项目浏览器输入访问地址即可(idea中tomcat启动完毕后会自动打开浏览器)

        输入系统的账号密码,进入系统

java项目迁移说要设置sdk_jar包_70

        最终系统功能页面 

java项目迁移说要设置sdk_osgi_71

        到此整个的uap迁移到idea结束!!!

六、个人总结

       本次迁移是一个痛并快乐的迁移。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

       如果您对uap和idea用的都很溜,那么整个过程应该对您来说会比较顺利,其实在我们抽丝剥茧式的把uap中还有osgi框架这块搞明白了,很多事情就比较简单了

       提供一个osgi框架的pdf下载地址:https://dwd.jb51.net/201605/books/OSGiyl_jb51.rar,我们就是通过熟读这个来把uap的项目迁移到了idea中。。。。。。。。