• DAnalyzer 1.2发布啦 -- Weblogic与Directory协议分析工具

  • SQLView -- 可视化的Weblogic JDBC DEBUG

/Articles

Linux如何优雅地输出Java线程堆

诊断Java线程问题时,一直要求提供客户Java的线程堆。大部分时间都在指导客户怎么抓数据,非常浪费时间。曾经写了一个非常方便的脚本,但是用户一般都会纠结于参数的选择,效果不明显。 有兴趣的可以使用我的脚本 ajs2.sh #!/bin/bash #-------------------------------------------------------------------------------- #- File name: ajs.sh - (A)uto (J)ava (S)tack #- Purpose: Collect Java Stacks...

JDBC驱动的类加载-SPI新瓶装旧酒

今天偶尔看JDBC驱动的问题,发现了一个有意思的事情,就是Class.forName()和SPI动态注册,原理居然是一样的,新瓶装旧酒。 老派的手工注册 JDBC很早以来一直采用驱动管理显式的注册方法,就是驱动类的使用者,显式地使用Class.forName()加载驱动类。 Class.forName("oracle.jdbc.driver.OracleDriver"); Connection con=DriverManager.getConnection(...); Class.forName()的作用是初始化具体driver类的用static显式声明的静态初始化块。按照JDBC...

SQLView-用Python将Weblogic JDBC数据可视化

When to run SQLView? If you have any issue of SQL data related, or you have to analyze SQL execution time, then use SQLView. The case could be like: No expected data from Search Duplicated rows returned from Search Potential long running SQL How to run SQLView? Copy SQLView.py to Weblogic...

一个JDBC未使用连接池导致的数据库INACTIVE SESSOIN

本周有个客户报数据库出现大量的INACTIVE SESSION,数据库无法及时清除,导致超出进程限制,应用的其他请求无法得到响应。整个排错的思路很清晰,记录之。 System parameters with non-default values: processes = 1000 ORA-00020: maximum number of processes (1000) exceeded 排查他们的数据库,进程数提高2000后,发现还是有大量的连接请求持续不断地产生,慢慢逼近2000。 > SELECT DISTINCT username,...

Java异常链与故障诊断

产品的故障诊断,都需要依靠日志文件中的异常栈来判断。很多时候,我不得不需要客户提供真实的数据库,一点点去调试。而客户提供的日志文件,很多时候都没有参考价值。原因就在于我们的代码中,Exception捕获的处理方式太随意,不注重后续跟踪。 Exception处理很容易被程序员忽略,大家都不注重,以为只要抛出来就对了,因为觉得它太简单了,too simple 所以 nobody cares。我把下面例子一讲,就会明白,道理如此简单,作用如此重要。 错误模拟 自定义一个AppException,再派生两个子类。 package cn.xwiz.test.exception; public...

Java加密套件强度限制引起的SSL handshake_failure

今天为客户解决了一个奇葩的SSL问题。通过Java代码使用HttpURLConnection去连接https系统时候总是报错handshake_failure。而使用浏览器访问一切正常。记录下诊断的过程。 HttpURLConnection的调用非常简单。 HttpURLConnection connection = (HttpURLConnection)m_url.openConnection(); connection.setRequestMethod("GET"); connection.setAllowUserInteraction(false);...

Python将CSV转换成HTML表格

我一般用Python处理数据文件,比如分析日志,转换文件等。比如我开发的Oracle内部使用的SQLView工具就是基于Jython/Python,对产生的Weblogic JDBC分析并生成最直接可视的报表。套用现在最装B的说法,就是数据可视化。 SQLView的脚本比较复杂,它需要对不同行进行交叉引用分析。而下面的这个例子,是把一个CSV文件转换成HTML文件。将复杂的数据生成彩色的HTML,老板们最喜欢这种花里胡哨的报表了。...

Java证书安装及多个Java应用间的根证书交叉信任

在一套Java产品环境中,常常会存在不同的Java应用,相互之间会通过HttpClient模拟HTTP访问对方,这时就涉及到浏览器所不会用到的特殊的过程:根证书的交叉信任。最后面会讲为什么浏览器和Java应用服务器的通信不需要交叉导入根证书(公钥)。 制作密钥库文件 假设有2个Java应用, app1和app2,用户访问的地址为https://app1.xwiz.cn 和 https://app2.xwiz.cn。首先分别为这两个主机应用创建密钥库JKS和证书请求CSR keytool -genkey -alias app01 -keyalg RSA -keysize 2048...

容器对象的推导方式和元组生成器表达式

使用推导语法可以快速地产生容器系列的对象,比如list,set,dict,tuple。由此出现了列表推导,集合推导,字典推导和元组推导(生成器表达式) 列表推导 比如一个最简单的列表推导,将逗号分隔的字符串组成列表。 str = '0,1,2,3,4,5,6,7,8,9' list1 = [i for i in str.split(',')] xprint(list1) type:<class 'list'>,id:2486205385608,value:['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']...

Python中的int此整型非彼整型问题

最近在学习Python,有一次尝试用递归方法来实现去除左右空格的功能,却进入了一个有趣的话题,就是Python3中的整型问题。记录下来。 # -*- coding: utf-8 -*- import sys def xtrim(s): if s[:1]==' ': s = s[0-len(s)+1:] s = xtrim(s) if s[-1:]==' ': s = s[:len(s)-1] s = xtrim(s) return s s = ' 可爱的小猪可爱的小猪可爱的小猪 '...

Java中static依赖导致的IncompatibleClassChangeError

处理客户的一个问题请求时,碰到了一个错误。 Expected static field com.agile.extract.server.text.TextOutputStreamWriter.formatter java.lang.IncompatibleClassChangeError: Expected static field com.agile.extract.server.text.TextOutputStreamWriter.formatter 根据官方的JDK...

DAnalyzer for Weblogic+Agile LDAP集成验证工具

DAnalyzer设计的意图是用LDAP协议来模拟Weblogic、Agile PLM与Directory Server之间的访问。你也可以在软件启动参数中设置-Dinclude.agile=false来纯粹地使用于Weblogic。 功能介绍 校验连接 根据不同的Directory Server类型,内置了默认的参数(也可以修改他们使用自己的参数)。只需要填入其他空白参数,就可以验证LDAP的集成。...

1 2 3 4 5 6 7 8 9 10