(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 

Конференция "Sybase"

Обсуждение вопросов, связанных с компанией Sybase, ее продуктами Adaptive Server, PowerBuilder, PowerDesigner, SQL Anywhere и др.

 
 
Добавить сообщение »

Тема: EAServer. Создание независимых потоков на EAServer

Автор:  fdssdsfdsfds Дата: 29.07.2012 18:20
[открыть ссылку] поисковое продвижение [/url] [url=[открыть ссылку] поисковое продвижение [/url] <a href="http://XN-CTBBHDDAGMFCP1CDCBCJIUN.XN-P1AI"> поисковое продвижение </a> <a href="http://поисковое-продвижение.рф"> поисковое продвижение </a>
Ответить на сообщение »
 
Автор:  Artem Дата: 26.09.2006 15:24
Столкнулся с проблемой:-
Есть jsp которая вызывает метод addTask статического класса TaskManager:

TaskManager.getInstance().addTask(session.getAttribute("log").toString(), request.getParameter("sTask").toString(), par_str);

Этот метод добавляет в массив (хранящийся в памяти EAS) строку с параметрами,
необходимую для выполнения хранимой на sql-сервере процедуры, а затем вызывает конструктор класса
LogicTasksExecute:

new LogicTasksExecute(Login, dTime, sTask, sParams);

В конструкторе класса LogicTasksExecute идет проверка параметра sTask:

public LogicTasksExecute(String Login, long Time, String sTask, String ParametersForm) {
this.Login = Login;
this.Time = Time;
this.sTask = sTask;
if (sTask.equalsIgnoreCase("miHelp")) miHelp(ParametersForm);
if (sTask.equalsIgnoreCase("miMiscViewOemF")) miMiscViewOemF(ParametersForm);
if (sTask.equalsIgnoreCase("miGetVersion")) miGetVersion(ParametersForm);
}

и после вызывается соответствующий метод, в котором создается экземпляр класса RunTasks,
инициализирующего поток для выполнения экзека sql-процедуры:

private void miHelp(String ParametersForm) {
new RunTasks(Login, Time, sTask, "exec aMenusNameNotPmid", ParametersForm);
}

Конструктор класса RunTasks выглядит так:

public RunTasks(String Login, long Time, String sTask, String StringExecuteProc, String Params) {
this.NameThread = Login + sTask + Time;
this.Time = Time;
this.Login = Login;
this.sTask = sTask;
this.StringExecuteProc = StringExecuteProc;
this.Params = Params;
new Thread(this, NameThread).start();
}

В методе run() класса RunTasks создается коннект к sql-серверу через
ConnectionCaches EAS-а и запускается экзэк процедуры. После этого меняются значения
полей на конкретную задачу в статическом массиве (устанавливается статус "Выполнено", время выполнения и т.д.).

Метод run() класса RunTasks выглядит так:

public void runn() {
Connection connection = null;
try {
connection = MainSQLRequests.getConnection();
statement = connection.createStatement();
AllDatasetResult = GetTable(StringExecuteProc);
} catch (Exception ex) { }

for (int i = 0; i<( (ArrayList) TaskManager.getInstance().TaskList.get(Login)).size();i++) {
if ( ( (ArrayList) ( (ArrayList) TaskManager.getInstance().TaskList.get(Login)).get(i)).get(3).equals(new Long(Time))) {
//устанавливаем время завершения работы процедуры
( (ArrayList) ( (ArrayList) TaskManager.getInstance().TaskList.get(Login)).get(i)).set(3,new Long( (System.currentTimeMillis() - Time)));
//устанавливаем статус "Выполнено - 1"
( (ArrayList) ( (ArrayList) TaskManager.getInstance().TaskList.get(Login)).get(i)).set(2, new Integer(1));
}
}
//для построения отчета
new CreateReportInFile(getHashtable(), sTask, Params);
}

Для построения отчета по выполненной процедуре выполненной процедуре вызывается конструктор класса
CreateReportInFile:

public CreateReportInFile(Hashtable TableDataSet, String sTask, String Params) {
if (sTask.equalsIgnoreCase("miHelp")) miHelp(TableDataSet, Params);
if (sTask.equalsIgnoreCase("miMiscViewOemF")) miMiscViewOemF(TableDataSet, Params);
if (sTask.equalsIgnoreCase("miGetVersion")) miGetVersion(TableDataSet, Params);
}

public void miHelp(Hashtable TableDataSet, String Params) {
// System.out.println();
}


При создании нового потока падает служба Jaguar EAS-а.
EAS в свой лог пишет следующее:

180908-Thread::threadData: tml_keydata_get() failed
180908-Thread::threadData: tml_keydata_get() failed
180908-Thread::threadData: tml_keydata_get() failed

Скажите пожалуйста, почему падает служба, и
подскажите как правильно организовать старт потока
для выполнения экзэка sql-процедуры?
Ответить на сообщение »
 

Добавить сообщение »

 Распечатать »
 Правила публикации »
   
 Рекомендовать »  
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Pinnacle Studio 18 Standard ESD. Электронный ключ.
Rational ClearQuest Floating User License
Quest Software. TOAD Xpert Edition
Bitdefender Antivirus Plus 2020/1 год/1 ПК
ReSharper Ultimate - Commercial annual subscription
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Работа в Windows и новости компании Microsoft
Проект mic-hard - все об XP - новости, статьи, советы
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Как синхронизировать две базы? (3)
Какими средствами можно синхронизировать базы Sybase Adaptive Server 11.9.2, которые находятся...
 
Есть разработки... (2)
Уважаемые коллеги! Имеются две разработки, которые хотелось бы довести до состояния...
 
Sybase ASA 9, выполнение запроса из командной строки (2)
Передаю подготовленный SQl запрос в ISQL через командную строку таким образом dbisql.exe -c...
 
Третий Международный ERP-форум (3)
Третий Международный ERP-форум, организованный порталом CFO-Russia.ru и Клубом финансовых...
 
EAServer. Создание независимых потоков на EAServer (2)
Столкнулся с проблемой:- Есть jsp которая вызывает метод addTask статического класса...
 
 
 



    
rambler's top100 Rambler's Top100