Jboss类冲突

时间:2012-09-24 17:10:25

标签: java jboss classloader java-6

这应该是一个常见的案例,很容易让你们很多人。

我有appA。该应用程序使用框架fw1和fw2。

fw1使用来自jar的Logger.java

http://anonsvn.jboss.org/repos/common/common-logging-spi/trunk/src/main/java/org/jboss/logging/

fw2使用来自jar的Logger.java

http://anonsvn.jboss.org/repos/common/jboss-logging/trunk/src/main/java/org/jboss/logging/

请注意Logger.java不可互换(即具有不同的方法)。每个框架都需要使用自己选择的Logger.java。

如何在Jboss中部署这样的应用程序?这不是我的确切场景,但如果有人能告诉我如何解决这个问题会很棒。我可以从那里拿走它。原因是如果我必须解释我的情况,它将需要3页!

提前致谢

2 个答案:

答案 0 :(得分:1)

我认为您的问题没有一般解决方案。但我建议你继续发现如下。

通常你应该使用不同的类加载器运行fw1和fw2。如果你可以拦截这些框架的初始化,你可以这样做。

其他方法是创建自己的Logger混合版本。我不知道它有多复杂,但可能这更容易。例如,logger1具有方法writeLog(),而Logger2具有方法printLog()。因此,在与原始包相同的包中创建自己的Logger。此记录器将使用单独的类加载器将调用委托给第一个或第二个版本,并将实现这两​​种方法。

不幸的是,在没有fw1,fw2和logger的具体名称的情况下,你非常普遍地描述了你的问题。如果您自己找不到解决方案,可能会尝试使用更具体的信息提交另一个问题。它可能有所帮助。

祝你好运。

答案 1 :(得分:0)

您正在使用哪个版本的JBoss?

JBoss通过jboss-deployment-structure.xml

提供了非常细粒度的类加载处理

使用它你可以指定fw1使用loggera.java和fw2来使用loggerb.java

我觉得不需要重复,你可以在jboss docs中阅读jboss-deployment-structure.xml。

希望这有帮助。