简述

此次配置改造分为三个部分:
1.修改获取配置的方式(通过nacos获取)
2.增加主题样式
3.部分grails项目替换旧版本jar包(包括autherUser、postgres和httpclient)

nacos使用流程:
1.复制项目的配置到nacos
2.服务读取nacos配置并注册到nacos
3.服务间调用通过nacos(暂未使用)

数据模型

项目(project):指java或grails项目,例如工作台(work)项目、表单(form)项目、空间前端项目(spaceview)、空间后端项目(space)
服务(service):指运行中的java或grails项目,一个项目可以起多个服务,一个服务可以为多个应用提供后台支持。
应用(application):指配置在工作台的应用 ,一个应用可能由多个服务提供接口。

前提条件

authuser包更新到该版本及以上:<version>0.1.8-RELEASE</version>
AuthUser包版本在0.0.18以下时,升级包时同时需要把httpclient版本升级
包在ftp该目录下:D:/南京多邦软件有限公司/开发部/工作空间/安装包
image.png

配置改造

nacos测试、研发环境 http://192.168.0.174:8848/nacos/index.html 账号:nacos nacos

命名规则

将所有配置复制到nacos的dev-example(开发示例)命名空间内,其中dataId即项目key,全局唯一。
如需个性配置,可创建本人姓名缩写的命名空间,复制开发示例到自己的命名空间即可。
datad:项目唯一标识,全小写,不使用驼峰命名,不使用下划线,springboot项目加上”.yml”后缀
group:使用默认值DEFAULT_GROUP

当一个项目部署为集群,且不同服务的配置不同时,dataId以下划线”_”区分,例如:
(iot.yml —>iot_camera.yml)
image.png

springboot

注意事项:不要在部署路径遗留原来的application.yml文件,否则依然会读取到旧文件!!!
pom加入以下依赖

  1. <dependency>
  2. <groupId>com.alibaba.cloud</groupId>
  3. <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  4. <version>2.0.4.RELEASE</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.alibaba.cloud</groupId>
  8. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  9. <version>2.0.4.RELEASE</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.apache.commons</groupId>
  13. <artifactId>commons-pool2</artifactId>
  14. <version>2.5.0</version>
  15. </dependency>

将application.yml 改名为bootstrap.yml,按以下配置设置

  1. #springboot项目的dataId必须如下命名
  2. #nacos的dataId必须命名为:${prefix}.${file-extension}
  3. #prefix 即 spring.application.name
  4. #file-extension 即 spring.cloud.nacos.config.file-extension仅支持yml
  5. spring:
  6. application:
  7. name: thirdplatform #${prefix}
  8. cloud:
  9. nacos:
  10. config:
  11. server-addr: 192.168.0.174:8848
  12. namespace: 64b93762-02f5-431f-91ba-ae4582a91fe1 #命名空间id
  13. file-extension: yml
  14. group: DEFAULT_GROUP
  15. refresh-enabled: true
  16. discovery:
  17. server-addr: 192.168.0.174:8848
  18. namespace: 64b93762-02f5-431f-91ba-ae4582a91fe1

将配置文件命名为【项目名.yml】
image.png

在启动类上添加注解

@EnableDiscoveryClient

grails

grails项目整合后仅有一个配置。将配置复制到nacos后,需增加如下配置:

//单点登录配置项
casClientServerName = "http://localhost:8080"
casServerLoginUrl = "http://auth.e100soft.cn/cams"
casServerUrlPrefix = "http://auth.e100soft.cn/cams"
//数据库配置项
db.driverClass= "org.postgresql.Driver"
db.username="postgres"
db.password="duobang123456"
db.url="jdbc:postgresql://192.168.0.174:5432/work2021?useUnicode=true&characterEncoding=utf8"
//当前应用IP及端口号(局域网内)
ip = "192.168.0.122"
port = "8080"

项目名-config.groovy配置改为以下内容

import cn.e100soft.user.web.WebApi

//配置中心地址
nacos.urlprefix = "http://192.168.0.174:8848"
//命名空间id
nacos.tenant = "64b93762-02f5-431f-91ba-ae4582a91fe1"
//项目名
nacos.dataId = "work"
//分组名
nacos.group = "DEFAULT_GROUP"
//无需修改,configData不可改名
configData = WebApi.get(nacos.urlprefix
        + "/nacos/v1/cs/configs?tenant="
        + nacos.tenant
        + "&dataId="
        + nacos.dataId
        + "&group="
        + nacos.group)

resource.xml修改为以下内容:

        <!--配置注入-->
    <bean id="propertyConfigurer"
          class="cn.e100soft.user.grails.GrailsPropertyPlaceholderConfigurer">
    </bean>
    <!--druid设置-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <property name="driverClassName" value="${db.driverClass}" />
        <property name="url" value="${db.url}"/>
        <property name="username" value="${db.username}" />
        <property name="password" value="${db.password}" />
        <property name="filters" value="stat" />
        <property name="maxActive" value="50" />
        <property name="initialSize" value="5" />
        <property name="maxWait" value="60000" />
        <property name="minIdle" value="1" />
        <property name="timeBetweenEvictionRunsMillis" value="3000" />
        <property name="minEvictableIdleTimeMillis" value="300000" />
        <property name="validationQuery" value="SELECT 'x'" />
        <property name="testWhileIdle" value="true" />
        <property name="testOnBorrow" value="false" />
        <property name="testOnReturn" value="false" />
        <property name="poolPreparedStatements" value="true" />
        <property name="maxPoolPreparedStatementPerConnectionSize" value="20" />
    </bean>
    <!--单点登录配置-->
    <bean name="casAuthenticationFilter" class="org.jasig.cas.client.authentication.AuthenticationFilter">
        <property name="serverName" value="${casClientServerName}"/>
        <property name="casServerLoginUrl" value="${casServerLoginUrl}"/>
        <property name="gateway" value="true"/>
    </bean>
    <bean name="casTicketValidationFilter"
          class="org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter">
        <property name="serverName" value="${casClientServerName}"/>
        <property name="ticketValidator">
            <bean class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator">
                <constructor-arg index="0" value="${casServerUrlPrefix}"/>
            </bean>
        </property>
        <property name="redirectAfterValidation" value="true"/>
    </bean>

web.xml按如下配置,并删除原有同名配置


    <filter>
        <filter-name>casTicketValidationFilter </filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>casTicketValidationFilter </filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter>
        <filter-name>casAuthenticationFilter</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>casAuthenticationFilter</filter-name>
        <url-pattern>/login/*</url-pattern>
    </filter-mapping>


bootstrap.groovy增加如下配置

        //注册服务到nacos
        ProjectUtil.registerNacos()

检查代码中调用dataSource.properties的文件,修改url、username等配置的获取方式
image.png

主题样式增加

参考dailymanage项目,项目地址:
svn://192.168.0.90/work_space_daily_manage

1、在各项目_common.gsp中添加topTheme主题

项目配置改造 - 图5

项目配置改造 - 图6

2、拷贝dailymanage项目下的_topTheme.gsp文件到对应目录

项目配置改造 - 图7

3、拷贝dailymanage项目下的top_theme文件夹到对应目录

项目配置改造 - 图8

postgres版本更新

针对postgres9.6的数据源
删除原有jar:
postgresql-9.1dev-900.jdbc4.jar
cas-client-core-3.2.1.jar
新增:
postgresql-42.2.5.jre7.jar
druid-1.0.6.jar
tmp-cas-client-core-3.2.1.jar
xercesImpl.jar

在spring目录下,新增resources.xml,可以拷贝样例文件。
image.png
删除原来DataSource.groovy中的dataSource定义。
image.png
复制web.xml,注意看一下原来的文件有没有特殊的,有少数项目如classboardmanage有webservice接口开放,所以有配置,否则所有的web.xml文件都是一样的。