2010-07-23 5 views
2

В настоящее время я пишу что-то, чтобы обойти эту ошибку Java:Как я могу получить поток ошибок через сокет в 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. Interleave выхода процесса с STDERR в процессе, а затем разобрать их друг от друга в Java-обратно в отдельные потоки

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

BONUS: Дайте мне легкое, гарантированное решение проблемы с ошибкой Java, которая не предполагает, что я сделаю что-либо из этого, и я буду вашим лучшим другом навсегда.

ответ

0

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

Смежные вопросы