Модуль Byteman и JBoss
Я не могу с byteman 4.0.15 и JBoss EAP 7.3 иметь вспомогательный класс, чтобы получить соединение с модулем IronJacamar, я столкнулся с NoClassDefFoundException, когда мой вспомогательный класс пытается его получить.
здесь btm, я добавил IMPORT с именем модуля ironjacamar Jboss Module
RULE WrappedDataSource getcnx
CLASS org.jboss.jca.adapters.jdbc.WrapperDataSource
IMPORT org.jboss.ironjacamar.jdbcadapters
METHOD getConnection()
HELPER org.jboss.byteman.ConnectionHelper
AT EXIT
IF true
DO traceConnection($!);
ENDRULE
Вот мой вспомогательный класс (пакет с именем org.jboss.byteman и упакованный в bytemanhelper-0.0.1-SNAPSHOT.jar):
package org.jboss.byteman;
import org.jboss.byteman.rule.Rule;
import org.jboss.byteman.rule.helper.Helper;
import org.jboss.jca.adapters.jdbc.jdk8.WrappedConnectionJDK8;
import java.sql.SQLException;
public class ConnectionHelper extends Helper {
protected ConnectionHelper(Rule rule) {
super(rule);
}
public void traceConnection(final Object connection) {
try {
System.out.println("Real connexion =" + ((WrappedConnectionJDK8)connection).getUnderlyingConnection());
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Я добавил следующие свойства в JBoss EAP:
-Djboss.modules.system.pkgs=org.jboss.byteman -javaagent:/var/byteman-download-4.0.15/lib/byteman.jar=script:/var/bytemanrules.btm,sys:/var/bytemanhelper-0.0.1-SNAPSHOT.jar,sys:/var/byteman-download-4.0.15/contrib/jboss-modules-system/byteman-jboss-modules-plugin.jar,modules:org.jboss.byteman.modules.jbossmodules.JBossModulesSystem -Dorg.jboss.byteman.transform.all=true
Но когда выполняется метод traceConnection
((WrappedConnectionJDK8)connection).getUnderlyingConnection()
У меня есть java.lang.NoClassDefFoundError: org/jboss/jca/adapters/jdbc/jdk8/WrappedConnectionJDK8, хотя этот класс присутствует в ironjacamar-jdbc-1.4.30.Final-redhat-00001.jar, хранящемся в JBoss Module org. .jboss.ironjacamar.jdbCADapters.
Есть ли способ перехватить и обработать классы модулей JBoss с правилами byteman?
Пьер