2012-06-17 40 views
1

我正在使用Jboss 7.1.1.final,并且我有一个大量使用JMS的应用程序。在做了一些性能测试之后,我发现只要我达到一定数量的消息,应用程序就开始失败,因为没有足够的队列会话。如何使用Java反射来设置接口字段

经过一番研究,我发现这个JMS属性只在JBoss的版本7.1.2曝光(见here)。

因为,出于法律原因,我目前还不能使用此版本(或特定的构建它被固定),唯一的办法去改变它是通过使用反射。所以我下载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()方法需要的对象实例和,因为它是一个接口我不能实例化)

回答

2

您正在谈论this一段代码。我必须让你失望:界面根本没有字段。他们只有方法声明,没有实现。

你看到的其实有public static final(所有这些关键字是隐含的“区域”内的接口)接口内部定义的常量。但该接口仅用作它们的名称空间,它们不是真实的字段。实现这种接口的类不会继承这些字段并拥有自己的变量副本。他们只是常数。

话虽这么说 - 你不能做任何事情,至少与该接口。

+0

谢谢你的明确解释。 – Tomer