Как я могу получить поток ошибок через сокет в Java? - PullRequest
2 голосов
/ 24 июля 2010

Я сейчас пишу что-нибудь, чтобы обойти эту ошибку Java:

http://bugs.sun.com/view_bug.do?bug_id=5049299

По сути, у меня есть легкий C-сервер, который работает на той же машине, что и Java-сервер. Я добавляю функцию на C-сервер, когда могу запросить его для запуска / запуска нового процесса через сокет и передачи обратно stdin / stdout / stderr. На стороне Java я создал нечто, имитирующее поведение ProcessBuilder и Runtime.exec(), но через сокет.

Проблема возникает с stderr. В Java-сокетах нет потока ошибок, поэтому я немного растерялся относительно того, как его вернуть. Я предложил два возможных решения:

  1. Создать второй сокет (возможно с сервера C обратно на Java сервер) куда я просто отправляю stderr обратно.
  2. Чередовать вывод процесса с stderr из обработать, а затем разобрать их в Java возвращается в отдельные потоки

Оба решения имеют присущие проблемы, поэтому я хотел бы услышать любые отзывы.

БОНУС: Дайте мне простое, гарантированное решение ошибки Java, которая не требует от меня выполнения каких-либо действий, и я навсегда останусь вашим лучшим другом.

1 Ответ

0 голосов
/ 27 июля 2010

Чтобы решить эту проблему, я воспользовался тем, что два сервера работают на одном компьютере.Я просто записал stderr в файл, который я прочитал на другом сервере.Не самое элегантное решение в мире, но довольно простое и работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...