PDA

Visualizza la versione completa : [Java] JBoss 3.2.5 e topic remoti


Angelo1974
14-01-2005, 10:11
Ciao a tutti; sono diversi giorni (e secondo me ormai troppi:-) ) che sto combattendo con i topic remoti di JBoss... allora la situazione è questa: ho un pc che funge da provider JMS remoto e uno o più client che cercano di collegarsi..ebbene concentriamoci su questo hardware:
1)Windows XP home edition SP 2
2)HP proliant con red-hat advanced server 7.3

Ora:
Se il mio portatile funge da server e cioè da provider
JMS e il proliant cerca di collegarsi tutto va alla
grande;
se, invece, è il contrario (come dovrà essere in
produzione) non riuscivo a stabilire la connessione;
dopo aver sbattuto la testa e addirittura aver fatto il
download della classe DLQHandler ed averla modificata
per farmi stampare nel log l'eccezione che avveniva ho
dovuto modificare il file hosts presente in /etc così
errori non ne avevo più, ma JBoss non parte +; infatti
si stabilisce la connessione, si cerca di agganciarsi
al topic ma basta rimane appeso; nel log trovo:


2005-01-14 09:57:25,155,TRACE,[main],[org.jboss.ejb.plugins.jms.JMSContainerInvoker],Constructing
2005-01-14 09:57:25,195,DEBUG,[main],[org.jboss.ejb.plugins.jms.JMSContainerInvoker],Creating jboss.j2ee:binding=InvokerMdb,jndiName=local/RemoteMDB,plugin=invoker,service=EJB
2005-01-14 09:57:25,195,DEBUG,[main],[org.jboss.ejb.plugins.jms.JMSContainerInvoker],Created jboss.j2ee:binding=InvokerMdb,jndiName=local/RemoteMDB,plugin=invoker,service=EJB
2005-01-14 09:57:25,285,DEBUG,[main],[org.jboss.ejb.plugins.jms.JMSContainerInvoker],Starting jboss.j2ee:binding=InvokerMdb,jndiName=local/RemoteMDB,plugin=invoker,service=EJB
2005-01-14 09:57:25,285,DEBUG,[main],[org.jboss.ejb.plugins.jms.JMSContainerInvoker],Initializing
2005-01-14 09:57:25,285,DEBUG,[main],[org.jboss.ejb.plugins.jms.JMSContainerInvoker],Looking up provider adapter: java:/RemoteJMSProvider
2005-01-14 09:57:25,285,DEBUG,[main],[org.jboss.ejb.plugins.jms.JMSContainerInvoker],Provider adapter: org.jboss.jms.jndi.JNDIProviderAdapter@a39de
2005-01-14 09:57:25,285,TRACE,[main],[org.jboss.ejb.plugins.jms.DLQHandler],Constructing
2005-01-14 09:57:25,285,DEBUG,[main],[org.jboss.ejb.plugins.jms.DLQHandler],Creating DLQHandler

Arrivato a Creating DLQHandler basta si ferma; eppure se provo questo semplice client di prova:


package pub;

import javax.jms.TopicConnectionFactory;
import javax.jms.TopicSession;
import javax.jms.Topic;
import javax.naming.InitialContext;
import javax.naming.Context;
import javax.jms.TopicConnection;
import javax.jms.ObjectMessage;
import javax.naming.NamingException;
import javax.jms.JMSException;
import javax.jms.TopicPublisher;

import java.util.Hashtable;
import java.io.Serializable;

public class Publisher {

private static final String MODULE = Publisher.class.getName();
//private static final Logger log = Logger.getLogger(MODULE);
public Publisher() {
}

public void createAndSendMsg(String ibName) {

try {
Serializable obj = new Msg("Angelo Immediata");
Context cont = getContext();
System.out.println( "Cerco connection factory" );
//TopicConnectionFactory factory = (TopicConnectionFactory) (cont.lookup("java:comp/env/jms/ConnectionFactory"));

TopicConnectionFactory factory = (TopicConnectionFactory) (cont.lookup("java:ConnectionFactory"));
System.out.println( "Ok" );
Topic coda = (Topic) cont.lookup("topic/angeloRemoteTopic");
//System.out.println( "Ok anche la topic" );
//System.out.println( "Cerco l'altra coda" );
cont.lookup( "topic/it.eng.nikko.ibTopic" );
//System.out.println( "Ok per l'altra coda" );
TopicConnection connessione = factory.createTopicConnection();
TopicSession sessione = connessione.createTopicSession(true,
TopicSession.AUTO_ACKNOWLEDGE);
TopicPublisher sender = sessione.createPublisher(coda);
ObjectMessage msg = sessione.createObjectMessage();
msg.setObject(obj);
sender.publish(coda, msg);
sessione.commit();
sessione.close();
connessione.close();
} catch (NamingException ex) {

ex.printStackTrace();
} catch (JMSException ex) {

ex.printStackTrace();
}
}

private InitialContext getContext() throws NamingException {

Hashtable props = new Hashtable();
props.put(InitialContext.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
props.put(InitialContext.PROVIDER_URL, "jnp://192.168.11.224:1099");

return new InitialContext(props);
}
}

dal mio pc tutto funziona correttamente.
Qualcuno sa come mai?

Angelo1974
15-01-2005, 10:28
Ciao; ho risolto... grazie a tutti; ora non ho modo ma semmai posterò una pillola (mi sembra che così si chiamino i consigli che si danno) su come configurare JBoss per collegare degli MDB so code remote e su come creare 2 istanze di JBoss sulla stessa macchina.
Ciao a tutti

gas869
17-01-2005, 15:06
Ciao..
Da quel che ho capito hai abb esperienza di connessioni xke volevo chiederti un paio di cose tipo se è possibile connettersi ad internet tramite java direttamente in un indirizzo url..
grazie..ciao

Angelo1974
17-01-2005, 17:46
Originariamente inviato da gas869
Da quel che ho capito hai abb esperienza di connessioni


Abbastanza anche se non è mai troppo :D



Originariamente inviato da gas869
è possibile connettersi ad internet tramite java direttamente in un indirizzo url..


Non so se ho afferrato bene la domanda ma se vuoi sapere se tramite Java puoi connetterti ad una URL puoi tranquillamente farlo con la classe java.net.HttpURLConnection

gas869
01-02-2005, 09:55
scusa il ritardo... cmq si volevo sapere questo e se hai una bozza del codice da mandarmi..cmq posso entrare direttamente dentro un url? grazie ciao Gas

Angelo1974
01-02-2005, 10:08
Ciao; ti invio una mia classe che ho utilizzato per leggere un file xml da un URL; spero ti sia utile; ciao.


import java.util.Map;
import java.net.URL;
import java.io.Serializable;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.io.IOException;
import java.util.Iterator;

public class ReadStream implements Serializable {

//http://192.168.xx.yyy:8080/SiteAdmin/xmlStructure
public String pmInterrogation() {
StringBuffer sf = new StringBuffer(getConnectionString());
try {

return readStream(((HttpURLConnection) (getUrl(sf.toString()).
openConnection())));
} catch (IOException ex) {

throw new IllegalArgumentException("Error while reading: " +
ex.getMessage());
}
}

private URL getUrl(String url) throws MalformedURLException {

return new URL(url);
}

private String getConnectionString() {

StringBuffer sf = new StringBuffer(
"http://192.168.xx.yyy:8080/SiteAdmin/xmlStructure");
return sf.toString();
}

private String readStream(HttpURLConnection theConn) throws IOException {

theConn.connect();
int read = -1;
StringBuffer sb = new StringBuffer();
while ((read = theConn.getInputStream().read()) != -1) {
sb.append(((char) (read)));
}
theConn.disconnect();
return sb.toString();
}

public static void main(String[] main) {

try {
Map m = (new Parser()).getElements(ReadXMLString.getInstance((n ew
ReadStream()).pmInterrogation()).getJDomDocument() ,
"FWD-001-005-001");
for( Iterator i = m.keySet().iterator(); i.hasNext(); ){

System.out.println( m.get( i.next() ) );
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}

gas869
12-03-2005, 08:18
Ok grazie ma vorrei chiederti un altra cosa...
Dovrei connettermi dentro l URL del sito della vodafone...
Secondo te è possibile??
Grazie Gas

Loading