3434 *
3535 */
3636public class ServerApp {
37-
37+
3838 private final OneAgentSDK oneAgentSdk ;
3939 private final Logger logger = Logger .getLogger ("ServerApp" );
4040
@@ -50,29 +50,34 @@ private ServerApp() {
5050 "SDK is PERMANENT_INACTIVE; Probably no OneAgent injected or OneAgent is incompatible with SDK." );
5151 break ;
5252 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." );
5455 break ;
5556 default :
5657 System .err .println ("SDK is in unknown state." );
5758 break ;
5859 }
5960 }
60-
61+
6162 public static void main (String args []) {
6263 System .out .println ("*************************************************************" );
6364 System .out .println ("** Running remote call server **" );
6465 System .out .println ("*************************************************************" );
6566 int port = 33744 ; // default port
67+ boolean endlessmode = false ;
6668 for (String arg : args ) {
6769 if (arg .startsWith ("port=" )) {
6870 port = Integer .parseInt (arg .substring ("port=" .length ()));
71+ } else if (arg .startsWith ("endlessmode" )) {
72+ endlessmode = true ;
6973 } else {
7074 System .err .println ("unknown argument: " + arg );
7175 }
7276 }
7377 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 ..." );
7681 Thread .sleep (15000 ); // we have to wait - so OneAgent is able to send data to server.
7782 } catch (Exception e ) {
7883 System .err .println ("remote call server failed: " + e .getMessage ());
@@ -81,39 +86,42 @@ public static void main(String args[]) {
8186 }
8287 }
8388
84- private void run (int port ) throws IOException , ClassNotFoundException {
89+ private void run (int port , boolean endlessmode ) throws IOException , ClassNotFoundException {
8590 ServerSocket serverSocket = new ServerSocket (port );
8691 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 );
102109 } finally {
103110 serverSocket .close ();
104111 }
105112 }
106-
113+
107114 private void traceCallFromClient (Object receivedTag , String receivedMessage ) {
108- IncomingRemoteCallTracer incomingRemoteCall = oneAgentSdk .traceIncomingRemoteCall ("myMethod" , "myService" , "endpoint" );
115+ IncomingRemoteCallTracer incomingRemoteCall = oneAgentSdk .traceIncomingRemoteCall ("myMethod" , "myService" ,
116+ "endpoint" );
109117 if (receivedTag instanceof String ) {
110118 incomingRemoteCall .setDynatraceStringTag ((String ) receivedTag );
111119 } else if (receivedTag instanceof byte []) {
112120 incomingRemoteCall .setDynatraceByteTag ((byte []) receivedTag );
113121 } else {
114122 System .err .println ("invalid tag received: " + receivedTag .getClass ().toString ());
115123 }
116-
124+
117125 incomingRemoteCall .start ();
118126 try {
119127 handleCallFromClient (receivedMessage );
@@ -123,12 +131,12 @@ private void traceCallFromClient(Object receivedTag, String receivedMessage) {
123131 } finally {
124132 incomingRemoteCall .end ();
125133 }
126-
134+
127135 }
128136
129137 private void handleCallFromClient (String receivedMessage ) {
130138 // do whatever the server should do ...
131139 System .out .println ("Received message from client: " + receivedMessage );
132140 }
133-
141+
134142}
0 commit comments