2

这应该是常见的情况,对你们中的许多人来说很容易。

我有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 页!

提前致谢

4

2 回答 2

1

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

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

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

不幸的是,您在没有 fw1、fw2 和记录器的具体名称的情况下非常笼统地描述了您的问题。如果您自己找不到解决方案,可能会尝试提交另一个包含更具体信息的问题。它可能会有所帮助。

祝你好运。

于 2012-09-24T17:25:55.340 回答
0

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

JBoss 通过 jboss-deployment-structure.xml 提供了非常细粒度的类负载处理

使用它,您可以指定 fw1 使用 loggera.java 和 fw2 使用 loggerb.java

我觉得不需要重复,您可以在 jboss 文档中阅读有关 jboss-deployment-structure.xml 的信息。

希望这可以帮助。

于 2012-09-24T19:46:39.283 回答