1

私の 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

上記の 2 行目と 3 行目が存在しない場合、サーバーは正常に起動しますjava_optsが、それらを追加した瞬間、サーバーは単に起動しません。何が起こっているかを示すものは、stdout または stderr にはありません。server.log詳細を確認するようにというメッセージが表示されますが、そのファイルは存在しません。

私は何を間違っていますか?パスのスラッシュ方向のすべての組み合わせを試しました(重要な場合はWindows 10で)。

誰かが実際にこのbytemanツールを使用していますか? Stack Overflow にタグがなく、オンラインで入手できる情報がほとんどないことに驚いています。

4

1 に答える 1

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 ^

ドライブ名を捨てて、boot jar と listener: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 ^
于 2016-03-07T21:37:26.563 に答える