Apusic应用服务器对企业规范进行扩展,实现SIP协议和融合应用的快速开发和部署能力,完全兼容SIP Servlets1.1规范(JSR289)。
要在Apusic应用服务器中使用SIP,需要在apusic.conf中配置相应的服务,配置在应用部署服务(J2EEDeployer)之前,避免应用启动时找不到需要的服务。
首先配置SipService,如下所示:
...
<SERVICE
CLASS="com.apusic.web.sip.SipService"
>
<ATTRIBUTE NAME="DarConfigurationFileLocation" VALUE="config/sip/sip-dar.properties"/>
<ATTRIBUTE NAME="SipStackPropertiesFileLocation" VALUE="config/sip/sip-stack.properties"/>
</SERVICE>
...SipService主要是路由文件和Sip协议栈文件的配置。容器根据路由文件配置把请求分发到相应的应用程序。如果路由配置不对,将导致请求不会进入到应用程序。
参数配置项:
| 参数名称 | 默认值 | 类型 | 说明 |
|---|---|---|---|
| DarConfigurationFileLocation | 无 | String | 路由配置文件 |
| SipStackPropertiesFileLocation | 无 | String | sip协议栈参数配置文件 |
| SipApplicationDispatcherClassName | org.mobicents.servlet.sip.core.SipApplicationDispatcherImpl | String | 执行路由算法和应用选择过程 |
| GatherStatistics | true | Boolean | 是否允许收集数据 |
| CanceledTimerTasksPurgePeriod | 0 | Integer | 定期清理容器计时器资源 |
| BaseTimerInterval | 500 | Integer | 单位毫秒重新传输INVITE请求的最小时间 |
| T2Interval | 4000 | Integer | 单位毫秒,最大重新传输非INVITE请求和 INVITE回复 |
| T4Interval | 5000 | Integer | 单位毫秒,消息在网络上最大时间 |
| TimerDInterval | 32000 | 单位毫秒,针对UDP,等待重新传输的时间 | |
| DispatcherThreadPoolSize | 15 | Integer | 处理sip消息的线程 |
| AdditionalParameterableHeaders | 无 | String | 添加sip头消息 |
| BypassResponseExecutor | true | Boolean | 是否允许在线程池下分发消息 |
| DialogPendingRequestChecking | false | Boolean | 是否检测sip事务重叠 |
| CallIdMaxLength | 0 | Integer | sip头部Call-Id最大长度 |
| TagHashMaxLength | 0 | Integer | sip头部From和To的最大程度 |
| HttpFollowsSip | false | Boolean | 是否sip粘滞 |
| UsePrettyEncoding | true | Boolean | 是否允许sip消息拆分为多行 |
其次是配置SipConnectorService,如下:
...
<SERVICE
CLASS="com.apusic.web.sip.SipConnectorService"
NAME="apusic:service=SipConnector,name=udp" >
<ATTRIBUTE NAME="Port" VALUE="5080"/>
<ATTRIBUTE NAME="SignalingTransport" VALUE="udp"/>
</SERVICE>
<SERVICE CLASS="com.apusic.web.sip.SipConnectorService"
NAME="apusic:service=SipConnector,name=tcp">
<ATTRIBUTE NAME="Port" VALUE="5080"/>
<ATTRIBUTE NAME="SignalingTransport" VALUE="tcp"/>
</SERVICE>
<SERVICE CLASS="com.apusic.web.sip.SipConnectorService"
NAME="apusic:service=SipConnector,name=tls">
<ATTRIBUTE NAME="Port" VALUE="5081"/>
<ATTRIBUTE NAME="SignalingTransport" VALUE="tls"/>
</SERVICE>
<SERVICE CLASS="com.apusic.web.sip.SipConnectorService"
NAME="apusic:service=SipConnector,name=ws">
<ATTRIBUTE NAME="Port" VALUE="5082"/>
<ATTRIBUTE NAME="SignalingTransport" VALUE="ws"/>
</SERVICE>
...SipConnectorService主要是配置监听的端口和使用的协议,SipConnectorService可以配置多个,其中udp和tcp使用的端口可以是同一个,ws(WebSocket)和tls的端口必须唯一。如果只是用了udp,只配置一个SipConnectorService即可,无需配置多个。
参数配置项:
| 参数名称 | 默认值 | 类型 | 说明 |
|---|---|---|---|
| Port | 无 | Integer | 监听sip消息的端口 |
| SignalingTransport | 无 | String | 可选值udp/tcp/ws/tls |
| ProtocolHandler | org.mobicents.servlet.sip.apusic.SipProtocolHandler | String | 使用默认值即可,无需改变 |
| IpAddress | 无 | String | ip地址,如果有多个可手动指定 |
| UseStun | false | Boolean | 是否使用stun协议 |
| StunServerAddress | 无 | String | 使用stun协议时的ip地址 |
| StunServerPort | 0 | Integer | 使用stun协议时的端口 |
| StaticServerAddress | 无 | String | Load-banlance端的地址 |
| StaticServerPort | 0 | Integer | Load-banlance端的端口 |
| UseStaticAddress | false | Boolean | 是否启用上面两项 |