package test;
import java.awt.AWTException;
import java.awt.BorderLayout;
import java.awt.Image;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.image.ImageProducer;
import java.awt.image.MemoryImageSource;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Map;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JLabel;
import org.apache.commons.collections.map.CaseInsensitiveMap;
import org.rzo.yajsw.app.WrapperJVMMain;
public class HelloWorld
{
Map m = new CaseInsensitiveMap ();
static class MyWriter implements Runnable
{
public void run()
{
int i = 0;
while (i < 10)
{
System.out.println(i++);
try
{
Thread.sleep(100);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}
public static void simulateDeadlock()
{
// These are the two resource objects we'll try to get locks for
final Object resource1 = "resource1";
final Object resource2 = "resource2";
// Here's the first thread. It tries to lock resource1 then resource2
Thread t1 = new Thread() {
public void run() {
// Lock resource 1
synchronized(resource1) {
System.out.println("Thread 1: locked resource 1");
// Pause for a bit, simulating some file I/O or something.
// Basically, we just want to give the other thread a chance to
// run. Threads and deadlock are asynchronous things, but we're
// trying to force deadlock to happen here...
try { Thread.sleep(50); } catch (InterruptedException e) {}
// Now wait 'till we can get a lock on resource 2
synchronized(resource2) {
System.out.println("Thread 1: locked resource 2");
}
}
}
};
// Here's the second thread. It tries to lock resource2 then resource1
Thread t2 = new Thread() {
public void run() {
// This thread locks resource 2 right away
synchronized(resource2) {
System.out.println("Thread 2: locked resource 2");
// Then it pauses, for the same reason as the first thread does
try { Thread.sleep(50); } catch (InterruptedException e) {}
// Then it tries to lock resource1. But wait! Thread 1 locked
// resource1, and won't release it 'till it gets a lock on
// resource2. This thread holds the lock on resource2, and won't
// release it 'till it gets resource1. We're at an impasse. Neither
// thread can run, and the program freezes up.
synchronized(resource1) {
System.out.println("Thread 2: locked resource 1");
}
}
}
};
// Start the two threads. If all goes as planned, deadlock will occur,
// and the program will never exit.
t1.start();
t2.start();
}
// test for application main.
public static void main(final String[] args) throws Exception
{
if (args.length >= 1 && "crash".equals(args[0]))
{
Thread.sleep(5000);
Runtime.getRuntime().halt(99);
}
if (args.length >= 1 && "outofmem".equals(args[0]))
{
Thread.sleep(5000);
throw new OutOfMemoryError();
}
if (args.length >= 1 && "appready".equals(args[0]))
{
Thread.sleep(5000);
System.out.println("calling report service startup");
if (WrapperJVMMain.WRAPPER_MANAGER != null)
WrapperJVMMain.WRAPPER_MANAGER.reportServiceStartup();
else
System.out.println("missing wrapper manager");
}
System.out.println("myenv "+System.getProperty("myenv"));
if (WrapperJVMMain.WRAPPER_MANAGER != null)
System.out.println("wrapper property: "+WrapperJVMMain.WRAPPER_MANAGER.getProperties().getProperty("wrapper.debug"));
/*
* try { Process p = Runtime.getRuntime().exec("../set.bat");
* BufferedReader in1 = new BufferedReader(new
* InputStreamReader(p.getInputStream())); String line; while ((line =
* in1.readLine()) != null) System.out.println(line); } catch (Exception
* ex) { ex.printStackTrace(); } DocumentBuilderFactory factory =
* DocumentBuilderFactory.newInstance();
* System.out.println(factory.getClass());
*/
// try
// {
// Configuration config = new BaseConfiguration();
// }
// catch (Throwable ex)
// {
// System.out.println("all ok we cannot access commons configuration");
// ex.printStackTrace();
// }
System.out.println("args:");
for (int i = 0; i < args.length; i++)
System.out.println(args[i]);
final Vector v = new Vector();
new File("test.txt").delete();
final FileWriter fw = new FileWriter("test.txt");
final BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
new Thread(new Runnable()
{
public void run()
{
try
{
int i = 0;
byte[] buf = new byte[256];
while (true)
{
i++;
String line = in.readLine();
System.out.println("in > " + line);
if (line.contains("exit 0"))
{
System.out.println("exiting 0");
System.exit(0);
}
if (line.contains("exit 1"))
{
System.out.println("exiting 1");
System.exit(1);
}
if (line.contains("exit 257"))
{
System.out.println("exiting 1");
System.exit(257);
}
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
System.out.println("terminated");
}
}).start();
Runtime.getRuntime().addShutdownHook(new Thread()
{
public void run()
{
if (WrapperJVMMain.WRAPPER_MANAGER != null)
System.out.println("stop reason: "+WrapperJVMMain.WRAPPER_MANAGER.getStopReason());
if (args.length > 0 && args[0].equals("exception"))
{
System.out.println("Exception 1");
System.out.println("Exception 2");
System.out.println("Exception 3");
}
int i = 1;
// while (i>0)
// System.out.println("asdfasd");
// Runtime.getRuntime().halt(0);
System.out.println("You wanna quit, hey?");
try
{
fw.close();
if (args.length > 0 && args[0].equals("signalStopping"))
{
System.out.println("+ sleeping");
if (WrapperJVMMain.WRAPPER_MANAGER != null)
WrapperJVMMain.WRAPPER_MANAGER.signalStopping(35000);
Thread.sleep(30000);
System.out.println("- sleeping");
}
// Runtime.getRuntime().halt(0);
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
// while(true);
}
});
ArrayList list = new ArrayList();
// System.out.println(Scheduler.class.getClassLoader());
// System.out.println(Configuration.class.getClassLoader());
// System.out.flush();
int i = 0;
// org.rzo.yajsw.WrapperMain.WRAPPER_MANAGER.threadDump();
try
{
// Thread.sleep(10000);
}
catch (Exception e2)
{
// TODO Auto-generated catch block
e2.printStackTrace();
}
new Thread(new MyWriter()).start();
new Thread(new MyWriter()).start();
new Thread(new MyWriter()).start();
// System.out.println(new BufferedReader(new
// InputStreamReader(System.in)).readLine());
// for (; i < 10;)
if (args.length > 0 && "reportStartup".equals(args[0]))
if (WrapperJVMMain.WRAPPER_MANAGER != null)
WrapperJVMMain.WRAPPER_MANAGER.reportServiceStartup();
if (args.length >= 1 && "deadlock".equals(args[0]))
simulateDeadlock();
if (args.length >= 1 && "tray".equals(args[0]))
startTray();
while (true)
{
i++;
System.out.println("a" + i);
System.out.flush();
// simulate jvm crash
// while (i>3)
// list.add("asfdasffsadfdsdfsaadfsasdasf");
// if (i ==20)
// org.rzo.yajsw.app.WrapperJVMMain.WRAPPER_MANAGER.restart();
if (fw != null)
try
{
// v.add(new byte[1000]);
// fw.write("" + i + "\n");
// fw.flush();
}
catch (Throwable e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
System.exit(0);
}
if (i % 2 == 0)
try
{
// WrapperJVMMain.WRAPPER_MANAGER.stop();
Thread.sleep(500);
// System.out.println("Exception");
// System.out.flush();
// Runtime.getRuntime().halt(0);
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*
* WrapperManager.instance.restart(); try { Thread.sleep(10000); } catch
* (InterruptedException e) { // TODO Auto-generated catch block
* e.printStackTrace(); }
*/
// System.exit(0);
// System.out.println("hello world. short test");
}
private static void startTray()
{
SystemTray tray = SystemTray.getSystemTray();
int w = 80;
int[] pix = new int[w*w];
for (int i=0; i< w*w; i++ )
pix [i]=(int)(Math.random ()*255);
ImageProducer producer = new MemoryImageSource ( w,w,pix,0,w );
Image image = Toolkit.getDefaultToolkit().createImage(producer);
TrayIcon trayIcon = new TrayIcon(image);
trayIcon.setImageAutoSize(true);
startWindow();
try
{
tray.add(trayIcon);
System.out.println("installed tray");
}
catch (AWTException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void startWindow()
{
JFrame frame = new JFrame("Hellow World");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new JLabel("hellow world test"), BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
}