package org.jacorb.util;
import java.io.ByteArrayOutputStream;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Locale;
import java.util.Properties;
import org.jacorb.orb.ORBSingleton;
import org.jacorb.orb.iiop.IIOPAddress;
import org.omg.CORBA.ORB;
/**
* JacORB Diagnostic class. This will print to System.out the following information:
* <br>
* <ul>
* <li>JacORB Version</li>
* <li>Operating System</li>
* <li>OS Version</li>
* <li>OS Architecture</li>
* <li>Java Vendor</li>
* <li>Java Version</li>
* <li>Default network interface</li>
* <li>Preferred network interface</li>
* <li>Locale</li>
* <li>System File Encoding</li>
* <li>Cannonical Encoding</li>
* <li>Default WChar Encoding</li>
* </ul>
* <br>
* Remember the precedence levels of LC_ALL, LANG, LC_CTYPE etc. Preferred
* way to override for *all* categories is to set LC_ALL. If you just set LANG
* then if any other LC_* categories are set then these will take precedence.
*
*/
public class Diagnostic
{
public static void main (String args[])
{
Properties props = System.getProperties ();
Properties p = new Properties();
p.setProperty("org.omg.CORBA.ORBClass","org.jacorb.orb.ORB");
p.setProperty("org.omg.CORBA.ORBSingletonClass","org.jacorb.orb.ORBSingleton");
ORB orb = ORB.init(args, p);
Locale l = Locale.getDefault();
String defaultIOEncoding = (new OutputStreamWriter(new ByteArrayOutputStream ())).getEncoding();
System.out.println("JacORB Version: " + org.jacorb.util.Version.versionInfo);
System.out.println();
System.out.println("Operating system name: " + props.get("os.name"));
System.out.println("Operating system version: " + props.get("os.version"));
System.out.println("Operating system architecture: " + props.get("os.arch"));
System.out.println("Java Vendor: " + props.get("java.vm.vendor"));
System.out.println("Java Version: " + props.get("java.version"));
System.out.println("Runtime max memory: " + (Runtime.getRuntime().maxMemory() / 1024 / 1024) + "M");
System.out.println();
System.out.println("Found the following network addresses: ");
for (InetAddress addr : IIOPAddress.getNetworkInetAddresses())
{
System.out.println(" " + addr.toString() + " / " + addr.getHostName());
}
System.out.println("Preferred non-loopback address " + IIOPAddress.getLocalHost());
try
{
System.out.println("Preferred Java InetAddress address " + InetAddress.getLocalHost());
}
catch (UnknownHostException e)
{
e.printStackTrace();
}
System.out.println();
System.out.println("Default locale " + l + " (which is " + l.getDisplayName() + ')');
System.out.println("System file encoding property: " + System.getProperty("file.encoding"));
System.out.println("Cannonical encoding: " + defaultIOEncoding);
System.out.println("Default WChar encoding: " + ((org.jacorb.orb.ORB)orb).getTCSWDefault().getName());
System.out.println();
System.out.println ("Created ORB " + orb.getClass().getName());
// Trivial check to ensure standard startup still leads to a JacORB singleton.
try
{
if ( ! ( ORB.init() instanceof ORBSingleton))
{
System.out.println ("Default Singleton ORB is not a JacORB singleton. This is not recommended as it *could* lead to classpath/classloader/stub conflicts.");
}
}
catch (Throwable e)
{
e.printStackTrace();
}
}
}