From 05eb05849276213f9c646326be7d55cd195d3506 Mon Sep 17 00:00:00 2001 From: Artur Souza Date: Wed, 11 Dec 2019 00:05:51 -0800 Subject: [PATCH] Documentation on how to debug Java apps or SDK. --- README.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/README.md b/README.md index a4656c48f..8c810615b 100644 --- a/README.md +++ b/README.md @@ -45,3 +45,25 @@ To increase the version of all modules and pom files, run the following commands mvn versions:set -DnewVersion="0.1.0-preview02" mvn versions:commit ``` + +### Debug Java application or Dapr's Java SDK +If you have a Java application or an issue on this SDK that needs to be debugged, follow the steps below: + +Install [Pen Load Balancer](https://sourceforge.net/projects/penloadbalancer/) or your preferred load balancer utility: +```sh +sudo apt-get install pen +``` +Note: Pen is also available on Windows and MacOS. + +Then run Dapr with the load balancer process listening on port 3001 and forwarding to port 3000. For Pen Load Balancer, it would be: +```sh +dapr run --app-id testapp --app-port 3001 --port 3500 -- pen -b 99999999 -f localhost:3001 localhost:3000 +``` + +The command below will start a load balancer listening on port `3001` that forwards connections to port `3000`, while Dapr's app identifier is `testapp` and listening port is `3500`. If you try to make a HTTP call to any URL on `localhost:3001`, it will fail until you have an application listening on `localhost:3000`. + +Now you can go to your IDE (like IntelliJ, for example) and debug your Java application, using port `3500` to call Dapr while also listening to port `3000` to expose Dapr's callback endpoint. + +Calls to Dapr's APIs on `http://localhost:3500/*` should work now and trigger breakpoints in your code. + +Reminder: for Dapr, your application is listening to port `3001` and not `3000` since it can only see the load balancer's port. \ No newline at end of file