texerasmo
22-01-2008, 13:57
Mi potete dare un mano...
L'obbiettivo che devo raggiungere è il seguente
Dovrei fare un applicazione standalone in java che utilizzi le code.
Allora sto utilizzzando JAVA+JMS su Jboss.
Ho un problema per la gestione del cluster
Il mio codice
.......
Properties properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
properties.put(Context.URL_PKG_PREFIXES, "org.jnp.interfaces");
properties.put(Context.PROVIDER_URL, "10.173.172.176:1100,10.173.172.176:1200");
// properties.put(Context.SECURITY_AUTHENTICATION, "no");
//properties.put(Context., "no");
ctx = new InitialContext(properties);
//Queue Initializzation
cf = (QueueConnectionFactory)ctx.lookup("ConnectionFactory");
destination = (Queue)ctx.lookup("queue/order");
connection = cf.createQueueConnection();
session = connection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
sender = session.createSender(destination);
.......
Per la gestionde del cluster mi hanno consigliato questa cosa per jboss
RMIAdaptor server = (RMIAdaptor) ctx.lookup("jmx/rmi/RMIAdaptor");
ObjectName hajndi = new ObjectName(jboss:service=HAJNDI,*);
Integer port = (Integer)server.getAttribute(hajndi,"Port");
String host =
(String)server.getAttribute(hajndi,"BindAddress");
// lookup alla queue connection factory....
String url =
"jnp://".concat(host).concat(":").concat(String.valueOf(port)).concat("/") ;
log.debug("url: "+url) ;
/* eseguo il lookup alla coda componendo l'url */
Queue queue = (Queue) ctx.lookup(url.concat(queueName));
/* eseguo il lookup alla QueueConnectionFactory componente
l'url */
QueueConnectionFactory factory = (QueueConnectionFactory)
ctx.lookup(url+"XAConnectionFactory");
String user = ConfMgr.getInstance().getJaasUser() ;
String pwd = ConfMgr.getInstance().getJaasPwd() ;
log.debug("utente: "+user) ;
log.debug("pwd : "+pwd) ;
if (user!=null && !user.equals("") && pwd!=null &&
!pwd.equals("") ){
connection = factory.createQueueConnection(user,pwd);
}else{
connection = factory.createQueueConnection();
}
// creo la sessione
session = connection.createQueueSession(false,
Session.AUTO_ACKNOWLEDGE);
sender = session.createSender(queue);
// invio del messaggio!
ObjectMessage message = session.createObjectMessage();
message.setObject(obj);
sender.send(message);
log.debug("queueName = "+queueName) ;
Non riesco a capire come gestire il CONTEXT e poi fare la connessione
Grazie
L'obbiettivo che devo raggiungere è il seguente
Dovrei fare un applicazione standalone in java che utilizzi le code.
Allora sto utilizzzando JAVA+JMS su Jboss.
Ho un problema per la gestione del cluster
Il mio codice
.......
Properties properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
properties.put(Context.URL_PKG_PREFIXES, "org.jnp.interfaces");
properties.put(Context.PROVIDER_URL, "10.173.172.176:1100,10.173.172.176:1200");
// properties.put(Context.SECURITY_AUTHENTICATION, "no");
//properties.put(Context., "no");
ctx = new InitialContext(properties);
//Queue Initializzation
cf = (QueueConnectionFactory)ctx.lookup("ConnectionFactory");
destination = (Queue)ctx.lookup("queue/order");
connection = cf.createQueueConnection();
session = connection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
sender = session.createSender(destination);
.......
Per la gestionde del cluster mi hanno consigliato questa cosa per jboss
RMIAdaptor server = (RMIAdaptor) ctx.lookup("jmx/rmi/RMIAdaptor");
ObjectName hajndi = new ObjectName(jboss:service=HAJNDI,*);
Integer port = (Integer)server.getAttribute(hajndi,"Port");
String host =
(String)server.getAttribute(hajndi,"BindAddress");
// lookup alla queue connection factory....
String url =
"jnp://".concat(host).concat(":").concat(String.valueOf(port)).concat("/") ;
log.debug("url: "+url) ;
/* eseguo il lookup alla coda componendo l'url */
Queue queue = (Queue) ctx.lookup(url.concat(queueName));
/* eseguo il lookup alla QueueConnectionFactory componente
l'url */
QueueConnectionFactory factory = (QueueConnectionFactory)
ctx.lookup(url+"XAConnectionFactory");
String user = ConfMgr.getInstance().getJaasUser() ;
String pwd = ConfMgr.getInstance().getJaasPwd() ;
log.debug("utente: "+user) ;
log.debug("pwd : "+pwd) ;
if (user!=null && !user.equals("") && pwd!=null &&
!pwd.equals("") ){
connection = factory.createQueueConnection(user,pwd);
}else{
connection = factory.createQueueConnection();
}
// creo la sessione
session = connection.createQueueSession(false,
Session.AUTO_ACKNOWLEDGE);
sender = session.createSender(queue);
// invio del messaggio!
ObjectMessage message = session.createObjectMessage();
message.setObject(obj);
sender.send(message);
log.debug("queueName = "+queueName) ;
Non riesco a capire come gestire il CONTEXT e poi fare la connessione
Grazie