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

  • SQLView -- 可视化的Weblogic JDBC DEBUG

/Articles

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的集成。...

Weblogic和LDAP集成的验证请求分析

Weblogic和LDAP比如Active Directory的集成登录比较简单。分析集成过程中的LDAP通信,就能很直观地看出他们的工作原理。 所有的LDAP的登录都遵循2个步骤,我画了一张简单的图来表示过程。 查询: SearchRequest/SearchResEntry 验证: BindRequest/BindResponse 下面的分析通过Active Directory来做举例。 假设Weblogic中绑定的用户为user2@mycompany.com 。这个用户是用来做LDAP初始连接,后续的请求都要依赖这条连接。...

文件/文件夹权限的override

setUID / setGID setUID会让当前用户能够临时地以执行文件的拥有者的身份,相当于用高权限override了自己的低级权限。比如某个文件不允许被普通用户写操作(比如vi)、甚至不允许最基本的读操作(比如cat)。但是当root授予vi或者cat予setUID或者setGID后,当前用户就拥有了vi/cat拥有者的权限,具备了对文件的读写。 假设root用户创建了一个文本文件,并且只赋给 rwx------ 权限。 [root@localhost shell]# p2d.sh rwx------ permission = rwx------ binary =...

Agile SDK的Numeric字段精度问题

Web Client显示Numeric字段时(Double类型),根据在Java Client中scale设定的小数位数自动计算精度。比如下图中所示的Java Client和Web Client所展示的那样。 但是如果使用SDK来获取Numeric字段时,不能简单地通过下面的错误代码来获取Double类型返回值,因为它这个代码只是获取Double的实际值,并没有获取精度设定。 IItem item = (IItem)session.getObject(IItem.OBJECT_TYPE, "DIE-00001"); Object num = item.getValue(new...

自定义JavaClient中的subclass图标

关于如何自定义JavaClient中subclass的图标,官方用户手册中讲到了要把图标文件添加到JavaClient的custom.jar中。文档是这么讲的: 实际上如果简单地按照它的做法,这是无法实现的。原因在于所有通过Java Web Start发布的jar文件都是经过了签名保护的。下面的内容我来演示如何通过自签名的方式实现它。 创建keystore d:\>keytool -genkeypair -dname "cn=Jie Chen, ou=Agile, o=Oracle, c=US" -alias javaclientKey -keypass oracle...

touch与文件时间

之前有个很诡异的问题,就是更新JAR压缩包中的class文件,会出现JAR文件本身的Last Modification Time保持不变的情况。这个问题到现在都没有找出原因,后来只能通过touch来人为修改。所以也顺便学习了一下touch的其他用法。 修改为指定的时间 假设有个file1的文件,它的时间信息显示为: $ stat file1 File: ‘file1’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fb00h/64256d...

try-with-resources和异常处理

Java 7开始有一个有意思的功能,就是结合了自动关闭资源和异常处理的try-with-resources语句。按照旧式的处理方式,关闭资源一般放在try-catch的finally块中,需要显式地关闭。比如关闭文件句柄、数据库中的连接、语句和记录集等。而try-with-resources不需要显式声明关闭,它会自动调用close()方法,防止程序员忘记关闭资源而引起内存可能的泄漏。因此这种方式必须要求资源具有统一性,即必须实现了java.lang.AutoCloseable接口和它的唯一方法close()。 实现AutoCloseable...

为什么对super的调用必须是类构造器中的第一个语句

仔细研究(类与成员变量的初始化),可以解释很多疑问。这里顺便分析一下Java界一直存在的疑惑。 为什么对super的调用必须是当前类构造器函数中的第一个语句? 先说明一下JLS语言规范对super调用的规则 如果父类存在默认构造函数(就是无参构造函数),子类的构造函数中,Java会隐式地在第一行语句前填入 super(); 用户也可以显式地调用 super(); 且必须保证是第一个语句。 如果父类不存在默认构造函数,但存在有参构造函数,那么在子类的构造函数中,程序员必须显式地调用父类的有参构造函数,如: super(xxx);...

类与成员变量的初始化

之前研究过变量(类变量与实例变量的内存存储),顺便这次分析一下类变量的初始化问题,也能从另外一个角度来证明类变量的内存分配的共享性质。 假设我定义一个ClassA,含有一个实例变量s,一个默认构造函数(无参构造器),一个有参构造函数,还有一个实例方法check(String)。 public class ClassA { String s; public ClassA(){ s = "hello"; System.out.println("ClassA.ClassA(): s=" + s); } public...

finalize与资源释放/对象销毁

在Oracle Agile的代码中有一段非常不好的设计,就是关闭FTP连接释放socket资源的过程被定义在封装类的finalize()方法中。比如下面的代码。 private void disconnect() throws IOException { // Disconnect from FTP site if (this.m_connected) { this.m_ftp.disconnect(); this.m_ftp = null; this.m_connected = false; } } @Override...

1 2 3 4 5 6 7 8 9 10 11