Olá pessoal, sou novo aqui nesse grupo, e já chego com uma dúvida! 
Estou iniciando com EJB3, no momento estou estudando MDB. Então segue a dúvida.
Fiz uma aplicação chat para propósitos de estudo que funciona da seguinte forma:
1- Cada cliente se conecta ao servidor através de um EJB stateful que armazena dados do usuario (por enquanto só o apelido) após ele se conectar.
2- Através de um método remote, o usuário invoca um método do EJB, que manda um topic de nome “chatTopic”.
3- Cada usuário já assina esse “chatTopic” e recebe as mensagens
Até aqui tudo funcionando muito bem, contudo, para fins de estudo decidi fazer uma modificação, e assim que ficaria a aplicação:
1- Cada cliente se conecta ao servidor através de um EJB stateful que armazena dados do usuario (por enquanto só o apelido) após ele se conectar.
2- Através de um método remote, o usuário manda mensagens para o EJB, que manda um topic ou queue de nome “chatTopic”.
3- Um MDB recebe esse “chatTopic” faz algum tratamento na mensagem (como inibir certas palavras, ou por no log, não decidi ainda).
4- O MDB envia essa mensagem tratada para um topic de nome "clientTopic"
5- Cada usuário já assina esse “clientTopic” e recebe as mensagens
Aqui que está dando problema. No cliente o código é esse:
public Cliente() throws NamingException, JMSException {
Context initialContext = getInitialContext();
Object ref = initialContext.lookup("ChatSessionBean/remote");
chat = (RemoteChat) PortableRemoteObject.narrow(ref,
RemoteChat.class);
InitialContext context=getInitialConext();
ConnectionFactory factory= (ConnectionFactory)context.lookup("TopicConnectionFactory");
Topic topic=(Topic)context.lookup("topic/clientTopic");
Connection con =factory.createConnection();
Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageConsumer consumer=session.createConsumer(topic);
consumer.setMessageListener(this);
con.start();
}
O problema é que na linha:
levanta o NamingException, pois o clientTopic não existe. Existe alguma forma que eu possa criá-lo?
Encontrei um work around colocando um MDB que recebe o “clientTopic” mas não faz nada. Dessa forma o “clientTopic” é registrado. Mas tem alguma forma menos gambiarreira?
Valeu por ter lido até aqui! 
Abraços,
Thiago Jamir