Adding SecurityConf to Dynamically created topic
mcaughey Jul 21, 2005 2:31 PMI have been able to create a TopicMBean in code but i haven ot been able to get access to it becuase I can not authenticate against it. I would imagine that is becuase it doesn't have a SecurityConf. Here's what I did.
private void registerTopic(String topicname)
throws MalformedObjectNameException, Exception {
createDestination("org.jboss.mq.server.jmx.Topic",
getTopicObjectName(topicname), "topic/" + topicname);
}
private ObjectName getTopicObjectName(String name)
throws MalformedObjectNameException {
return new ObjectName("jboss.mq.destination:service=Topic,name=" + name);
}
protected void createDestination(String type, ObjectName name,
String jndiName) throws Exception {
if (logger.isDebugEnabled()) {
logger.debug("Attempting to create destination: " + name
+ "; type=" + type);
}
MBeanServer server = MBeanServerLocator.locateJBoss();
server.createMBean(type, name);
server.setAttribute(name, new Attribute("DestinationManager",
new ObjectName("jboss.mq:service=DestinationManager")));
server.setAttribute(name, new Attribute("SecurityManager",
new ObjectName("jboss.mq:service=SecurityManager")));
server.setAttribute(name, new Attribute("SecurityConf", getSecurityconf()));
server.setAttribute(name, new Attribute("JNDIName", jndiName));
TopicMBean tmb = (TopicMBean)MBeanServerInvocationHandler.newProxyInstance(server, name,TopicMBean.class,false);
tmb.start();
}
private Element getSecurityconf() throws SAXException, IOException{
Element el = null;
StringBuffer securityConfStr = new StringBuffer();
securityConfStr.append("<security>");
securityConfStr.append(" <role name=\"publisher\" read=\"true\" write=\"true\" create=\"false\"/>");
securityConfStr.append(" <role name=\"durpublisher\" read=\"true\" write=\"true\" create=\"true\"/>");
securityConfStr.append("</security>");
DOMParser parser = new DOMParser();
parser.parse(securityConfStr.toString());
Document doc = parser.getDocument();
el = doc.getDocumentElement();
return el;
}
How ever I get the following Exception, no protocol [then is spits out the XML I put in the Element].
Any help?
Michael