Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Socket + Thread / 10 сообщений из 10, страница 1 из 1
22.06.2007, 10:42:06
    #34612845
igor_ch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket + Thread
Доброе время суток.
Я пробую реализовать следующую идею:
Есть сервер и клиент, которые общаются между собой через сокеты. По определенным командам от клиента, сервер должен запустить или остановить службу.
Но вот я наткнулся на такие грабли:
Когда первый раз посылаешь пару команд запуск/останов службы, то все нормально.
А вот при следующих попытках служба не запускается.

Подскажите в чем загвоздка.
...
Рейтинг: 0 / 0
22.06.2007, 10:58:35
    #34612891
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket + Thread
Вопрос - Я написал программу, а она не работает, что делоть?
Ответ - учиться задавать вопросы.
...
Рейтинг: 0 / 0
22.06.2007, 11:10:26
    #34612939
igor_ch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket + Thread
Уточняю вопрос:
При запуске процесса выполняется:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
			//запуск процесу
     public   void  run() 
    {
    	status = "start";
        
         while  (status.equals("start")) 
        {
             try 
            {
                <некоторые действия>                
            }
             catch  (Exception e)
            {
                System.err.println("Service.AutoServer.run: "+e.getMessage());
            }
        }
    }
где status - строка статуса службы в которую записывается сообщение "start" при запуске службы и "stop" при ее останове

При посылке на сервер команды останова службы в status записывается сообщение "stop" и вызывается метод stop процесса, что, по идее, должно дать возможность запустить процесс с нуля снова по команде запуска процесса. Но этого не происходит...
...
Рейтинг: 0 / 0
22.06.2007, 11:17:10
    #34612966
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket + Thread
Ваш класс с методом
Код: plaintext
1.
2.
3.
     public   void  run() {
...
}
наследник Thread или имплементация Runnable?
...
Рейтинг: 0 / 0
22.06.2007, 11:19:53
    #34612981
igor_ch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket + Thread
Приведенный мною метод наследуется от Thread.
...
Рейтинг: 0 / 0
22.06.2007, 11:22:44
    #34612993
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket + Thread
после выхода из run(), поток необходимо пересоздавать
...
Рейтинг: 0 / 0
22.06.2007, 11:32:14
    #34613016
igor_ch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket + Thread
Огромное спасибо за подсказку. Все работает.
...
Рейтинг: 0 / 0
22.06.2007, 11:36:42
    #34613040
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket + Thread
igor_ch
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
             try 
            {
                <некоторые действия>                
            }
             catch  (Exception e)
            {
                System.err.println("Service.AutoServer.run: "+e.getMessage());
            }

Блин. Не делайте так никогда, пожалуйста!!
Если ваш код кто то будет использовать, это может доставить большое количество проблем, причем дебильных.
Пример: В WebLogic 9.x взяли и переписали свой враппер над JDBC драйвером. Все бы ничего, да только сделали так же:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
     try  {
         try  {
            originalStatement.execute();
        }  catch  (SQLException s) {
            //...
            throw  s;
        }
    }  catch  (Exception e) {
        blablabla.handleException(...)
    }
Вот эта выделенная ерунда берет делает парочку if/else в зависимости от типа эксепшна, и оборачивает в, возможно, другой эксепшн. Из за такой "№;% любой эксепшн летящий из драйвера пропадает.
PS. наболело.
...
Рейтинг: 0 / 0
22.06.2007, 11:52:39
    #34613114
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket + Thread
Timm Из за такой "№;% любой эксепшн летящий из драйвера пропадает.
PS. наболело.

А как именно они оборачиваю оригинальный exception? Cause теряется что-ли?
...
Рейтинг: 0 / 0
22.06.2007, 11:58:17
    #34613139
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket + Thread
wessen Timm Из за такой "№;% любой эксепшн летящий из драйвера пропадает.
PS. наболело.

А как именно они оборачиваю оригинальный exception? Cause теряется что-ли?
да.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
/* 134*/         if (throwable  instanceof  ResourceUnusableException)
/* 135*/             throw   new  PoolUnavailableSQLException(throwable.getMessage());
/* 136*/         if (throwable  instanceof  SQLException)
/* 137*/             throw  (SQLException)throwable;
/* 138*/         if (throwable  instanceof  SecurityException)
/* 139*/             throw  (SecurityException)throwable;
/* 141*/         else 
/* 141*/             throw   new  SQLException(s + ", Exception = " + throwable.getMessage());
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Socket + Thread / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]