123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541 |
- import java.io.*;
- import java.sql.*;
- import java.util.*;
- import java.awt.*;
- import java.rmi.*;
- import informix.jvp.*;
- import java.rmi.*;
- import java.rmi.registry.*;
- public class Logger extends java.applet.Applet
- {
- static String message = "";
- static ServiceDirectory sdi = null;
- int a;
- static JVPServiceQueue queue = null;
- static String hostname = "crow";
- // static String port = "1099:";
- static String port = null;
- static String service = "Logger";
- static String servername = "been";
- static String servName = null;
- static void processArgs(String argv[])
- {
- int curArg = 0;
- while (curArg < argv.length)
- {
- if (argv[curArg].charAt(0) == '-')
- {
- switch (argv[curArg].charAt(1))
- {
- case 'h': // -hostname
- curArg++;
- hostname = argv[curArg];
- break;
- case 'p': // -port
- curArg++;
- port = argv[curArg];
- break;
- case 's': // -servername
- curArg++;
- servername = argv[curArg];
- break;
- default:
- System.err.println("Bad parameter: " + argv[curArg]);
- break;
- }
- curArg++;
- }
- else
- {
- service = argv[curArg];
- }
- }
- }
- //public void init()
- public static void main(String argv[])
- {
- String message = null;
- Registry registry = null;
- Integer index = null;
- int retry;
- processArgs(argv);
- try
- {
- registry = LocateRegistry.getRegistry(hostname);
- }
- catch (Exception e)
- {
-
- System.out.println("Could not locate registry for " + hostname);
- System.out.println("reason: " + e.getMessage());
- return;
- }
- System.out.println("Got registry for " + hostname);
- String reglist[] = null;
- try
- {
- reglist = registry.list();
- }
- catch (RemoteException re)
- {
- re.printStackTrace();
- }
- if (reglist.length == 0)
- {
- System.out.println("Nothing to connect to");
- }
- else
- System.out.println("reglist length is " + reglist.length);
- for (retry = 0; retry < 10 && sdi == null; retry++)
- {
- try
- {
- sdi = getServiceDirectory(registry);
- }
- catch (Exception e)
- {
- System.out.println(e.getMessage());
- break;
- }
- }
- if (sdi == null)
- {
- System.out.println("sdi is null");
- return;
- }
- printTraceInfo();
- try
- {
- Integer tid;
- Vector victor = sdi.getSolanoThreadIds();
- for (int v = 0; victor != null && v < victor.size(); v++)
- {
- tid = (Integer) victor.elementAt(v);
- System.out.println(" thread id is " + tid);
- }
- }
- catch (Exception e)
- {
- System.out.println("Screen exception: "
- + e.getMessage());
- e.printStackTrace();
- }
- try
- {
- SolanoStatus s;
- Vector victor = sdi.listSolanoThreads();
- for (int v = 0; victor != null && v < victor.size(); v++)
- {
- boolean res;
- s = (SolanoStatus) victor.elementAt(v);
- if (s == null)
- {
- System.out.println("Thread info is null");
- continue;
- }
- System.out.println("Sol: id: " + s.getThreadId()
- + " isAlive: " + s.getThreadIsAlive()
- + " IsDaemon: " + s.getThreadIsDaemon());
- System.out.println("Sol: getName: " + s.getThreadGetName());
- System.out.println("Sol: ToString: " + s.getThreadToString());
- //res = getYesNo();
- res = true;
- if (res)
- {
- // kill the MT session and Connection
- //res = sdi.killSolanoConnection(s.getThreadId());
- int id = s.getThreadId();
- System.out.println(" thread id is " + id);
- res = sdi.askSolanoThreadToDie(id);
- System.out.println(" Ask returned " + res);
- if (!res)
- {
- System.out.println("Asking didn't work:"
- + " Kill Solano Connection");
- // kill the MT session and Connection
- res = sdi.killSolanoConnection(s.getThreadId());
- if (res)
- System.out.println("Closed connection OK");
- else
- System.out.println("FAILED to Closed connection");
- }
- else
- {
- System.out.println("Ask Solano to die");
- if (res)
- System.out.println("Closed connection OK");
- else
- System.out.println("FAILED to Closed connection");
- }
- // kill the thread
- System.out.println(" Kill Solano Thread");
- //sdi.killSolanoThread(id);
- }
- }
- }
- catch (Exception e)
- {
- System.out.println("Screen listSolanoThreads exception: "
- + e.getMessage());
- e.printStackTrace();
- }
- service = getServiceName(sdi);
- retry = 0;
- while (queue == null && sdi != null)
- {
- retry++;
- if (retry > 10)
- break;
- try
- {
- queue = getQueue(registry, service);
- }
- catch (Exception e)
- {
- System.out.println("Couldn't get queue: " + service);
- try
- {
- sdi = getServiceDirectory(registry);
- }
- catch (Exception ee)
- {
- System.out.println(ee.getMessage());
- break;
- }
- }
- }
- if (queue == null || sdi == null)
- {
- System.out.println("Cannot find a ServiceDirectory or Queue");
- return;
- }
- try
- {
- for ( ; (message = (String) queue.getNext()) != null; )
- {
- System.out.println(message);
- }
-
- }
- catch (Exception e)
- {
- System.out.println("Screen getNext exception: "
- + e.getMessage());
- e.printStackTrace();
- }
- /*
- * unregister ourselves with the all powerful ServiceDirectory
- */
- try
- {
- sdi.unregister(service, queue);
- }
- catch (Exception e)
- {
- System.out.println("Screen unregister exception: "
- + e.getMessage());
- e.printStackTrace();
- }
- }
- public static String getServiceNameByIndex(String numStr,
- String [] reglist)
- {
- int index = -1;
- String name = null, in = null;
- byte ba [] = new byte [20];
- while ( index < 0 )
- {
- System.out.println("Which do you wish? [" + numStr + "]");
- try
- {
- System.in.read(ba);
- in = new String(ba);
- }
- catch (Exception e) { }
- in = in.trim();
- try
- {
- index = (int) new Integer(in).intValue();
- }
- catch (Exception e)
- {
- System.out.println("Invalid index number: "
- + e.getMessage());
- e.printStackTrace();
- index = -1;
- continue;
- }
- try
- {
- index = (int) new Integer(in).intValue();
- if (index < 1 || index > reglist.length)
- {
- if (reglist.length == 1)
- System.out.println("Index can only be 1");
- else
- System.out.println("Index must be between 1 and "
- + (reglist.length + 1));
- index = -1;
- continue;
- }
- }
- catch (Exception e)
- {
- System.out.println("Invalid index number: "
- + e.getMessage());
- index = -1;
- continue;
- }
- try
- {
- name = reglist[index - 1];
- break;
- }
- catch (Exception e)
- {
- System.out.println("bad name reference: " + e.getMessage());
- }
- }
- return name;
- }
- public static boolean getYesNo()
- {
- boolean ok = false, res = false;
- String name = null, in = null;
- byte ba [] = new byte [20];
- while (!ok)
- {
- System.out.println("Do you wish to close this connection? [yn]");
- try
- {
- System.in.read(ba);
- in = new String(ba);
- }
- catch (Exception e) { }
- in = in.trim();
- if (in.charAt(0) == 'n')
- {
- res = false;
- ok = true;
- }
- else if (in.charAt(0) == 'y')
- {
- res = true;
- ok = true;
- }
- else
- System.out.println("Wrong answer, y or n?");
- }
- return res;
- }
- public static String getRegistryList(Registry registry)
- {
- String servName = null;
- try
- {
- String reglist [] = registry.list();
- String num = "";
- if (reglist.length == 0)
- {
-
- System.out.println("Nothing to connect to");
- return null;
- }
- for (int i = 0; i < reglist.length; i++)
- {
- if (num != "")
- num = num + ", ";
- num = num + (i+1);
- System.out.println((i+1) + " Entry " + reglist[i]);
- }
- servName = getServiceNameByIndex(num, reglist);
- return servName;
- }
- catch (Exception e)
- {
- System.out.println("getRegistry failed : " + e.getMessage());
- e.printStackTrace();
- return null;
- }
- }
- public static ServiceDirectory
- lookupService(Registry reg, String servName)
- {
- ServiceDirectory sdi = null;
- try
- {
- System.out.println("looking for: " + servName);
- sdi = (ServiceDirectory) reg.lookup(servName);
- }
- catch (Exception e)
- {
- System.out.println("Screen lookup exception: "
- + e.getMessage());
- //e.printStackTrace();
- }
- return sdi;
- }
- public static String getServiceName(ServiceDirectory sdi)
- {
- String service = null;
- String num = "";
- try
- {
- String [] slist = sdi.getJVPServiceList();
- for (int j=0; j < slist.length; j++)
- {
- System.out.println((j+1) + ") service " + slist[j]);
- if (num != "")
- num = num + ", ";
- num = num + (j+1);
- }
- service = getServiceNameByIndex(num, slist);
- }
- catch (Exception e)
- {
- System.out.println("Screen getJVPServiceList exception: "
- + e.getMessage());
- e.printStackTrace();
- }
- return service;
- }
- /**
- * Given a service name, e.g. Logger, Tracer, get its queue from
- * which to read messages
- *
- * If we get a java.net.ConnectException, there is no ServiceDirectory
- * for this possibly shut down JVP, unbind it and try from the start
- * again.
- */
- public static JVPServiceQueue getQueue(Registry reg, String service)
- throws Exception
- {
- JVPServiceQueue queue = null;
- if (service == null)
- {
- System.out.println("no service to get queue for");
- return null;
- }
- try
- {
- queue = sdi.register(service);
- }
- catch (Exception e)
- {
- System.out.println("Screen register exception: "
- + e.getMessage());
- throw e;
- }
- if (queue == null)
- {
- System.out.println("queue is null");
- return null;
- }
- return queue;
- }
- public static ServiceDirectory getServiceDirectory(Registry reg)
- throws Exception
- {
- if (servName != null)
- {
- System.out.println("1: Unbinding dead ServiceDirectory: "
- + servName);
- reg.unbind(servName);
- }
- servName = getRegistryList(reg);
- if (servName == null)
- throw new Exception("Cannot find any ServiceDirectory");
- System.out.println("lookup Service for " + servName);
- sdi = lookupService(reg, servName);
- try
- {
- System.out.println("test Service");
- // test to see if it is really there
- String zones = sdi.traceGetZoneTable();
- }
- catch (ConnectException ce)
- {
- System.out.println("2: Unbinding dead ServiceDirectory: "
- + servName);
- reg.unbind(servName);
- return null;
- }
- return sdi;
- }
- public static void printTraceInfo()
- {
- try
- {
- String zones = sdi.traceGetZoneTable();
- System.out.println("trace zones is " + zones);
- int tracelevel = sdi.traceLevel("JVP");
- System.out.println("trace level is " + tracelevel);
- }
- catch (Exception e)
- {
- System.out.println("Screen traceGetZoneTable/traceLevel: "
- + e.getMessage());
- }
- }
- }
|