分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

Netsharp配置文件

发布时间:2023-09-06 02:06责任编辑:林大明关键词:配置

一、总体说明

netsharp下需要配置的项目一般是需要独立启动的项目,主要有四个

  1. netsharp-web
  2. netsharp-test
  3. netsharp-elephant
  4. netsharp-donkey

其实每个项目都可能独立启动,一般的项目都会有自己的测试项目,所以这个时候也需要配置文件

配置文件同源代码一起管理,开始的时候配置文件直接放在上面四个项目里,会有以下几个问题

  1. 多个项目配置文件经常不一致,混乱
  2. 每个开发人员本地的配置不一样提交代码的时候经常有人把自己的配置提交到服务器,引起代码冲突
  3. 每个人经常修改配置文件提交之后配置文件被改的乱七八糟

针对上面几个问题,netsharp的配置文件是放在netsharp的顶级文件夹下的conf目录,代码下载之后开发人员把配置文件复制到项目下使用,同时在git的项目设置配置文件目录为ignore即可

对于生产环境、测试环境、部署运维的时候专门把配置文件放在服务器上,部署复制一下即可,这样也保证了配置账号的安全性

二、netsharp的配置文件

netsharp目前一共用到5个配置文件,他们的目录结构如下,一下以netsharp-web项目为例

|--netsharp-web

      |--src/main/java

      |--src/main/resources

          |--log4j.properties

          |--conf

              |--communication.properties

              |--configuration.properties

              |--database.properties

              |--redis.properties

三、netsharp配置文件读取

配置文件读取比较简单,首先有一个配置文件读取的基类,主要的方法是deserialize,用于读取配置文件

 1 package org.netsharp.application; 2 ?3 import java.lang.reflect.Field; 4 import java.util.ArrayList; 5 import java.util.List; 6 ?7 import org.netsharp.core.NetsharpException; 8 import org.netsharp.core.convertor.ITypeConvertor; 9 import org.netsharp.core.convertor.TypeConvertorFactory;10 import org.netsharp.util.PropertyConfigurer;11 import org.netsharp.util.ReflectManager;12 import org.netsharp.util.StringManager;13 14 public class ApplicationConfiguration {15 16 ????public void deserialize() {17 18 ????????Class<?> type = this.getClass();19 20 ????????Configuration confile = type.getAnnotation(Configuration.class);21 ????????if (confile == null) {22 ????????????throw new NetsharpException("类上必须标注@Configuration:" + type.getName());23 ????????}24 25 ????????PropertyConfigurer conf = PropertyConfigurer.newInstance(confile.file());26 27 ????????Field[] fields = ReflectManager.getDeclaredFields(type);28 ????????for (Field field : fields) {29 ????????????this.parseField(conf, field);30 ????????}31 ????}32 33 ????private void parseField(PropertyConfigurer conf, Field field) {34 35 ????????ConfigurationItem item = field.getAnnotation(ConfigurationItem.class);36 ????????if (item == null) {37 ????????????return;38 ????????}39 40 ????????String value = conf.get(item.key());41 ????????if (StringManager.isNullOrEmpty(value)) {42 ????????????value = item.defaultValue();43 ????????}44 45 ????????ITypeConvertor convertor = TypeConvertorFactory.create(field.getType());46 ????????if (convertor == null) {47 ????????????throw new NetsharpException("can‘t read " + item.key());48 ????????}49 ????????Object propertyValue = convertor.fromString(value);50 51 ????????try {52 ????????????field.setAccessible(true);53 ????????????field.set(this, propertyValue);54 ????????} catch (IllegalArgumentException | IllegalAccessException e) {55 ????????????throw new NetsharpException("can‘t read " + item.key(), e);56 ????????}57 58 ????????if (field.getType().isEnum() && propertyValue == null) {59 ????????????throw new NetsharpException(item.key() + "配置不正确,配置的值为:" + value);60 ????????}61 ????}62 63 ????@Override64 ????public String toString() {65 ????????66 ????????Class<?> type = this.getClass();67 ????????List<String> ss = new ArrayList<String>();68 69 ????????Field[] fields = ReflectManager.getDeclaredFields(type);70 ????????for (Field field : fields) {71 ????????????ConfigurationItem item = field.getAnnotation(ConfigurationItem.class);72 ????????????if (item == null) {73 ????????????????continue;74 ????????????}75 ????????????76 ????????????try {77 ????????????????ss.add(field.getName() + " : " + field.get(this).toString());78 ????????????} catch (IllegalArgumentException | IllegalAccessException e) {79 ????????????????e.printStackTrace();80 ????????????}81 ????????}82 83 ????????return StringManager.join(StringManager.NewLine, ss);84 ????}85 }

以configuration.properties为例子,看缓存类型(org.netsharp.panda.session.cache)的读取方式,他在PandaConfiguration类中

 1 package org.netsharp.panda.core; 2 ?3 import org.netsharp.application.ApplicationConfiguration; 4 import org.netsharp.application.Configuration; 5 import org.netsharp.application.ConfigurationItem; 6 import org.netsharp.cache.base.dict.CacheType; 7 ?8 @Configuration(file = "conf/configuration.properties") 9 public class PandaConfiguration extends ApplicationConfiguration {10 ????11 ????private static PandaConfiguration instance;12 ????13 ????/*panda是否启用权限控制*/14 ????@ConfigurationItem(key="org.netsharp.panda.ispermission",defaultValue="true")15 ????private Boolean isPermission;16 ????17 ????/*panda的session缓存类型*/18 ????@ConfigurationItem(key="org.netsharp.panda.session.cache",defaultValue="none")19 ????private CacheType sessionCacheType;20 ????21 ????//panda的session时间(分钟)22 ????@ConfigurationItem(key="org.netsharp.panda.session.timeout",defaultValue="30")23 ????private Integer sessionTimtout;24 ????25 ????26 ????public static PandaConfiguration getInstance() {27 ????????28 ????????if(instance==null) {29 ????????????instance = new PandaConfiguration();30 ????????????instance.deserialize();31 ????????}32 ????????33 ????????return instance;34 ????????35 ????}36 37 38 ????public Boolean getIsPermission() {39 ????????return isPermission;40 ????}41 42 ????public CacheType getSessionCacheType() {43 ????????return sessionCacheType;44 ????}45 46 47 ????public Integer getSessionTimtout() {48 ????????return sessionTimtout;49 ????}50 }

一般配置文件读取使用一个Singleton,不同类型的配置对应不同的Singleton,上文中的PandaConfiguration主要是读取关于Panda相关的配置

另外,多个配置类可以读取一个配置文件的内容,这样为了减少配置文件的数量,同时有可以达到配置文件进行分类管理的目的

在netsharp的配置文件中都标注了具体的配置文件的读取类

四、日志配置

日志文件是log4j自己读取的,不是netsharp读取的内容

文件:log4j.properties

netsharp.log.dir=/home/netsharp/logs#=======================================================================log4j.rootLogger=DEBUG,stdout,D,E# appender stdoutlog4j.appender.stdout.Threshold=DEBUGlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} %-5p [%t] %l - %m%nlog4j.appender.stdout.Encoding=UTF-8# appender Dlog4j.appender.D.Threshold=DEBUGlog4j.appender.D.File=${netsharp.log.dir}/log.txtlog4j.appender.D=org.apache.log4j.RollingFileAppenderlog4j.appender.D.MaxFileSize=10MBlog4j.appender.D.ImmediateFlush=truelog4j.appender.D.Append=truelog4j.appender.D.MaxBackupIndex=10log4j.appender.D.layout=org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} %-5p %l - %m%nlog4j.appender.D.Encoding=UTF-8# appender Elog4j.appender.E.Threshold=ERRORlog4j.appender.E.File=${netsharp.log.dir}/error.txtlog4j.appender.E=org.apache.log4j.RollingFileAppenderlog4j.appender.E.MaxFileSize=10MBlog4j.appender.E.ImmediateFlush=truelog4j.appender.E.Append=truelog4j.appender.E.MaxBackupIndex=10log4j.appender.E.layout=org.apache.log4j.PatternLayoutlog4j.appender.E.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} %-5p %l - %m%nlog4j.appender.E.Encoding=UTF-8

五、应用程序配置

文件:configuration.properties

#-----------------------------------------------------------------#see : org.netsharp.application.Applicationorg.netsharp.name=Netsharporg.netsharp.packages.scan=#-----------------------------------------------------------------#see : org.netsharp.organization.entity.AuthorizationConfiguration#员工重置密码org.netsharp.authorization.defaultpassword=123456#用户密码加密盐org.netsharp.authorization.salt=xxxxxx#-----------------------------------------------------------------#see : org.netsharp.panda.core.PandaConfiguration#netsharp是否启用权限控制org.netsharp.panda.ispermission=true#panda的session缓存类型org.netsharp.panda.session.cache=redis#panda的session时间(分钟)org.netsharp.panda.session.timeout=30#-----------------------------------------------------------------#see : org.netsharp.application.Application#分布式id配置org.netsharp.id.datacenterid=1org.netsharp.id.workid=1

六、数据库配置

文件:database.properties

#see : org.netsharp.cache.service.redis.RedisConnectionjdbc.driverClass=com.mysql.jdbc.Driverjdbc.jdbcUrl=jdbc:mysql://127.0.0.1:3306/netsharp?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&noAccessToProcedureBodies=truejdbc.username=rootjdbc.database=netsharpjdbc.password=123456jdbc.idleConnectionTestPeriod=60jdbc.connectionTestStatement=select 1jdbc.idleMaxAge=240jdbc.maxConnectionsPerPartition=30jdbc.minConnectionsPerPartition=10jdbc.partitionCount=2jdbc.acquireIncrement=5jdbc.statementsCacheSize=100jdbc.releaseHelperThreads=3jdbc.lazyInit =false

七、RPC配置

文件:communication.properties

#base#see : org.netsharp.communication.core.ConfigurationBaseorg.netsharp.communication.host=127.0.0.1org.netsharp.communication.port=8888#consumer#see : org.netsharp.communication.core.CommunicationConfigurationorg.netsharp.communication.protocol=local#server#see : org.netsharp.communication.protocol.tcp.container.server.TcpServerConfigurationorg.netsharp.communication.pool.coreSize=200org.netsharp.communication.pool.maxinumSize=1000org.netsharp.communication.pool.keepAliveTime=100

八、redis配置

文件:redis.properties

#see : org.netsharp.cache.service.redis.RedisConnectionredis.pool.maxActive=200redis.pool.maxIdle=100redis.pool.maxWait=3000redis.ip=127.0.0.1redis.port=6379redis.password=123456redis.timeout=5000redis.database=1redis.disabled=falseredis.cache.first.key=netsharp

Netsharp配置文件

原文地址:https://www.cnblogs.com/Netsharp/p/9379375.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved