Как получить данные объекта с помощью функции удаленной отладки?
-
13-09-2019 - |
Вопрос
Интересно, как я могу использовать метод удаленной отладки, аналогичный Eclipse, для получения данных из удаленного объекта (который находится на сервере)?У меня уже есть клиентский код, и я просто хочу расширить его для привязки (если возможно) к какому-то порту и получения данных с сервера.
Честно говоря, я не хочу использовать что-то конкретное на стороне сервера (т.е.создайте дополнительный код на сервере), поскольку сервер уже позволяет удаленную отладку, и я могу видеть данные в представлении отладчика Eclipse.
Если бы вы указали мне пример кода - это было бы еще лучше.Заранее очень признателен.
Решение
Прочитав ответ @Romam на мой комментарий, я думаю, что лучшим решением было бы добавить простой интерфейс удаленного мониторинга на стороне сервера, который отвечал бы на запрос клиента, собирал соответствующие данные объекта и возвращал их клиенту.Если мониторинг на стороне сервера был совместим с JMX, вам, возможно, даже не понадобится реализовывать какой-либо клиентский код.
Существует ряд проблем с использованием JDPA для этого, в том числе:
- Безопасность:если пользователь может использовать ваш собственный клиент для удаленного доступа к вашему серверу, он, вероятно, также может использовать обычный удаленный отладчик.Это позволяет им видеть любое состояние, которое они хотят, а также, возможно, удаленно изменять его.
- Сложность:управлять протоколом JDPA со стороны клиента, скорее всего, непросто.
- Хрупкость:если я не ошибаюсь, вашему клиенту необходимо будет жестко запрограммировать (например,в строках) знание имен классов, имен членов и типов членов для серверной базы кода.Если вы измените детали реализации серверных объектов, ваш код JDPA вполне может сломаться.
Другие советы
Подозреваю, что здесь вы найдете то, что вам нужно:
http://www.j2ee.me/j2se/1.3/docs/guide/jpda/architecture.html
И что вам необходимо реализовать то, что называется «интерфейсом», который «реализует высокоуровневый интерфейс отладки Java».