Hello, we have an application where each user has ists own queue and each user-group has its own topic. when i put a user into a group i need to add a durable subscription for the user on the topic associated with that group. the -service.xml file of the topic allows every member of the group to create a durable subscription.
i add a member to a group by getting the DynamicStateManager mbean and calling addUserToRole() on it. afterwards i call saveConfig(). i actually create the subscription for "newMember" on "groupTopic" using the following code: Context ctx = null; | TopicConnection topicConnection = null; | TopicSession topicSession = null; | TopicSubscriber subscriber = null; | try { | Hashtable env = new Hashtable(); | env.put(Context.PROVIDER_URL, providerURL); | env.put(Context.SECURITY_PRINCIPAL, principal); | env.put(Context.SECURITY_CREDENTIALS, credentials); | ctx = new InitialContext(env); | | TopicConnectionFactory factory = (TopicConnectionFactory) ctx.lookup(connectionFactory); | topicConnection = factory.createTopicConnection(principal, credentials); | topicConnection.setClientID(newMember); | | topicSession = topicConnection.createTopicSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE); | | Topic messageTopic = (Topic)ctx.lookup(groupTopic); | subscriber = topicSession.createDurableSubscriber(messageTopic, groupTopic, null, true); | | // getStateManager() returns the statemanager mbean | getStateManager().saveConfig(); | } | catch (Exception e) { | e.printStackTrace(); | } | finally { | if (subscriber != null) | subscriber.close(); | if (topicSession != null) | try { topicSession.close(); } | catch (JMSException e) {} | if (topicConnection != null) | try { topicConnection.close(); } | catch (JMSException e) {} | if (ctx != null) | try { ctx.close(); } | catch (Exception e) {} | } the code above works fine if the clientId (newMember) is not in use. so i check this first and if it is in use i only use the statemanager procedure above - giving the user the permission to create its durable subscription when it logs in the next time. but when he tries to do the following exception is thrown: javax.jms.JMSSecurityException: Connection not authorized to do durable subscription on topic: g7000 at org.jboss.mq.security.ServerSecurityInterceptor.subscribe(ServerSecurityInterceptor.java:142) at org.jboss.mq.server.TracingInterceptor.subscribe(TracingInterceptor.java:816) at org.jboss.mq.server.JMSServerInvoker.subscribe(JMSServerInvoker.java:297) at org.jboss.mq.il.uil2.ServerSocketManagerHandler.handleMsg(ServerSocketManagerHandler.java:160) at org.jboss.mq.il.uil2.SocketManager$ReadTask.handleMsg(SocketManager.java:355) at org.jboss.mq.il.uil2.msgs.BaseMsg.run(BaseMsg.java:377) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:732) at java.lang.Thread.run(Thread.java:536) what am i missing here. do i have to restart the topic (which i cannot do because there may be users logged in using it)? are there any sideeffects in the statemanager i do not know? is there another, more preferable method to create a durable subscription? i use jboss 3.2.3. any idea would be appreciated. ingo View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3822128#3822128 Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3822128 ------------------------------------------------------- SF.Net is sponsored by: Speed Start Your Linux Apps Now. Build and deploy apps & Web services for Linux with a free DVD software kit from IBM. Click Now! http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click _______________________________________________ JBoss-user mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-user