通过 HTTP 将 Oracle Sensor Edge Server 连接到简单的应用程序
通过 HTTP 将 Oracle Sensor Edge Server 连接到简单的应用程序本教程说明如何编写简单的 JavaServer Pages (JSP) 应用程序以从 Oracle Sensor Edge Server 接收传感器事件。 大约 35 分钟
本教程包括下列主题: 将鼠标置于此图标上以加载和查看本教程的所有屏幕截图。(警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)
注意:此外,您还可以在下列步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。
Oracle Sensor Edge Server 为希望采用射频识别 (RFID) 技术的企业提供了一组全面的功能,用以捕获、管理、分析、访问和响应来自不同传感器(如 RFID、位置和温度传感器)的数据。在成熟和经过验证的 Oracle 技术(包括 Oracle 数据库 10g、Oracle 应用服务器 10g、Oracle 企业管理器 10g 和 Oracle 电子商务套件 11i)的基础上,基于传感器的 Oracle 服务使企业能够快速、轻松地将基于传感器的信息集成到企业系统中,以获得几乎实时的供应链可视性,并利用该洞察力优化业务流程。 Sensor Edge Server 的主要目标是将物理世界的原始数据转换为企业信息系统中有意义的业务事件。这可以直接在 Sensor Edge Server 上或通过将事件传送到企业信息系统,在一个封闭的循环中完成。可以始终通过数据信息库访问原始数据和其他上下文及系统信息。 在本教程中,您使用 Sensor Edge Server 将一个简单的 JSP 应用程序连接到 RFID 设备。将该应用程序与 Sensor Edge Server 集成,并添加一个模拟驱动程序来模拟 RFID 设备。集成后,您将看到由 Sensor Edge Server 和模拟驱动程序生成的事件。完成本教程后,您将了解如何配置传感器信息,以及如何使用 Oracle Sensor Edge Server 将这些信息集成到现有应用程序中。 
Oracle Sensor Edge Server 体系结构由四个主要组件组成:设备驱动程序、本地处理和筛选、调度程序以及管理。 设备驱动程序:设备驱动程序是与各种传感器和设备(如 RFID 阅读器、留言板等)进行通信的组件。它们负责将来自各种设备的数据规范化为标准的格式。可以对驱动程序进行逻辑分组。这使得管理员能够有效地进行管理。Oracle Sensor Edge Server 可以实例化一个或多个设备组。每个设备组负责它所管理的设备驱动程序。 本地处理和筛选:本地处理(过滤器和规则)可移除不需要或低级别的事件。过滤器可生成诸如 In field 和 Out field 之类的逻辑事件。本地处理可以绑定到单个设备或设备组。 调度程序:调度程序是用于事件传送的中央处理引擎。该过程在启动时开始。该过程将加载其余组件,包括驱动程序管理器和(在启动时)事件调度程序。在内部,它读取配置以找到要加载的事件调度程序。 管理和管理控制台:可在不同级别提供管理: 服务器管理:可以通过 Sensor Edge Server (SES) 管理控制台、JMX 或企业管理器来管理服务器。 数据管理:数据将作为事实的单一源配置、组织并存储在 Sensor Data Repository 中。 开发服务:该服务可提供 API 访问,以便开发人员能够使用自定义解决方案管理 SES。 在本教程中,您将在驱动程序框架中插入一个模拟器驱动程序来模拟 RFID 阅读器,但不使用过滤器。对于调度程序层,您将使用 HTTP 调度程序将事件发送到等待这些事件的 JSP 应用程序。 返回主题列表 开始本教程之前,您应该:
| 1. |
可以访问或已安装了 Oracle JDeveloper 10g。您可以从此处下载 Oracle JDeveloper 10g。 |
| 2. | 可以访问或已经安装了 Oracle 应用服务器 10g 第 3 版 (10.1.3)。您可以从此处下载 Oracle 应用服务器 10g 10.1.3 软件。 | | 3. | 可以访问或已经安装了 Oracle Sensor Edge Server 10.1.3。您可以从此处下载 Oracle Sensor Edge Server 软件。 |
返回主题列表 要演示应用程序如何消耗 SES 事件,请创建一个简单的 JSP 应用程序。您可以使用 JDeveloper 创建 JSP 应用程序。要创建 JSP 页面,请执行以下步骤:
1. | 启动 JDeveloper。关闭 Connections 模板。在 Applications Navigator 中选择 Applications。右键单击并从快捷菜单中选择 New Application。
| 2. | 将应用程序名更改为 SensorApp。单击 OK。 
|
| 3. | 此时显示 Create Project 对话框。在 Project Name 域中输入 Sensorprj,然后单击 OK。 |
| 4. | 右键单击 Applications Navigator 中的项目,然后从快捷菜单中选择 New。 | | 5. | 在 Categories 下面展开 Web Tier。选择 JSP,然后从 Items 中选择 JSP。单击 OK。 | | 6. | 在 Welcome 窗口中单击 Next。 | | 7. | 在 Create JSP 窗口中,选择 Servlet 2.4\JSP 2.0 (J2EE 1.4)。单击 Next。 | | 8. | 在 File Name 域中输入 ReceiveEvent.jsp。单击 Finish。 | | 9. | 您将看到 ReceiveEvent.jsp 的 Design 视图和 Source 视图,还将在右侧看到 Component Palette 和 Property Inspector 模板。关闭 Component Palette 和 Property Inspector 模板。单击 Source 选项卡。您将看到 ReceiveEvent.jsp 的源代码。 | 返回主题列表 向 JSP 页面添加读取事件的代码。您只读取三个参数:type、id 和 time。
| 1. | 修改 ReceiveEvent.jsp 以从请求检索并打印参数值。将以下代码复制并其粘贴到 ReceiveEvent.jsp 的 <body> 标记。 <% long type = 0; String tagId = null; String timeStr = null; //Get Event Parameters try { //Available Parameters: //id, siteName, deviceName, data, time, type, subtype, //sourceName, correlationId type = Long.parseLong(request.getParameter("type")); tagId = request.getParameter("id"); timeStr = request.getParameter("time"); } catch (Exception e) { out.println("Error:"+e.getMessage() ); }
%> <p>For browser debug;
<% // Display to screen for browser test out.println( "Type="+type+" ID="+tagId +" time="+timeStr );
%> 注意,您将从事件接收三个参数: type:指定事件类型 id:保存设备的名称或十六进制编号 time:保存读取标记时的时间戳 |
| 2. | 单击 Web Content 旁边的加号 (+)。右键单击 ReceiveEvent.jsp 并选择 Run。注意应用程序的 URL。在本示例中,URL 是 http://139.185.35.125:8988/SensorApp-Sensorprj-context-root/ReceiveEvent.jsp。
| | 3. | 您将看到该应用程序运行在默认浏览器上。 注意,这些参数值均为空,因为您尚未传递任何参数。 | | 4. |
将以下代码添加到 JSP 页面的 <body> 标记。这些事件将写入 events.log 文件。查看 events.log 文件的路径。 <%
//Write events to file try { // Open file String fileName = application.getRealPath("/WEB-INF/events.log"
); java.io.PrintWriter pw = new java.io.PrintWriter( new java.io.FileWriter(
fileName, true ) ); // Print line out to file pw.println( "Type="+type+"
ID="+tagId +" time="+timeStr ); pw.close(); out.println(
"Written to file" ); } catch (Exception e) { out.println(
"Error: Cannot write to file" ); } %>
运行该 .jsp 文件。 | 返回主题列表
Oracle Sensor Edge Server 收集传感器信息并进行筛选,而后执行本地传感器事件处理。之后,Oracle Sensor Edge Server 将事件数据安全、可靠地分派回中央应用程序或数据库。您使用 SES 控制台执行 Oracle Sensor Edge Server 管理、配置以及监视。 您将使用 HTTP 调度程序通过 Sensor Edge Server 来测试应用程序。您必须针对 HTTP 调度程序来配置服务器。您将使用 SES 控制台配置 HTTP 调度程序并指定参数。Sensor Edge Server 启动后,将检查配置并加载所有必要的组件和扩展。您还将了解如何配置模拟器来发送事件。模拟器根据指定的输入文件生成伪事件。该模拟器驱动程序对于测试以及查看系统中的事件处理方式非常有用。 要使用 Sensor Edge Server 测试应用程序,执行以下步骤: 返回主题列表 配置调度程序
| 1. | 打开浏览器,输入以下 URL: http://<主机名>.<域>:<端口>/edge 例如,http://localhost:8888/edge。 使用 oc4jadmin 用户身份以及在安装期间指定的 OC4J 管理员口令登录。单击 Login。 |
| 2. | 在 SES 控制台的每个页面上显示的导航树允许您浏览所有可用的扩展,以及配置组和实例化的扩展。 | | 3. | Oracle Sensor Edge Server 的主要输出是筛选后的数据事件。设备及各自的过滤器都可以规范化并最小化该事件数据。将调度程序配置为使用 HTTP 1.0 将事件路由到客户端,会导致 Oracle Sensor Edge Server 将每个事件消息分别发布到客户端。在 General Settings 中,将 Log Level 更改为 monitor。单击 Change dispatcher 更改 Oracle Sensor Edge Server 使用的调度程序。 | | 4. | Search and Select:Change current dispatcher 页面将出现。选择 Http Dispatcher,然后单击 Select。 | | 5. | 在 url 参数的 Value 域中,提供您的 JSP 应用程序的 URL。单击 Save Changes。 | | 6. | Oracle Sensor Edge Server 实例一次只使用一个调度程序。当您指定一个调度程序作为当前调度程序之后,必须重新启动 Oracle Sensor Edge Server 实例。SES 控制台会显示一条消息,通知您使用 OracleAS 企业管理器重新启动 Oracle Sensor Edge Server 实例。您可以在配置模拟器之后重新启动 Oracle Sensor Edge Server 实例。 |
返回主题 配置模拟器
| 1. | 首先,创建一个设备组,将 Oracle Sensor Edge Server 实例连接到设备和过滤器。创建设备组之后,使用设备(可用驱动程序的实例)对其进行填充,然后将过滤器实例附加到单个设备(或整个设备组)。 要创建新设备组,单击 Groups。 |
| 2. | 在 Group Management 页面上,在 Group Name 域中输入 SES。单击 Create New Group。
| | 3. | 针对新设备组的 Configure Group 页面显示。单击 Add new device 为该设备组创建设备。 | | 4. | Search and Select:Add new device 页面将出现,其中列出了信息库中的驱动程序。选择 Edge Simulator Driver。单击 Select。 | | 5. | Configure Group 页面显示,其中在 Devices 部分列出了该设备。单击 Edge Simulator Driver1。 | | 6. | Device Configuration 页面显示,其中显示了特定于该驱动程序的参数。 | | 7. | Edge Simulator Driver 生成事件以模拟真实的设备。Edge Simulator Driver 的工作方式与其他驱动程序一样,不同之处在于,它从输入文件(如 Simulation.xml)接受参数,而非连接到物理设备来读取事件。输入文件提供了何时生成事件的指示。 向下滚动至 Parameters 部分。这个模拟器有一个需要设置的参数,即输入文件的文件名。在 Filename 参数的 Value 域中输入 Simulation.xml 文件的路径。单击 Save Changes。 | | 8. | 示例 Simulation.xml 文件类似如下所示: <EdgeEventSimulation> <EventList repeat='1'> <Event> <type>100</type> <subtype>1</subtype> <id>03ffff045679</id> <data>No Data</data> <deviceName>My Device</deviceName>
</Event> ......... .......... ...........
</EventList>
</EdgeEventSimulation> <EventList> 元素定义了一个循环。该元素还是将所有其他指令分为一组的主块。<EventList> 元素具有一个 repeat 属性,在控制循环时必须使用。repeat 的值必须是一个从 0 到 LONG_MAX 的十进制数。 <EventInterval> 元素指示模拟器暂停一段时间后再继续运行。 <type> 元素代表与事件类型相对应的数值。 <subtype> 元素代表子类型的数值。例如,子类型值与 General Instruction Event 相对应,该事件由应用程序或设备发送以指示特定设备执行某个操作。值 1 表示打开设备。 <id> 元素代表表示一个文本值,可将标记(即 read 或 target)识别为事件指示。标记的一个 <id> 值是 03ffff045679。 <data> 元素为可选。 <deviceName> 元素代表生成事件的设备或应用程序的名称。<deviceName> 支持在生成事件时将模拟器显示为另一个设备。 | | 9. | 在 Oracle Sensor Edge Server 实例中进行了任何更改后,SES 控制台会显示一条消息,通知您使用 OracleAS 企业管理器重新启动 Oracle Sensor Edge Server 实例。单击消息中的 Enterprise Manager 链接。 | | 10. | OracleAS 企业管理器的登录页面将出现。输入 OC4J 用户名和口令。单击 Login。 | | 11. | 单击 Cluster Topology 页面中的 home 链接。 | | 12. | 单击 Applications。
| | 13. | 选择 edge 并单击 Restart。 | | 14. | 单击 Confirmation 页面中的 Yes。 | | 15. | 现在,Oracle Sensor Edge Server 实例已经成功重新启动。 |
返回主题
监视事件数据
| 1. | 打开浏览器,输入以下 URL: http://<主机名>.<域>:<端口>/edge 例如,http://localhost:8888/edge。 使用 oc4jadmin 用户身份以及在安装期间指定的 OC4J 管理员口令登录。单击 Login。 |
| 2. | 通过 SES 控制台,您能够通过 Monitor Events 和 Event Reports 选项页面中显示的事件数据来了解 Oracle Sensor Edge Server 的状况。单击 Monitor Events 选项卡查看当前队列中的数据。入站和出站事件数据包括: Type:事件类型的文本表示 Description:事件子类型的文本表示 Device Name:生成事件的设备名 Data:事件的有效载荷 Time:事件的生成时间 |
返回主题 在本教程中,您学习了如何:
 | 将简单的 JSP 应用程序与 Oracle Sensor Edge Server 相集成 |
 | 针对 JSP 应用程序配置 HTTP 调度程序 |  | 插入模拟器模拟 RFID 设备 | 返回主题列表 要了解有关 JDeveloper 的更多信息,可以参考: 返回主题列表 将鼠标置于该图标上可以隐藏所有的屏幕截图。
|