Search code examples
javawebspherejmxwebsphere-8

Not able to create JMS topic programatically in WebSphere


I'm not able to create SIB JMS topic or queue. I tried the below code. The code ran without any exception or error

public void createSIBJMSTopic(String topicName, String jndiName, String busName, String topicSpace) {
    try {
        String server = "server1";
        String description = "abc";
        Session session = new Session();
        CommandMgr commandMgr = CommandMgr.getCommandMgr(client);
        configService = new ConfigServiceProxy(client);
        System.out.println("Commands list" + commandMgr.listAllCommands().toString());
        AdminCommand cmd = commandMgr.createCommand("createSIBJMSTopic");
        System.out.println(session);
        ObjectName targetObject = configService.resolve(session, null, "Node=mbaastest40Node02,Server=server1")[0];

        cmd.setTargetObject(targetObject);
        cmd.setParameter("name", topicName);
        cmd.setParameter("jndiName", jndiName);
        cmd.setParameter("busName", busName);
        cmd.setParameter("topicSpace", topicSpace);
        System.out.println("Before Execute");
        cmd.execute();
        CommandResult result = cmd.getCommandResult();
        System.out.println("after execute");
        if (result.isSuccessful())
            System.out.println(result.toString());
        if (!result.isSuccessful())
            throw new AdminException(result.getException());
        System.out.println("done");
        configService.save(session, true);
        System.out.println("After save");
    }
    catch (Exception e) {
        e.printStackTrace();
    }
}

Solution

  • You need to link the AdminCommand with the config Session via:

     AdminCommand cmd = commandMgr.createCommand("createSIBJMSTopic");
     cmd.setConfigSession(session);
    

    You should also note the recommendation to call configService.discard(session) when done:

    Here's a good getting started article that may help too.