2013-12-02 5 views
0

Мне нужно написать веб-приложение с помощью java webgui Vaadin Framework, который будет обновляться в режиме реального времени с новыми записями, вставленными в базу данных MsSQL с помощью NPS MsWin2k8R2.Java + Ms SQL Server 2008 R2 после вставки триггерного уведомления

Поскольку NPS хранит журналы в файлах и/или DB, я предпочитаю БД, но я хотел бы знать, как моя Java-программа может быть уведомлена сервером SQL, когда сервер NPS вставляет данные в базу данных, а затем повторно извлекает или извлекает из уведомления SQL Server и отобразить его в браузере.

У меня уже есть Java < -> Установлено соединение Ms SQL.

То, что я уже знаю:

  • SqlDependency класс может быть использован, но это только для .NET, и я работаю в Java
  • SQL Server Service Broker - это своего рода особенность в SQL Server, которые могут быть использованы для этого, но я в настоящее время не могут правильно понять, как это сделать и что это на самом деле
  • SQL Extended Events - то же самое, что и выше
  • SQL Notifications - такой же, как и выше
  • SQL CRL Триггеры - триггер, написанный на C++, C# или, возможно, на Java, который выполняется в указанной ситуации, но это выполняется синхронно и замедляет всю операцию.

Теперь. Я нашел этот пост: https://stackoverflow.com/a/534831/1235977

я предложил бы иметь триггер на таблицу, которая вызывает SQL Server Service Broker, который затем (асинхронно) выполняет хранимую процедуру CLR, которая делает всю работу в другой нить.

Но я не знаю, как это сделать.

Так что мне нужно: Простая таблица в SQL Server, которая при вставке данных будет как-то уведомлять мою Java-программу. Он может использовать веб-службы REST, JMS или что-то, что не зависит от языка.

Просьба предоставить пошаговые примеры/решения.

ответ

0

Вы можете использовать триггерную функциональность SQL. Существует решение:

  1. SQL Triggrer для таблицы, вызовы хранимых процедур
  2. Хранимая процедура вызывает некоторые C# код, который будет REST службы по протоколу HTTP.
  3. Ваш внутренний сервер обрабатывает запросы HTTP из хранимой процедуры.
+0

Возможно ли выполнить асинхронно хранимую процедуру из триггера? Я видел, как кто-то сказал, что такое, как это, может значительно замедлить работу БД, и я не могу позволить этому случиться, так что асинхронный запуск является обязательным. Но спасибо за ответ. Когда я проверю, работает ли это, я помечаю этот ответ как ummm. Ответ :-) – termil0r

+0

Триггер - проблема производительности. Ты прав. Вы не можете вызывать sql sp асинхронно, но вы можете выполнить асинхронный вызов для кода C#, который будет вызывать службу REST. –

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