问题(小简洁版):我有一个jar文件,我可以编辑,但我想创建一个方法,在该jar中的特定类中调用另一个将在另一个jar下的类。 我们的想法是,现有的.jar只能让方法调用external.jar,而external.jar会向existing.jar返回一个值,以便继续处理。
问题(详细版本):我使用p6spy来捕获我的应用程序生成的sqls但是我需要将sql过滤到一个非常特定的级别,不仅p6spy的函数“sqlExpression”不起作用,即使它这样做还不够。 我目前已经反编译(我没有找到项目的来源,是的,它是一个开源项目)p6spy并编辑了formattedlogger.class以满足我的需要。 我的问题是,这是一个“解决方案”,许多人将不得不使用,我应用的过滤器对某些人来说是不够的,而其他人根本无法工作,因为他们需要我需要排除的东西。 我做了一些研究,并决定我应该采用适配器路由,我决定p6spy.jar将保持不变,但它将从另一个jar文件中调用一个类,然后该文件将包含过滤器的特性。
但我不知道该怎么做。 :(
方案: 操作系统:CentOS版本6.4(最终版) 最有可能是虚拟机。 应用服务器:jboss-4.3.0.GA 其中包含服务器文件夹下的多个实例。 我在app_server / server / instance / lib下有p6spy.jar 我知道我必须将适配器放在同一个文件夹下。
有没有人知道应该怎么做,我可以阅读这些事情或我应该如何进行,可能是一个不同的解决方案或可能是另一个想法。 我愿意接受建议。
*编辑1: 我有一个p6spy.jar文件,其中包含一个我编辑的类以满足我的需要。 (FormattedLogger.class)
课程如下:
package com.p6spy.engine.logging.appender;
public abstract class FormattedLogger
{
protected String lastEntry;
public void logSQL(int connectionId, String now, long elapsed, String category, String prepared, String sql)
{
String logEntry = now + "|" + elapsed + "|" + ((connectionId == -1) ? "" : String.valueOf(connectionId)) + "|" + category + "|" + prepared + "|" + sql;
logText(logEntry);
}
public abstract void logText(String paramString);
public void setLastEntry(String inVar)
{
this.lastEntry = inVar;
}
public String getLastEntry() {
return this.lastEntry;
}
}
我需要它看起来像这样:
package com.p6spy.engine.logging.appender;
public abstract class FormattedLogger
{
protected String lastEntry;
public void logSQL(int connectionId, String now, long elapsed, String category, String prepared, String sql)
{
sql = method_in_another_class_and_in_other_jar_file(sql);
logText(sql);
}
public abstract void logText(String paramString);
public void setLastEntry(String inVar)
{
this.lastEntry = inVar;
}
public String getLastEntry() {
return this.lastEntry;
}
}
这个“method_in_another_class_and_in_other_jar_file(sql)”就像名字所说的那样,会在这个jar之外,以便进行简单的编辑等。
答案 0 :(得分:0)
这个问题尚未解决,但回复非常有帮助。
Jim Harrison建议将字节码修改作为解决方案,遗憾的是,这不是我要采取的路径。
markbernard获得了源文件@ sourceforge.net/projects/p6spy/files/p6spy,我将重新编写驱动程序/软件以适合我的场景。
谢谢大家的帮助。 :d