Я думаю, что ваша проблема в том, что реализация RMI довольно сложна для работы через брандмауэры, и для нее требуется больше, чем указанный вами порт. Вещи, которые вы обычно не заметите, если подключитесь к своей машине или машине в той же сети.
Этот пост описывает проблемы, с которыми вы столкнетесь достаточно хорошо
На вашем месте я бы попытался настроить jmxmp в качестве альтернативного протокола. Для этого вам нужно добавить jmxremote_optional.jar (бесплатно от Oracle, скачайте «Справочная реализация JMX Remote API 1.0.1_04 отсюда» ) и к серверу, и к пути к классам jvisualvm, но это того стоит.
Если вы заглянете в Google для jmxmp, вы найдете немало примеров того, как это настроить, одним из моих первых хитов будет http://pub.admc.com/howtos/jmx/distributed-chapt.html#jmxmp-sect, который может быть слишком ориентирован на код, но я все равно добавлю его сюда, потому что он объясняет такие вещи, как большинство, с помощью jmxmp в нескольких хороших предложениях.
Способ определения конечной точки на стороне сервера зависит от того, что вы используете. Большинство серверов приложений позволяют вводить URL-адрес службы jmx с поддержкой jmxmp, но если сервер написан с нуля, вам, возможно, придется настроить его самостоятельно в коде, а не использовать ключи -D для java, к которым вы привыкли.
Попробуйте и вернитесь с более конкретными вопросами, если у вас возникнут проблемы.
Edit:
После того, как вы добавили jar в classpath, единственное, что вы должны сделать в своем коде (при условии, что вы не используете серверное приложение, которое уже обрабатывает его для вас), это следующее (исключая объявления, обработку исключений и тому подобное, как вы все равно разберись):
url=new JMXServiceURL(jmxurl);
this.server = JMXConnectorServerFactory.newJMXConnectorServer(url, null, ManagementFactory.getPlatformMBeanServer());
this.server.start();