Isolate and diagnose networking issues using urlpoke.jar

Sonatype products are heavily dependent on the Hypertext Transport Protocol (HTTP) and Transport Layer Security (TLS). These protocols need to successfully navigate through complex organizational network infrastructures and occasionally experience problems which are better debugged in isolation from a Sonatype product experiencing the problem.

Sonatype products are also Java based and use common HTTP client shared libraries. Sometimes particular issues need to be replicated with specific Java or HTTP client versions.

To aid this advanced debugging, Sonatype offers a Java based pseudo client which can in some scenarios help isolate the root cause of a networking related problem.

Download urlpoke.jar

When should I use urlpoke?

The tool is typically used on the advice of Sonatype support staff.

While trivial to use, it should be considered one of the last resorts needed after the more common debugging techniques have not provided enough info.

What does urlpoke do?

URLPoke is a Java based command line socket connection and limited HTTP/TLS client. It can connect to specified IP/host ports, and perform basic verification that such connections can be established without error.

Why use urlpoke instead of ...?

Experience has shown that some networking issues are only reproducible using specific Java client libraries and versions that closely match those used by Sonatype products. 


URLPoke requires Java 7 or greater. Typically you want to ensure that the exact same Java runtime used to run a Sonatype product experiencing a problem is also used to execute urlpoke.

Ideally run this tool on the same host and user where the Sonatype product experiencing the problem is located. This reduces the variables which could be contributing to the problem.

How to use it

The jar is a self contained executable. To get help, simply launch it without arguments:

> java -jar urlpoke.jar 
==20 [INFO] - c995bd1f1abc6d4afc1c46748e14456a9d31e96e (201601131605)
==25 [INFO] - 2016-01-13 20:05:49,902+0000
==26 [INFO] - Missing arguments

 java [-D system properties] -jar urlpoke.jar [options ...] url

 JVM System Properties ( java -Dname=value ):
  -Dhttp.proxyHost (default:  )
  -Dhttp.proxyPort (default: 80)
  -Dhttp.nonProxyHosts (default: localhost|127.*|[::1])

  -Dhttps.proxyHost (default: )
  -Dhttps.proxyPort (default: 443)

  -Dhttp.agent (default: “Java/”) (default: not set) (default: false) (default: false) (default: see

 Program System Properties ( java -Dname=value ):
  -DproxyHost  proxy server host name
  -DproxyPort  proxy server port
  -DproxyUser  proxy server authorization user
  -DproxyPass  proxy server authorization password
  -Duser       target url authorization user
  -Dpass       target url authorization password

 Program Options:
  -sys         print effective system properties and continue
  -ssl         shorthand for
  -all         shorthand for and URLConnection logging (prints Authorization headers!)
  -debug       HTTP header logging (prints Authorization headers!)
  -pauth       use pre-emptive auth instead of two stage auth
  -hc          use Apache HTTP Client instead of Java URLConnection
  <url>        a URL with one of these protocols [https http ssl plain]

 Java Networking Reference:



Have more questions? Submit a request


Article is closed for comments.