3 import org.opensrf.util.*;
4 import org.opensrf.net.xmpp.*;
5 import java.util.Random;
7 import java.net.InetAddress;
13 * Connects to the OpenSRF network so that client sessions may communicate.
14 * @param configFile The OpenSRF config file
15 * @param configContext Where in the XML document the config chunk lives. This
16 * allows an OpenSRF client config chunk to live in XML files where other config
19 public static void bootstrapClient(String configFile, String configContext)
20 throws ConfigException, SessionException {
22 if(Logger.instance() == null) /* provide a sane default logger */
23 Logger.init(Logger.WARN, new Logger());
25 /** see if the current thread already has a connection */
26 XMPPSession existing = XMPPSession.getThreadSession();
27 if(existing != null && existing.connected())
30 /** create the config parser */
31 Config config = new Config(configContext);
32 config.parse(configFile);
33 Config.setConfig(config); /* set this as the global config */
35 /** Collect the network connection info from the config */
36 String username = config.getString("/username");
37 String passwd = config.getString("/passwd");
38 String host = (String) config.getFirst("/domains/domain");
39 int port = config.getInt("/port");
42 /** Create a random login resource string */
45 res += InetAddress.getLocalHost().getHostAddress();
46 } catch(java.net.UnknownHostException e) {}
47 res += "_"+Math.abs(new Random(new Date().getTime()).nextInt())
48 + "_t"+ Thread.currentThread().getId();
53 /** Connect to the Jabber network */
54 Logger.info("attempting to create XMPP session "+username+"@"+host+"/"+res);
55 XMPPSession xses = new XMPPSession(host, port);
56 xses.connect(username, passwd, res);
57 XMPPSession.setThreadSession(xses);
59 } catch(XMPPException e) {
60 throw new SessionException("Unable to bootstrap client", e);
65 * Shuts down the connection to the opensrf network
67 public static void shutdown() {
68 XMPPSession.getThreadSession().disconnect();