我需要使用java-webgui Vaadin框架编写web应用程序,该框架将通过MsWin2k8R2 NPS插入MsSQL数据库的新记录实时更新。
由于NPS将日志存储到文件和/或数据库中,我更喜欢数据库,但我想知道当NPS服务器将数据插入数据库,然后从SQL服务器中重新获取或提取通知并在浏览器中显示时,SQL服务器如何通知我的java程序。
我已经有了Java<->Ms SQL连接已建立。
我已经知道的:
- SqlDependency类可以使用,但它只适用于.NET,我正在使用Java
- SQL Server Service Broker-这是SQL Server中的某种功能,可以用于此功能,但我目前还不正确理解如何做到这一点以及它的真正含义
- SQL扩展事件-同上
- SQL通知-同上
- SQL CRL触发器-用C++、C#或Java编写的触发器,在指定的情况下执行,但这是同步完成的,会减慢整个操作
现在。我发现了这个帖子:https://stackoverflow.com/a/534831/1235977
我建议在表上设置一个触发器,该触发器调用SQL Server Service Broker,然后(异步)执行CLR存储过程,该过程在不同的线程中完成所有工作。
但我不知道该怎么做。
所以我需要的是:SQL Server中的一个简单表,当插入数据时,它会以某种方式通知我的Java程序。它可以使用RESTWeb服务、JMS或任何与语言无关的东西。
请提供循序渐进的示例/解决方案。
您可以使用SQL的触发器功能。有一个解决方案:
- 调用存储过程的表的SQL触发器
- 存储过程调用一些c#代码,这些代码将通过http提供REST服务
- 您的后端将处理来自存储过程的http请求