2

我正在使用 Jboss 7.1.1.final,并且我有一个大量使用 JMS 的应用程序。在做了一些性能测试之后,我发现每当我收到一定数量的消息时,应用程序就会开始失败,因为没有足够的队列会话。

经过一番研究,我发现这个 JMS 属性只在 jboss 版本 7.1.2 中公开(见这里)。

由于出于法律原因,我目前无法使用此版本(或修复它的特定版本),因此更改它的唯一其他方法是使用反射。所以我下载了Jboss源代码并开始使用它,现在我有几个问题:

首先我发现我需要的类org.jboss.as.messaging.CommonAttributes实际上是一个接口,它有这一行:

 SimpleAttributeDefinition CONNECTION_THREAD_POOL_MAX_SIZE = new SimpleAttributeDefinition("thread-pool-max-size",
        new ModelNode().set(HornetQClient.DEFAULT_THREAD_POOL_MAX_SIZE), ModelType.INT,  true, MeasurementUnit.NONE);
  1. ClassLoader.getSystemClassLoader()会给我加载类所需的类加载器吗?
  2. 如何使用反射设置接口字段值?(该Field.set()方法需要一个对象实例,因为它是一个接口,我无法实例化它)
4

1 回答 1

3

您正在谈论这段代码。我必须让你失望:接口根本没有字段。它们只有方法声明,没有实现。

您所看到的实际上public static final(所有这些关键字对于接口内部的“字段”都是隐含的)在接口主体中定义的常量。但是接口仅用作它们的命名空间,它们不是真正的字段。实现此类接口的类不会继承这些字段并拥有自己的变量副本。它们只是常数。

话虽如此 - 你不能做任何事情,至少在这个界面上是这样。

于 2012-06-17T11:16:42.430 回答