SIP 应用程序开发者的运行时注意事项

在编写会话启动协议 (SIP) 应用程序时,应考虑某些产品运行时行为。

容器可能接受非 SIP URI 模式

如果 SIP 容器因为不知道应用程序所支持的统一资源指示符 (URI) 模式而不能识别请求 URI 中的模式,那么该容器不会拒绝消息。SIP 元素可能支持具有 sipsips 以外的模式的请求 URI,例如 pres: 模式对于现场服务器有特定含义,但该容器不能识别。由应用程序确定是接受还是拒绝特定模式。SIP 元素可能会使用任何可用机制来转换非 SIP URI,从而生成 SIP URI、SIPS URI 或其他模式,如 RFC 2806 [9] 的 tel URI 模式。

对于转换用户 对于转换用户: 当 SIP 应用程序在 V6.1 中将请求通过传输层安全性 (TLS) 发送到 SIP URI 时,请求 URI 模式将从“sip”更改为“sips”。在当前版本中,此方案不会更改。可以通过更改应用程序代码来撤销新行为。使用“sips”URI 时,在从 V6.1 升级到 7.0 或更高版本后,行为将保持不变。请参阅信息中心主题“迁移前的注意事项”,以了解更多信息。trns

引导多容器环境中的请求

在多容器环境中(SIP 代理加上多个 SIP 容器),当应用程序发送一开始打算以外部方式发送但后来接收到的请求,它应使用最前端的负载均衡元素(如果有多个 SIP 代理,那么使用 IP sprayer,如果只有一个 SIP 代理,那么使用 SIP 代理)的主机和端口。如果应用程序使用容器而不是最前端元素的主机名,那么发生故障时请求可能会丢失。

例如,应用程序向其自身发送 INVITE 请求,但该请求必须通过推送式路由头穿过外部记帐系统。应用程序应将 INVITE 请求的 URI 设置为最前端元素的主机和端口,以确保进行故障转移。将通过推送式路由将该请求路由至记帐系统;然后会将其发送回前端负载均衡元素以进行处理。

调用会话侦听器事件

仅当应用程序请求相应的会话对象时,才会调用 SipSessionListener 和 SipApplicationSessionListener 事件。可通过在应用程序中使用表 1中显示的方法来完成此任务。
表 1. 用于调用会话侦听器事件的方法.

此表列出了调用会话侦听器事件的方法。

事件 方法
SipSessionListener getSession()
SipApplicationSessionListener getApplicationSession()

会话激活和钝化

在正常操作期间,此产品决不会在服务器之间迁移会话。会话迁移只能是服务器故障的结果。因此,绝对不会调用 SipSessionActivationListener 方法的钝化回调。但是,在发生故障时强制会话转移至另一服务器的情况下,会调用激活回调。

外部资源

如果 SIP 应用程序执行密集型 I/O 或访问外部数据库,那么它可能会被阻止数毫秒。如果可能,请为这些资源使用异步 API。在负载下,被阻止的 SIP 应用程序可能触发请求超时或重新传输。

SIP 应用程序属性

避免将大对象或 BLOB 作为 SIP 会话属性挂起(通过 SIPSession.setAttribute API)。与高可用性 (HA) 结合时,这可能会损害总体性能。同样的建议也适用于 SIPApplicationSession.setAttribute。在大多数情况下,大对象可由多个简单字符串或组合字符串替换。

指示主题类型的图标 参考主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rsip_refwrite
文件名:rsip_refwrite.html