Java相关框架
雨临Lewis
个人博客地址:https://lewky.cn
展开
-
SpringBoot JPA懒加载异常 - com.fasterxml.jackson.databind.JsonMappingException: could not initialize pr
问题与分析某日忽然发现在用postman测试数据时报错如下:com.fasterxml.jackson.databind.JsonMappingException: could not initialize proxy [com.cbxsoftware.cbx.attachment.entity.RefAttachment#c109ec36e60c4a89a10eabc72416d984] -...原创 2019-10-24 08:49:26 · 1846 阅读 · 0 评论 -
log4j.xml中Filter的用法
前言log4j中常用的Filter分为四种:DenyAllFilter、LevelMatchFilter、LevelRangeFilter、StringMatchFilter。当appender匹配了某个Filter的时候,就不会继续匹配下一个filter,所以当需要配置多个filter时需要注意先后顺序,这样才能实现需要的效果。这些filter有个共同的属性AcceptOnMatch,用来...原创 2018-12-20 22:30:49 · 5482 阅读 · 1 评论 -
log4j2中LevelRangeFilter的注意点
LevelRangeFilter的注意点在log4j2中,LevelRangeFilter的minLevel,maxLevel的配置是和log4j 1.x相反的;minLevel需要配置的是高级别,maxLevel配置的是低级别,如下:<LevelRangeFilter minLevel="fatal" maxLevel="info" onMatch="ACCEPT" onMismatc...原创 2018-12-22 23:10:49 · 4318 阅读 · 0 评论 -
Log4j2 - 动态生成Appender
功能需求项目里将User分成了各个区域(domain),这些domain有个标志domainId,现在要求在打印日志的时候,不仅将所有User的日志都打印到日志文件logs/CNTCore.log中,还需要另外再打印到对应domain的日志文件logs/{domainId}/CNTCore.log。比如User A的domainId是RD2,那么除了logs/CNTCore.log外,还需要将...原创 2019-01-03 22:45:53 · 6032 阅读 · 2 评论 -
log4j和log4j2怎么动态加载配置文件
应用场景与问题当项目在运行时,我们如果需要修改log4j 1.X或者log4j2的配置文件,一般来说我们是不能直接将项目停止运行再来修改文件重新部署的。于是就有这样一个问题:如何在不停止当前项目的运行的情况下,让系统能够自动地监控配置文件的修改状况,从而实现动态加载配置文件的功能?而log4j 1.X和log4j2的差别略大,各自应该怎么实现这个功能?log4j 1.X怎么动态加载配置文件l...原创 2018-12-26 01:37:00 · 10114 阅读 · 0 评论 -
Log4j2 - java.lang.NoSuchMethodError: com.lmax.disruptor.dsl.Disruptor
问题项目使用了log4j2,由于使用了全局异步打印日志的方式,还需要引入disruptor的依赖,最后使用的log4j2和disruptor的版本依赖如下:<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</arti...原创 2019-01-02 22:00:50 · 6113 阅读 · 0 评论 -
Log4j2 - Unable to invoke factory method in class org.apache.logging.log4j.core.appender.RollingFile
问题与分析在使用Log4j2时,虽然可以正确读取配置文件并生成log文件,但偶然发现控制台打印了异常信息如下:2018-12-31 17:28:14,282 Log4j2-TF-19-ConfiguratonFileWatcher-6 ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.app...原创 2019-01-02 22:07:17 · 35243 阅读 · 7 评论 -
ELK系列(4) - Elasticsearch cannot write xcontent for unknown value of type class java.math.BigDecimal
java.lang.IllegalArgumentException: cannot write xcontent for unknown value of type class java.math.BigDecimal at org.elasticsearch.common.xcontent.XContentBuilder.unknownValue(XContentBuilder.java:7...原创 2019-05-12 17:33:44 · 9371 阅读 · 0 评论 -
ELK系列(1) - Elasticsearch + Logstash + Kibana + Log4j2快速入门与搭建用例
前言最近公司分了个ELK相关的任务给我,在一边学习一边工作之余,总结下这些天来的学习历程和踩坑记录。首先介绍下使用ELK的项目背景:在项目的数据库里有个表用来存储消息队列的消费日志,这些日志用于开发者日后的维护。每当客户端生产一条消息并发送到消息队列后,就会插入一条对应的记录到数据库里。当这条消息被消费之后,又会更新数据库里对应的记录的几个column的值,比如status、updated_o...原创 2019-05-12 16:46:58 · 952 阅读 · 0 评论 -
ELK系列(2) - Kibana怎么修改日期格式Date format
问题Kibana在创建Index Patterns的时候,可以选择某个date类型的field作为排序字段。之后在Discover里打开对应的index,会发现这个date类型的field的格式显示如下:April 10th 2019, 17:40:32.359这是Kibana默认的日期格式,有两种修改的方式。方式一:全局修改登录http://localhost:5601/,会进入Ki...原创 2019-05-12 16:56:28 · 8482 阅读 · 1 评论 -
ELK系列(3) - Elasticsearch修改jvm参数
方法Elasticsearch默认会配置1G的JVM堆的初始值和最大值,该jvm参数被配置在/config/jvm.options里:-Xms1g-Xmx1g如果只是个人开发小项目,可以把参数改小些,比如:-Xms512m-Xmx512m这个jvm.options用来配置各种jvm参数,比如GC、GC logging、heap dumps等。...原创 2019-05-12 17:20:03 · 7089 阅读 · 0 评论 -
ELK系列(5) - Logstash怎么分割字符串并添加新的字段到Elasticsearch
问题有时候我们想要在Logstash里对收集到的日志等信息进行分割,并且将分割后的字符作为新的字符来index到Elasticsearch里。假定需求如下:Logstash收集到的日志字段message的值是由多个字段拼接而成的,分隔符是;,;,如下:{ "message": "key_1=value_1;,;key_2=value2"}现在想要将message的值拆分成2个新...原创 2019-05-13 00:16:43 · 11536 阅读 · 4 评论 -
Log4j2 - 日志框架中isDebugEnabled()的作用
为什么要使用isDebugEnabled()之前在系统的代码中发现有时候会在打印日志的时候先进行一次判断,如下:if (LOGGER.isDebugEnabled()) { LOGGER.debug("Search parameters: " + searchParams);}我们使用的是Log4j2框架,框架自身提供了类似的许多api,比如isErrorEnabled(),is...原创 2019-08-13 23:55:49 · 2570 阅读 · 0 评论 -
ELK系列(7) - 测试环境下Logstash异常退出:block in multi_receive_encoded
问题与分析在本地测试无误后将ELK部署到了测试环境,结果第二天发现Logstash挂掉了,一开始以为是自动部署之类导致的问题。之后几天时间里Logstash总是会down掉,查看了下日志文件,发现报错如下:[2019-06-28T07:56:13,148][FATAL][logstash.runner ] An unexpected error occurred!{ : ...原创 2019-08-14 00:11:22 · 2203 阅读 · 0 评论 -
org.springframework.expression.spel.SpelEvaluationException: EL1030E
问题与分析在本地开发项目时发现报错如下:org.springframework.expression.spel.SpelEvaluationException: EL1030E: The operator 'ADD' is not supported between objects of type 'java.lang.String' and 'null' at org.springfram...原创 2019-10-08 00:12:18 · 5810 阅读 · 1 评论 -
Dubbox - 入门小Demo
Dubbox简介Dubbox 是一个分布式服务框架,其前身是阿里巴巴开源项目Dubbo ,被国内电商及互联网项目中使用,后期阿里巴巴停止了该项目的维护,当当网便在Dubbo基础上进行优化,并继续维护,为了与原有的Dubbo区分,故将其命名为Dubbox。Dubbox 致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbox就是个服务框架,如果没有分布式的...原创 2018-10-10 22:57:47 · 877 阅读 · 0 评论 -
hibernate的主键增长策略
什么是对象标识符OID(object id)hibernate中的持久化对象对应数据库中的一张数据表,因此hibernate通过OID来区分不同的持久化对象。从表的角度看,OID对应表的主键。因此在使用hibernate时,建议每一个domain对象(javabean/pojo)都要有一个不包含业务逻辑的 主键属性,且尽量不要使用复合主键。 hibernate常见的8种标识符生成方法(...原创 2017-07-29 23:03:59 · 1963 阅读 · 0 评论 -
spring中获取bean的两种方式
①通过applicationContext应用上下文对象来获取ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");※当applicationContext.xml被装载后,该文件中配置的bean就被实例化(该bean的scope是singleton)☆appli原创 2017-07-30 22:32:10 · 624 阅读 · 0 评论 -
@ResponseBody注解的使用
@ResponseBody注解的作用是将Controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到Response对象的Body区,通常用来返回JSON数据或者是XML数据,需要注意的是,在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过Response对象输出指定格式的数据。@RequestMapping("/login")@Respons转载 2017-10-07 14:22:51 · 1924 阅读 · 0 评论 -
Spring的XML配置文件的头部文件
Spring的XML配置文件的头部文件<?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:context="http:/原创 2017-10-04 11:58:59 · 7635 阅读 · 0 评论 -
Spring事务传播行为和隔离级别
linkhttp://www.cnblogs.com/yangy608/archive/2011/06/29/2093478.htmlhttp://www.cnblogs.com/yangy608/archive/2010/12/15/1907065.htmlhttp://blog.csdn.net/it_wangxiangpan/article/details/24180085转载 2017-10-11 11:25:35 · 618 阅读 · 0 评论 -
Spring(一)框架学习
Spring是什么Spring是一个轻量级的控制反转(IoC)和面向切口(AOP)的容器框架,它横跨三层架构,用来创建对象和管理这些对象之间的依赖关系。 轻量级和重量级?以启动程序需要的资源来决定。比如,EJB启动的时候,需要消耗大量的资源,内存,CPU等,所以是重量级。而Spring则不,所以是轻量级框架。轻量级是指它的创建和销毁不需要消耗太多的资源,意味着可以在程序中经常创建和销毁sess原创 2017-10-15 14:42:56 · 548 阅读 · 0 评论 -
The content of element type "struts-config" must match的解决方法
Struts1的xml文件报错如下The content of element type "struts-config" must match "(display-name?,description?,form- beans?,global-exceptions?,global-forwards?,action-mappings?,controller?,message-resources*...原创 2017-08-06 23:57:04 · 1738 阅读 · 0 评论 -
springMVC框架的运行流程
第一步:发起请求到前端控制器(DispatcherServlet)第二步:前端控制器请求HandlerMapping查找 Handler可以根据xml配置、注解进行查找第三步:处理器映射器HandlerMapping向前端控制器返回Handler第四步:前端控制器调用处理器适配器去执行Handler第五步:处理器适配器去执行Handler第六步:Handler执行完成给适配...转载 2017-09-18 18:40:23 · 709 阅读 · 0 评论 -
hql语句进行参数绑定的两种方式
使用参数绑定的好处:1.可读性提高 2.效果高3.防止sql注入漏洞 参数绑定的两种形式:以查询年龄小于18岁的学生为例①参数以:冒号形式给出List<Student> list = session.createQuery(from Student where id=:i and age<:age).setString("i","1").setStrin...原创 2017-07-19 22:39:50 · 4436 阅读 · 0 评论 -
hibernate获取session的两种方式的区别
hibernate获取session有两种方式,存在着一定的区别获取session的三个步骤// 1.创建Configuration,该对象用于读取hibernate.cfg.xml,并完成初始化 Configuration configuration = new Configuration().configure();// 2.创建SessionFactory Se...原创 2017-07-20 09:50:34 · 6523 阅读 · 0 评论