欢迎阅读分析服务入门。本页面是您了解分析服务的起始点。包括下列主题:
分析服务应用程序的创建目的是对 Dojo Toolkit for JavaScript 中 dojox.analytics 和相关插件的使用进行补充。分析提供了跟踪事件(Dojo、鼠标单击等)和从客户机端代码生成日志记录的一种方式。通常会在客户机上管理分析信息,并可能将这些信息发送至多个不同的分析服务器。此过程可能比较麻烦,并通常需要与提供该应用程序的服务器以外的域进行通信。分析服务提供了在服务器端对分析和日志记录的多路复用进行处理的一种方式。客户机上的现有 dojox.analytics 代码将事件发送至提供该应用程序的服务器,这样就可以消除所有跨域问题。
在服务器上,分析服务应用程序包括服务器端 JAX-RS 资源,它接受从客户机的 dojox.analytics 代码发送的请求。可以在分析服务应用程序中设置 servlet 初始化参数,以对该应用程序处理分析事件的方式进行配置。缺省情况下,会将所有事件发送至单个日志文件 analytics_default.log。
产品先决条件 | 版本 |
---|---|
Java Technology Edition | 5.0 及更高版本 |
Java Platform, Enterprise Edition 5 (Java EE) 应用程序服务器及更高版本 | WebSphere Application Server V8.5 |
Web 浏览器 | 任何现代 Web 浏览器,如 Internet Explorer 7 及更高版本、Mozilla Firefox 3.x 及更高版本、Google Chrome、Safari 和 Opera |
仅当客户机端 JavaScript 正在使用 dojox.analytics 时,分析服务才有用。要从 dojox.analytics 访问工具,客户机端 JavaScript 仅需要包括正确的 dojo.require 语句。引入该依赖关系后,就可以使用多个选项来生成事件。 请参阅下列示例:
启用生成事件的功能。
dojo.require("dojox.analytics.plugins.dojo");
生成包含任意文本的 dojox.analytics 事件。
console.rlog("Any quoted string goes here.");
使用高精度的时间戳记记录某些对象。
dojox.analytics.addData("timestamp", [new Date().getTime(), "on-load executed"]);
除选择 dojox.analytics 将跟踪的事件以外,还需要用于确定分析服务的相对或绝对 URL 的配置。您也可以使用以下参数:
djConfig 参数 | 含义和可能的值 | 是否必需 |
---|---|---|
analyticsUrl: | 分析服务的 URL,它是标准 URL 或当前资源的相对 URL | 是 |
sendMethod | “script”或“xhrPost”(缺省值) | sendMethod:如果分析服务与引用页位于不同的域中,那么需要使用“script”。 |
sendInterval | 在将事件发送至分析服务之前对事件进行累加的毫秒数 | 否,缺省为 5000 毫秒 |
缺省配置会将所有事件发送至单个日志文件 analytics_default.log,该文件位于服务器 JVM 中服务器 java.io.tmpdir 系统属性定义的目录中。可以通过 web.xml 文件中的属性设置来定制此输出日志文件名称和路径。要进行此定制,您将需要在 param-name com.ibm.ws.mobile.appsvcs.analytics.logger.LocalFileLogger 的 param-value 中指定要将事件记录至的文件的完整路径。您还需要指定值“1.0”,以确定该服务要使用的语法版本。必须进行此操作,并且其目的只是为了可在将来进行版本控制。
web.xml 文件的以下部分说明了此参数的使用:
... <init-param> <param-name>com.ibm.ws.mobile.appsvcs.analytics.logger.LocalFileLogger</param-name> <param-value>1.0,/tmp/events.log</param-value> </init-param> ...
通过指定将哪些其他信息记录为每个日志条目的一部分,您还可以对日志的格式进行进一步定制。可以通过 web.xml 文件中的属性设置来执行此操作。要执行此操作,只需在 param-name com.ibm.ws.mobile.appsvcs.analytics.logger.LocalFileLogger.LogFormat 的 param-value 中指定一个或多个预定义关键字。
web.xml 文件的以下部分说明了此参数的使用:
... <init-param> <param-name>com.ibm.ws.mobile.appsvcs.analytics.logger.LocalFileLogger.LogFormat</param-name> <param-value>CLIENT_IP,CLIENT_SESSION,HTTP_REFERER</param-value> </init-param> ...
可以从以下任何预定义关键字中进行选择:
日志格式条目 | 记录的内容 |
---|---|
CLIENT_SESSION | 将记录 HttpServletRequest#getRequestedSessionId(),即客户机指定的请求会话标识 |
CLIENT_SESSION_FORCED | 记录 HttpServletRequest#getSession(true).getId(),即如果 HTTP 会话不存在,那么将强制创建该会话,并记录其会话标识 |
CLIENT_IP | 记录 HttpServletRequest#getRemoteAddr(),即客户机的因特网协议 (IP) 地址 |
HTTP_REFERER | 记录 HttpServletRequest#getHeader(),即请求头 |
使用分析服务的下一步是启动该应用程序并对其进行配置。启动它仅需要安装和部署 .ear 文件。
当客户机使用 dojox.analytics 时,它生成的事件会导致将 HTTP 请求发送至分析服务器。分析服务通过显示具象状态传输 (REST) 接口来处理这些请求。请参阅下表,其中描述了可用的操作。
分析服务将处理以 http://<server>:<port>/<context-root>/<url-pattern>/analytics/logger 作为目标的请求。如果 Web 归档 (.war) 文件打包在企业归档 (.ear) 文件中,那么上下文根将由 application.xml 文件定义。如果 .war 单独安装,那么上下文根将由用户在安装时定义。URI 映射在 .war 文件中的 WEB-INF/web.xml 中定义。
在所提供的 appsvcs-analytics.ear 中,application.xml 文件指定上下文根“/appsvcs-analytics”,而 web.xml 文件指定 URL 模式“/rest/*”。
操作描述 | 方法 | URI | 参数 |
---|---|---|---|
报告一列事件 | GET | /appsvcs-analytics/rest/analytics/logger | 有两个必需的查询参数(id 和 data)以及一个可选的查询参数 (callback)。 |
报告一列事件 | POST | /appsvcs-analytics/rest/analytics/logger | POST 请求使用相同的参数,但这些参数不是 URI 查询的一部分。相反,它们位于 HTTP 请求的主体中。下文提供了示例。 |
下表提供了每个参数的描述。
查询参数 | 描述 |
---|---|
id | 唯一的事件标识 |
data | JSON 格式的事件数组 |
callback | 应包括在响应中的 JavaScript 方法的名称。请参阅有关响应格式的以下信息。 |
对 POST 请求和 GET 请求的响应没有什么不同。但是,如果请求中包括可选的 callback 参数,那么响应的格式略有不同。以下示例对格式进行了概述。
描述 | 样本请求 | 样本响应 |
---|---|---|
带有 callback 的 GET | GET /appsvcs-analytics/rest/analytics/logger?id=1&callback=method &data=[{"plugin":"dojo","data":{"locale":"en-us"}}] | method({"eventsReceived":1,"id":"1"}) |
不带 callback 的 GET | GET /appsvcs-analytics/rest/analytics/logger?id=1 &data=[{"plugin":"dojo","data":{"locale":"en-us"}}] | {"eventsReceived":1,"id":"1"} |
带有 callback 的 POST | POST /appsvcs-analytics/rest/analytics/logger, HTTP body: id=1&callback=method &data=[{"plugin":"dojo","data":{"locale":"en-us"}}] | method({"eventsReceived":1,"id":"1"}) |
不带 callback 的 POST | POST /appsvcs-analytics/rest/analytics/logger, HTTP body: id=1 &data=[{"plugin":"dojo","data":{"locale":"en-us"}}] | {"eventsReceived":1,"id":"1"} |
发送至 REST 服务的每个请求都会导致一个 HTTP 响应,该响应包括用于指示成功或失败类型的状态码。这些结果与公共 HTTP 状态码间存在良好的映射。
状态码 | 描述 |
---|---|
200 | 请求的操作已成功。 |
400 | 请求的参数或请求主体中包括不正确的值。 |
405 | REST 请求中存在不受支持的 URI。 |
406 | 根据请求头,客户机不支持必需的 JSON 格式。 |
415 | 客户机请求包括不受支持的内容类型。 |
500 | 服务器中发生意外错误。 |
本节描述在 IBM WebSphere Application Server V8.5 上安装分析服务的过程。假定您熟悉应用程序服务器的应用程序安装和管理工作。
找到产品安装随附提供的分析服务企业归档 (EAR) 文件。可以在已安装 IBM WebSphere Application Server Web 2.0 and Mobile Toolkit 的安装树中找到该 EAR 文件。例如,如果已将 Toolkit 安装在以下位置中:
平台 | 位置 |
---|---|
Linux 和 UNIX: | /opt/WebSphere/Web20Mobile |
Windows: | c:\WebSphere\Web20Mobile |
那么可以在以下位置找到该 EAR 文件:
平台 | 位置 |
---|---|
Linux 和 UNIX: | /opt/WebSphere/Web20Mobile/installableApps/application_services/analytics/appsvcs-analytics.ear |
Windows: | c:\WebSphere\Web20Mobile\installableApps\application_services\analytics\appsvcs-analytics.ear |
安装演示客户机的展示样本,并将 Web 浏览器指向您的应用程序服务器安装:http://<application server hostname>:<port>/appsvcs-analytics/
应用程序服务器主机名和端口号随应用程序服务器安装的不同而有所变化。应用程序服务器缺省安装的 Web 容器端口为 9080。如果您在安装了应用程序服务器的工作站上运行 Web 浏览器,并且已接受所有缺省值,请使用以下 URL:http://localhost:9080/appsvcs-analytics/。