34
34
*
35
35
*/
36
36
public class ServerApp {
37
-
37
+
38
38
private final OneAgentSDK oneAgentSdk ;
39
39
private final Logger logger = Logger .getLogger ("ServerApp" );
40
40
@@ -50,29 +50,34 @@ private ServerApp() {
50
50
"SDK is PERMANENT_INACTIVE; Probably no OneAgent injected or OneAgent is incompatible with SDK." );
51
51
break ;
52
52
case TEMPORARILY_INACTIVE :
53
- System .err .println ("SDK is TEMPORARY_INACTIVE; OneAgent has been deactivated - check OneAgent configuration." );
53
+ System .err .println (
54
+ "SDK is TEMPORARY_INACTIVE; OneAgent has been deactivated - check OneAgent configuration." );
54
55
break ;
55
56
default :
56
57
System .err .println ("SDK is in unknown state." );
57
58
break ;
58
59
}
59
60
}
60
-
61
+
61
62
public static void main (String args []) {
62
63
System .out .println ("*************************************************************" );
63
64
System .out .println ("** Running remote call server **" );
64
65
System .out .println ("*************************************************************" );
65
66
int port = 33744 ; // default port
67
+ boolean endlessmode = false ;
66
68
for (String arg : args ) {
67
69
if (arg .startsWith ("port=" )) {
68
70
port = Integer .parseInt (arg .substring ("port=" .length ()));
71
+ } else if (arg .startsWith ("endlessmode" )) {
72
+ endlessmode = true ;
69
73
} else {
70
74
System .err .println ("unknown argument: " + arg );
71
75
}
72
76
}
73
77
try {
74
- new ServerApp ().run (port );
75
- System .out .println ("remote call server stopped. sleeping a while, so OneAgent is able to send data to server ..." );
78
+ new ServerApp ().run (port , endlessmode );
79
+ System .out .println (
80
+ "remote call server stopped. sleeping a while, so OneAgent is able to send data to server ..." );
76
81
Thread .sleep (15000 ); // we have to wait - so OneAgent is able to send data to server.
77
82
} catch (Exception e ) {
78
83
System .err .println ("remote call server failed: " + e .getMessage ());
@@ -81,39 +86,42 @@ public static void main(String args[]) {
81
86
}
82
87
}
83
88
84
- private void run (int port ) throws IOException , ClassNotFoundException {
89
+ private void run (int port , boolean endlessmode ) throws IOException , ClassNotFoundException {
85
90
ServerSocket serverSocket = new ServerSocket (port );
86
91
try {
87
- System .out .println ("Waiting for clients on port " + serverSocket .getInetAddress ().getHostName () + ":"
88
- + serverSocket .getLocalPort ());
89
- Socket client = serverSocket .accept ();
90
- try {
91
- System .out .println (
92
- "Client " + client .getInetAddress ().getHostName () + ":" + client .getPort () + " connected" );
93
- ObjectInputStream in = new ObjectInputStream (client .getInputStream ());
94
-
95
- Object receivedTag = in .readObject ();
96
- String receivedMessage = (String ) in .readObject ();
97
- System .out .println ("received tag: " + receivedTag .toString ());
98
- traceCallFromClient (receivedTag , receivedMessage );
99
- } finally {
100
- client .close ();
101
- }
92
+ do {
93
+ System .out .println ("Waiting for clients on port " + serverSocket .getInetAddress ().getHostName () + ":"
94
+ + serverSocket .getLocalPort ());
95
+ Socket client = serverSocket .accept ();
96
+ try {
97
+ System .out .println (
98
+ "Client " + client .getInetAddress ().getHostName () + ":" + client .getPort () + " connected" );
99
+ ObjectInputStream in = new ObjectInputStream (client .getInputStream ());
100
+
101
+ Object receivedTag = in .readObject ();
102
+ String receivedMessage = (String ) in .readObject ();
103
+ System .out .println ("received tag: " + receivedTag .toString ());
104
+ traceCallFromClient (receivedTag , receivedMessage );
105
+ } finally {
106
+ client .close ();
107
+ }
108
+ } while (endlessmode );
102
109
} finally {
103
110
serverSocket .close ();
104
111
}
105
112
}
106
-
113
+
107
114
private void traceCallFromClient (Object receivedTag , String receivedMessage ) {
108
- IncomingRemoteCallTracer incomingRemoteCall = oneAgentSdk .traceIncomingRemoteCall ("myMethod" , "myService" , "endpoint" );
115
+ IncomingRemoteCallTracer incomingRemoteCall = oneAgentSdk .traceIncomingRemoteCall ("myMethod" , "myService" ,
116
+ "endpoint" );
109
117
if (receivedTag instanceof String ) {
110
118
incomingRemoteCall .setDynatraceStringTag ((String ) receivedTag );
111
119
} else if (receivedTag instanceof byte []) {
112
120
incomingRemoteCall .setDynatraceByteTag ((byte []) receivedTag );
113
121
} else {
114
122
System .err .println ("invalid tag received: " + receivedTag .getClass ().toString ());
115
123
}
116
-
124
+
117
125
incomingRemoteCall .start ();
118
126
try {
119
127
handleCallFromClient (receivedMessage );
@@ -123,12 +131,12 @@ private void traceCallFromClient(Object receivedTag, String receivedMessage) {
123
131
} finally {
124
132
incomingRemoteCall .end ();
125
133
}
126
-
134
+
127
135
}
128
136
129
137
private void handleCallFromClient (String receivedMessage ) {
130
138
// do whatever the server should do ...
131
139
System .out .println ("Received message from client: " + receivedMessage );
132
140
}
133
-
141
+
134
142
}
0 commit comments