Btrace 拦截时机】的更多相关文章

Kind.ENTRY 入口,默认值 Kind.RETURN:  返回 Kind.THROW: 异常 Kind.Line: 行 一.返回时拦截 package com.example.monitor_tuning.chapter4; import com.sun.btrace.AnyType; import com.sun.btrace.BTraceUtils; import com.sun.btrace.annotations.*; @BTrace public class PrintRetur…
拦截方法: 1.普通方法  @OnMethod(clazz="", method="") 2.构造函数@OnMethod(claszz="", method="<init>") 3.拦截同名函数,用参数区分 一.拦截构造函数 1.创建接口 @RequestMapping("/constructor") public User constructor(User user){ return user…
BTrace是神器,每一个需要每天解决线上问题,但完全不用BTrace的Java工程师,都是可疑的. BTrace的最大好处,是可以通过自己编写的脚本,获取应用的一切调用信息.而不需要不断地修改代码,加入System.out.println(), 然后重启,然后重启,然后重启应用!!! 同时,特别严格的约束,保证自己的消耗特别小,只要定义脚本时不作大死,直接在生产环境打开也没影响. 在网上搜索BTrace出来的文章都有点旧了,而且不够详细,于是决定,重新写一份. 码这么多的字好辛苦,请保留原文链…
BTrace 是什么 BTrace 是检查和解决线上的问题的杀器,BTrace 可以通过编写脚本的方式,获取程序执行过程中的一切信息,并且,注意了,不用重启服务,是的,不用重启服务.写好脚本,直接用命令执行即可,不用动原程序的代码. 原理 总体来说,BTrace 是基于动态字节码修改技术(Hotswap)来实现运行时 java 程序的跟踪和替换.大体的原理可以用下面的公式描述:Client(Java compile api + attach api) + Agent(脚本解析引擎 + ASM +…
BTrace是调试神器,可以通过自己编写的脚本,获取应用的一切调用信息.而不需要重启应用! Btrace 项目源码信息(你行你上~) 项目地址:http://github.com/btraceio/btrace 但是应用下载地址是: https://github.com/btraceio/btrace/releases   (因为一般你并不想编译这些代码) 小白的打开姿势,操作步骤: 1. 打开 jvisualVm 工具; 2. 加载 BTrace 工具, 先把 插件中心地址更改掉: https…
一.简介: 在生产环境中经常遇到格式各样的问题,如OOM或者莫名其妙的进程死掉.一般情况下是通过修改程序,添加打印日志:然后重新发布程序来完成.然而,这不仅麻烦,而且带来很多不可控的因素.有没有一种方式,在不修改原有运行程序的情况下获取运行时的数据信息呢?如方法参数.返回值.全局变量.堆栈信息等.Btrace就是这样一个工具,它可以在不修改原有代码的情况下动态地追踪java运行程序,通过hotswap技术,动态将跟踪字节码注入到运行类中,对运行代码侵入较小,对性能上的影响可以忽略不计. 在下列情…
1.什么是BTrace BTrace是sun公司推出的一款Java 动态.安全追踪(监控)工具,可以在不用重启的情况下监控系统运行情况,方便的获取程序运行时的数据信息,如方法参数.返回值.全局变量和堆栈信息等,并且做到最少的侵入,占用最少的系统资源. 2.BTrace使用场景 在生产环境中经常遇到格式各样的问题,如OOM或者莫名其妙的进程死掉.一般情况下是通过修改程序,添加打印日志:然后重新发布程序来完成. 然而,这不仅麻烦,而且带来很多不可控的因素.有没有一种方式,在不修改原有运行程序的情况下…
转载: http://calvin1978.blogcn.com/articles/btrace1.html BTrace是神器,每一个需要每天解决线上问题,但完全不用BTrace的Java工程师,都是可疑的. BTrace的最大好处,是可以通过自己编写的脚本,获取应用的一切调用信息.而不需要不断地修改代码,加入System.out.println(), 然后重启,然后重启,然后重启应用!!! 同时,特别严格的约束,保证自己的消耗特别小,只要定义脚本时不作大死,直接在生产环境打开也没影响. 在网…
JVM调优(三)--基于Btrace的监控调试 简介 Btrace可以动态地向目标应用程序的字节码注入追踪代码 用到的技术: JavaComplierApi.JVMTI.Agent.Instrumentation+ASM Btrace安装入门 通过github搜索进行下载 新建环境变量BTRACE_HOME 添加Path:%BTRACE_HOME%\bin 两种运行脚本的方式 在JVisualVM中添加Btrace插件,添加classpath 使用命令行btracce <pid> Btrace…
BTrace是Java的一个动态代码追踪工具,通过编写btrace脚本,它可以动态的向目标应用程序的字节码注入追踪代码,通过修改字节码的方式,达到监控调试和定位问题的目的,是解决线上问题的利器. BTrace项目的Github主页 https://github.com/btraceio/btrace,本文中示例代码在 https://github.com/cellei/btrace-practice 快速开始 我们使用 BTrace User's Guide 中的示例来做一个快速开始: impo…
BTrace在解决现场问题的时候非常有用. 1.概述 1.1下载 https://github.com/btraceio/btrace,最新版本是1.3.9 目前1.3.x系列最低支持JDK1.7,要想使用JDK1.6的话,可以下载http://download.csdn.net/detail/ccscu/9899450 1.2开始使用 使用命令:./btrace pid HelloWorld.java 1.3安全限制 默认不支持for循环等,可以使用-u来突破限制 1.4定义classpath…
现象 最近在做项目的时候碰到了使用window.open被浏览器拦截的情况,搞得人无比郁闷啊,虽然在自己的环境可以对页面进行放行,但是对用户来说,不能要求用户都来通过拦截.何况当出现拦截时,很多小白根本不知道发生了啥,不知道在哪里看被拦截的页面,简直悲催啊~~. 另外,可以发现,当window.open为用户触发事件内部或者加载时,不会被拦截,一旦将弹出代码移动到ajax或者一段异步代码内部,马上就出现被拦截的表现了. 原因分析&深入研究 当浏览器检测到非用户操作产生的新弹出窗口,则会对其进行阻…
HTTP 请求的拦截技术可以广泛地应用在反向代理.拦截 Ajax 通信.网页的在线翻译.网站改版重构等方面.而拦截根据位置可以分为服务器端和客户端两大类,客户端拦截借助 JavaScript 脚本技术可以方便地和浏览器的解释器及用户的操作进行交互,能够实现一些服务器端拦截不容易实现的功能.本文将重点介绍通过 JavaScript 脚本在客户端对页面内容进行拦截修改的一些原理和技术. HTTP 请求的拦截功能的应用 随着互联网应用及 B/S 架构的软件系统的风行,越来越多的基于浏览器的应用得以开发…
一.HTTP 请求的拦截技术可以广泛地应用在反向代理.拦截 Ajax 通信.网页的在线翻译.网站改版重构等方面.而拦截根据位置可以分为服务器端和客户端两大类,客户端拦截借助 JavaScript 脚本技术可以方便地和浏览器的解释器及用户的操作进行交互,能够实现一些服务器端拦截不容易实现的功能.本文将重点介绍通过 JavaScript 脚本在客户端对页面内容进行拦截修改的一些原理和技术 二.方法简介 名称 特点 优点 缺点 利用浏览器的 Event 通过对 [ 鼠标事件 ],[ 键盘事件 ],[H…
首先拦截器可以拦截mybatis四大核心对象:StatementHandler,ParameterHandler,ResultSetHandler,Executor,具体拦截时根据需求拦截一部分方法 写拦截器分为三步: 1.定义拦截器实现拦截器接口,说明拦截什么 @Intercepts({ //说明拦截什么 @Signature(type= StatementHandler.class, method = "query",args = {Statement.class, ResultH…
常用web组件 拦截器 Servlet 过滤器 使用思想 创建自定义类 实现或者继承框架里的接口或类 将自定义类注册到框架中 使用自定义类 拦截器 说明 拦截器是SpringMVC中的一种对象,能拦截对Controller的请求 拦截器框架中有系统的拦截器,还可以自定义拦截器,实现对请求的预先处理 自定义拦截器 创建自定义的拦截器类实现SpringMVC框架的HandlerInterceptor接口,根据对拦截时机的需求,重写接口里的对应方法 package com.example.web.in…
Java动态,安全追踪工具 在我们日常的开发中,总是难以避免的要解决线上的问题.如果线上的问题我们在本地调试的时候无论调试多少次发现明明本地调用了这个方法呀,怎么线上就是没调呢?还有就是出了问题的时候由于没有打日志,所以不得不去价格logger,然后换个包,然后再重启,然后再调用,如果在用户很多的时候这么搞,无疑面临着巨大的风险,还不得不去处理用户的大量的投诉,在领导面前也只能默默的低着头承受着批评 那么有没有一种方法可以不用重启应用,又可以在线上追踪代码呢? 答案当然是有的,就是使用Btrac…
作为前端,一直以来都知道HTTP劫持与XSS跨站脚本(Cross-site scripting).CSRF跨站请求伪造(Cross-site request forgery).但是一直都没有深入研究过,前些日子同事的分享会偶然提及,我也对这一块很感兴趣,便深入研究了一番. 最近用 JavaScript 写了一个组件,可以在前端层面防御部分 HTTP 劫持与 XSS. 当然,防御这些劫持最好的方法还是从后端入手,前端能做的实在太少.而且由于源码的暴露,攻击者很容易绕过我们的防御手段.但是这不代表我…
自定义HttpFilter模块完善   背景 在12月由于要针对项目做用户操作日志,但不想在每个方法里去增加代码,写入用户日志.因为这样具体的方法违背职责单一的原则,若后期日志内容格式发生变更,或其他什么需求,该方法代码主要一变在变,故使用HttpModule模块来完成此功能,具体请看:由做网站操作日志想到的HttpModule应用 经过一个月的实际运用与完善,现在可以再次总结下. 拦截时机 现在的版本中,拦截的依据是,在每次请求发生的过程中,拦截控制器类请求,重定向http输出流,并分析出Co…
Annotation复习:1,Annotation:作为类型的元数据; 1,给类型加标记; 2,annotation可以添加各种类型的属性;2,Annotation的上的标记: 1),target:标签可以加在什么类型上的; 1),TYPE:所有类和接口; 2),METHOD:方法; 3),FIELD:字段上面; 4),PARAMETER:方法的参数上面; 5),CONSTRUCTOR:构造器方法; 2),retention:把标签保留到什么时候; 1),CLASS:保留到字节码; 2),SOU…
作为前端,一直以来都知道HTTP劫持与XSS跨站脚本(Cross-site scripting).CSRF跨站请求伪造(Cross-site request forgery).但是一直都没有深入研究过,前些日子同事的分享会偶然提及,我也对这一块很感兴趣,便深入研究了一番. 最近用 JavaScript 写了一个组件,可以在前端层面防御部分 HTTP 劫持与 XSS. 当然,防御这些劫持最好的方法还是从后端入手,前端能做的实在太少.而且由于源码的暴露,攻击者很容易绕过我们的防御手段.但是这不代表我…
一:为什么使用spring? spring泉眼,最好的水,在企业开发中,是业务层最好的框架 spring优点是什么? 1.低侵入,低耦合 2.方便集成其他框架 3.降低javaee开发难度 4.spring包含javaee三层每一层的解决方案(一站式)   二:Spring三大功能? IOC DI AOP IoC? inverse of control:控制反转?简单的说,就是把对象的实例化工作交给容器来完成: 传统的应用,a依赖b耦合度高,而spring呢,耦合度低,体现在哪呢?对象交给容器实…
一.KeyGenerator 概述 在平时开发的时候经常会有这样的需求,插入数据返回主键,或者插入数据之前需要获取主键,这样的需求在 mybatis 中也是支持的,其中主要的逻辑部分就在 KeyGenerator 中,下面是他的类图: 其中: NoKeyGenerator:默认空实现,不需要对主键单独处理: Jdbc3KeyGenerator:主要用于数据库的自增主键,比如 MySQL.PostgreSQL: SelectKeyGenerator:主要用于数据库不支持自增主键的情况,比如 Ora…
荒腔走板 大家好,我是 why,欢迎来到我连续周更优质原创文章的第 55 篇. 老规矩,先来一个简短的荒腔走板,给冰冷的技术文注入一丝色彩. 魔幻的 2020 年的上半年过去了,很多人都在朋友圈和上半年说再见,我也不例外. 上面这张照片,就是我在朋友圈发的一张图片. 这张照片是我在公司去年年会的时候拍的,出处来自电影<飞驰人生>. 电影里面有人问张弛:你五年连续获得冠军的必胜绝招是什么? 张驰满怀深情的回答:必胜绝招只有两个字—奉献.就是把你的全部,奉献给你所热爱的一切. 什么是热爱? 可以用…
https://www.cnblogs.com/shamo89/p/8534580.html https://www.cnblogs.com/juanzila/p/11276067.html…
基本安装 在github上btrace项目的release下 下载最新的btracehttps://github.com/btraceio/btrace/releases 解压完后,将btrace的bin目录添加进环境变量 使用方法 btrace <options> <PID> <btrace脚本> visualvm安装btrace 首先在visualvm中安装btrace插件菜单栏>工具>插件>可用插件>btrace 安装完成后,如下操作 一个…
上一篇介绍的系统,已能预警现实中的大多数 XSS 攻击,但想绕过还是很容易的. 由于是在前端防护,策略配置都能在源代码里找到,因此很快就能试出破解方案.并且攻击者可以屏蔽日志接口,在自己电脑上永不发出报警信息,保证测试时不会被发现. 昨天提到最简单并且最常见的 XSS 代码,就是加载站外的一个脚本文件.对于这种情况,关键字扫描就无能为力了,因为代码可以混淆的千变万化,我们看不出任何异常,只能将其放行. 因此,我们还需增加一套可疑模块跟踪系统. 被动扫描 和之前说的一样,最简单的办法仍是遍历扫描.…
原文请访问个人博客:chrome拓展开发实战:页面脚本的拦截注入 目前公司产品的无线站点已经实现了业务平台组件化,所有业务组件的转场都是通过路由来完成,而各个模块是通过requirejs进行统一管理,在灰度测试时会通过grunt进行打包操作,虽然工程化的开发流程已经大大提升了效率,但是为了满足不同平台在任意业务入口页面一键注入业务脚本即可进行测试的实际需求,团队尝试通过chrome拓展来进行实现.由于我本人是第一次开发chrome拓展插件,所以开发的过程中遇到不少坑,某些功能的实现方式也未必是最…
拦截器,顾名思义就是用来拦截的. 那什么是拦截,又为什么要拦截.对于Spring MVC来说,拦截器主要的工作对象就是用户的请求,拦截下来之后,我们可以在拦截的各个阶段悉心呵护[为所欲为].常见的比如可以做权限验证,登录系统后,系统获取到你的请求然后分析下你的用户权限,是Administrator还是User还是Guest. 主要相关类和方法 HandlerExecutionChain 该类主要由handler和handler interceptors组成 HandlerMapping类通过ge…
在生产环境中经常遇到格式各样的问题,如OOM或者莫名其妙的进程死掉.一般情况下是通过修改程序,添加打印日志:然后重新发布程序来完成.然而,这不仅麻烦,而且带来很多不可控的因素.有没有一种方式,在不修改原有运行程序的情况下获取运行时的数据信息呢?如方法参数.返回值.全局变量.堆栈信息等.Btrace就是这样一个工具,它可以在不修改原有代码的情况下动态地追踪java运行程序,通过hotswap技术,动态将跟踪字节码注入到运行类中,对运行代码侵入较小,对性能上的影响可以忽略不计. 基础说明 由于Btr…