跳到主要内容
版本:3.1.0(预览)

框架服务

View 框架通过 ambari-views/src/main/java/org/apache/ambari/view 下的 ViewContext 及相关接口向 View 实现暴露服务器端服务。

ViewContext

View 服务器资源会接收 ViewContext。它提供已认证用户、View 定义、实例名称和属性、实例数据、Ambari 属性、资源提供程序、流提供程序以及 View controller。

@Inject
ViewContext context;

使用 getUsername()getLoggedinUser()hasPermission() 检查身份与权限。不要将客户端可见性当作授权;服务器必须强制执行对 View 资源和 Web 上下文的访问控制。

实例数据

putInstanceDatagetInstanceDataremoveInstanceData 用于存储限定在 View 实例和用户范围内的轻量级键值数据。这适合偏好设置和其他小型状态,不适合指标历史或大型文档。

viewContext.putInstanceData("key", "value");
String value = viewContext.getInstanceData("key");

没有关联实例时调用这些方法可能按 ViewContext 契约失败。请明确处理验证和持久化错误。

资源提供程序

getResourceProvider(type) 返回 view.xml 中声明的资源提供程序。ResourceProvider 接口定义读取、创建、更新和删除操作,以及相应的资源/错误契约。提供程序是托管 View 应用使用的服务器端 endpoint。

框架事件

View 的实现可以接收生命周期回调:

回调含义
onDeployView 版本已部署。
onCreateView 实例已创建。
onUpdateView 实例定义已更新。
onDestroyView 实例已销毁。

使用 <view-class> 注册实现,并确保回调可以安全重试。部署回调是服务器操作,与浏览器 iframe 无关。

View 事件

View controller 可以注册监听器并在 View 之间触发事件。根据 ViewController 契约,按 View 名称,或按 View 名称和版本定位监听器。事件通信不能替代 REST 授权或实例数据范围控制。