2 Copyright (c) 2001-2007 Sun Microsystems, Inc. All rights reserved.
4 * The Sun Project JXTA(TM) Software License
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are met:
9 * 1. Redistributions of source code must retain the above copyright notice,
10 * this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright notice,
13 * this list of conditions and the following disclaimer in the documentation
14 * and/or other materials provided with the distribution.
16 * 3. The end-user documentation included with the redistribution, if any, must
17 * include the following acknowledgment: "This product includes software
18 * developed by Sun Microsystems, Inc. for JXTA(TM) technology."
19 * Alternately, this acknowledgment may appear in the software itself, if
20 * and wherever such third-party acknowledgments normally appear.
22 * 4. The names "Sun", "Sun Microsystems, Inc.", "JXTA" and "Project JXTA" must
23 * not be used to endorse or promote products derived from this software
24 * without prior written permission. For written permission, please contact
25 * Project JXTA at http://www.jxta.org.
27 * 5. Products derived from this software may not be called "JXTA", nor may
28 * "JXTA" appear in their name, without prior written permission of Sun.
30 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
31 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
32 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SUN
33 * MICROSYSTEMS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
34 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
35 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
36 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
37 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
38 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
39 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
41 * JXTA is a registered trademark of Sun Microsystems, Inc. in the United
42 * States and other countries.
44 * Please see the license information page at :
45 * <http://www.jxta.org/project/www/license.html> for instructions on use of
46 * the license in source files.
48 * ====================================================================
50 * This software consists of voluntary contributions made by many individuals
51 * on behalf of Project JXTA. For more information on Project JXTA, please see
52 * http://www.jxta.org.
54 * This license is based on the BSD license adopted by the Apache Foundation.
56 package net.jxta.impl.peergroup;
59 import net.jxta.peergroup.PeerGroup;
60 import net.jxta.platform.NetworkManager;
61 import net.jxta.platform.NetworkConfigurator;
63 import java.util.logging.Logger;
66 import java.text.MessageFormat;
67 import java.util.Collections;
71 * A default "main" for starting JXTA.
73 * @deprecated This code is in no-way dependent upon the implementation and
74 * should not have been located here. Developers are encouraged to copy this
75 * source to their own projects. Consider using alternative JXTA "main"
76 * See NetworkManager tutorial </a>.
84 * @param args command line arguments
86 public static void main(String args[]) {
87 // Name the main thread. For unknown reasons it usually has a boring name like "thread1"
88 Thread.currentThread().setName(Boot.class.getName() + ".main()");
92 // Get the optional location of the directory we should use for cache.
93 String jxta_home = System.getProperty("JXTA_HOME");
97 if (null != jxta_home) {
98 // Use the location from the older JXTA_HOME system property.
100 instanceName = "BootCustom";
101 home = new File(jxta_home);
103 // Use the location defined by the newer role convention.
104 server = args.length > 0 && ("-server".equalsIgnoreCase(args[0]));
107 instanceName = "BootServer";
109 instanceName = "BootEdge";
112 home = new File(new File(".cache"), instanceName);
115 // If the home directory doesn't exist, create it.
116 if (!home.exists()) {
120 NetworkManager manager;
123 manager = new NetworkManager(NetworkManager.ConfigMode.SUPER, instanceName, home.toURI());
126 NetworkConfigurator config = manager.getConfigurator();
129 config.setHttpEnabled(false);
131 config.setRelaySeedURIs(Collections.<String>emptyList());
132 config.setRendezvousSeedURIs(Collections.<String>emptyList());
135 manager = new NetworkManager(NetworkManager.ConfigMode.EDGE, instanceName, home.toURI());
137 // register a <ctrl-c> hook
138 // manager.registerShutdownHook();
140 System.out.println(MessageFormat.format("Starting the JXTA platform in mode : {0}", manager.getMode()));
141 long startTime = System.currentTimeMillis();
143 manager.startNetwork();
145 MessageFormat.format("Boot started in {0} millis, in mode : {1}", System.currentTimeMillis() - startTime
149 PeerGroup netPeerGroup = manager.getNetPeerGroup();
151 netPeerGroup.startApp(null);
153 System.out.println(MessageFormat.format("Boot started in mode : {0}", manager.getMode()));
155 // Put this thread permanently to sleep so that JXTA keeps running.
156 Thread.sleep(Long.MAX_VALUE);
158 } catch (Throwable e) {
160 // make sure output buffering doesn't wreck console display.
161 System.err.println("Uncaught Throwable caught by 'main':");
162 e.printStackTrace(System.err);