1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.log4j.net;
19
20 import java.net.ServerSocket;
21 import java.net.Socket;
22
23 import org.apache.log4j.LogManager;
24 import org.apache.log4j.Logger;
25 import org.apache.log4j.PropertyConfigurator;
26 import org.apache.log4j.xml.DOMConfigurator;
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 public class SimpleSocketServer {
45
46 static Logger cat = Logger.getLogger(SimpleSocketServer.class);
47
48 static int port;
49
50 public
51 static
52 void main(String argv[]) {
53 if(argv.length == 2) {
54 init(argv[0], argv[1]);
55 } else {
56 usage("Wrong number of arguments.");
57 }
58
59 try {
60 cat.info("Listening on port " + port);
61 ServerSocket serverSocket = new ServerSocket(port);
62 while(true) {
63 cat.info("Waiting to accept a new client.");
64 Socket socket = serverSocket.accept();
65 cat.info("Connected to client at " + socket.getInetAddress());
66 cat.info("Starting new socket node.");
67 new Thread(new SocketNode(socket,
68 LogManager.getLoggerRepository()),"SimpleSocketServer-" + port).start();
69 }
70 } catch(Exception e) {
71 e.printStackTrace();
72 }
73 }
74
75
76 static void usage(String msg) {
77 System.err.println(msg);
78 System.err.println(
79 "Usage: java " +SimpleSocketServer.class.getName() + " port configFile");
80 System.exit(1);
81 }
82
83 static void init(String portStr, String configFile) {
84 try {
85 port = Integer.parseInt(portStr);
86 } catch(java.lang.NumberFormatException e) {
87 e.printStackTrace();
88 usage("Could not interpret port number ["+ portStr +"].");
89 }
90
91 if(configFile.endsWith(".xml")) {
92 DOMConfigurator.configure(configFile);
93 } else {
94 PropertyConfigurator.configure(configFile);
95 }
96 }
97 }