Есть WAR приложение. Требуется:
1. Из этого приложения обращаться к некоторым внешним классам.
2. Эти классы должны деплоиться/убираться из JBoss автоматически.
Создаю sar приложение с MBean'ом, который будет сообщать список известных ему классов ну
и при необходимости создавать экземпляры этих классов. Этот MBean реализует некоторый интерфейс, скажем, Factory.
А классы реализуют интерфейс Plan.
Вопрос: как из основного WAR приложения, получив доступ к MBean'у, преобразовать его к этому интерфейсу?
пишу Factory f = (Factory)new InitialContext().lookup("something");
Если Factory не определана в WAR — ошибка NoClassDefFound. Если определена — ClassCastException.
Причем он именно таки получает доступ к этому Bean'у. Если пишу
Object f = (Object)new InitialContext().lookup("something");
то все нормально и в debug вижу нужный интерфейс.
S>Вопрос: как из основного WAR приложения, получив доступ к MBean'у, преобразовать его к этому интерфейсу?
а в jmx-console видны у твоего mbean'а нужные операции?
а если примерно так сделать — будет работать? (пишу по-памяти, может где ошибка вкралась)
MBeanServer server = (MBeanServer)MBeanServerFactory.findMBeanServer(null).get(0);
ObjectName name = new ObjectName("jboss","service","DefaultPartition");
ObjectInstance partition = (ObjectInstance)server.queryMBeans(name,null).iterator().next();
String nodeName = (String)server.invoke (partition.getObjectName(),"getNodeName",new Object[]{},new String[]{});