当我的wildfly 8.1.0服务器启动时,它应该创建一个类的实例。
我不确定这是否正在发生,我无法更改源代码,因此我想我会使用Byteman来完成此任务。
我为Byteman写了这个规则文件,存储在C:\app\ECLSManagedConnectionFactory.btm
:
RULE trace ECLSManagedConnectionFactory init entry
CLASS com.empolis.ecls.server.j2ee.jca.impl.ECLSManagedConnectionFactory
METHOD <init>
AT ENTRY
IF true
DO traceOpen("ECLSManagedConnectionFactory", "/app/ECLSManagedConnectionFactory.log");
traceln("entering <init>");
traceClose("ECLSManagedConnectionFactory");
ENDRULE
我下载了Byteman并将其解压缩到C:\byteman-3.0.3
。
我修改了我的java_opts
并在启动期间让wildfly回显该值:
-Xms64m -Xmx512m -XX:MaxPermSize=256m
-Dorg.jboss.byteman.transform.all
-javaagent:C:/byteman-3.0.3/lib/byteman.jar=script:C:/app/ECLSManagedConnectionFactory.btm,boot:C:/byteman-3.0.3/lib/byteman.jar:listener:true
-Dsun.rmi.dgc.client.gcInterval=3600000
-Dsun.rmi.dgc.server.gcInterval=3600000
-Djava.net.preferIPv4Stack=true
-Dorg.jboss.resolver.warning=true
-Djboss.modules.system.pkgs=org.jboss.byteman
-Djboss.server.default.config=cls.xml
如果上面的java_opts
的第2行和第3行不存在,我的服务器会成功启动,但是当我添加它们时,服务器根本无法启动。什么都没有表明stdout或stderr发生了什么。我收到一条消息,要求查看server.log
以获取更多信息,但该文件不存在。
我做错了什么?我已经尝试了路径的每个斜线方向的组合(在Windows 10上,如果这很重要)。
有没有人真正使用这个byteman
工具?我很惊讶它在Stack Overflow上没有标签,而且网上的信息很少。
答案 0 :(得分:0)
问题在于这一行:
-javaagent:C:/byteman-3.0.3/lib/byteman.jar=script:C:/app/ECLSManagedConnectionFactory.btm,boot:C:/byteman-3.0.3/lib/byteman.jar:listener:true
This should have been a comma ^
抛弃驱动器名称,并在引导jar和侦听器之间添加逗号:true。像这样:
-javaagent:/byteman-3.0.3/lib/byteman.jar=script:/app/ECLSManagedConnectionFactory.btm,boot:/byteman-3.0.3/lib/byteman.jar,listener:true
This has been fixed - it is a comma as it should be ^