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 /** see if the current thread already has a connection */
23 XMPPSession existing = XMPPSession.getThreadSession();
24 if(existing != null && existing.connected())
27 /** create the config parser */
28 Config config = new Config(configContext);
29 config.parse(configFile);
30 Config.setConfig(config); /* set this as the global config */
32 /** Collect the network connection info from the config */
33 String username = config.getString("/username");
34 String passwd = config.getString("/passwd");
35 String host = (String) config.getFirst("/domains/domain");
36 int port = config.getInt("/port");
39 /** Create a random login resource string */
42 res += InetAddress.getLocalHost().getHostAddress();
43 } catch(java.net.UnknownHostException e) {}
44 res += "_"+Math.abs(new Random(new Date().getTime()).nextInt())
45 + "_t"+ Thread.currentThread().getId();
50 /** Connect to the Jabber network */
51 Logger.info("attempting to create XMPP session "+username+"@"+host+"/"+res);
52 XMPPSession xses = new XMPPSession(host, port);
53 xses.connect(username, passwd, res);
54 XMPPSession.setThreadSession(xses);
56 } catch(XMPPException e) {
57 throw new SessionException("Unable to bootstrap client", e);
62 * Shuts down the connection to the opensrf network
64 public static void shutdown() {
65 XMPPSession.getThreadSession().disconnect();