当我的通配符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
并让通配符在启动时回显这个值:
-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
工具吗?我很惊讶它在堆栈溢出上没有标签,而且网上的信息如此之少。
发布于 2016-03-07 21:37:26
问题是这句话:
-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 ^
https://stackoverflow.com/questions/35849538
复制相似问题