SIP 애플리케이션 개발자의 런타임 고려사항

SIP(Session Initiation Protocol) 애플리케이션을 작성하는 경우 특정 제품 런타임 동작을 고려해야 합니다.

비SIP URI 설계를 허용하는 컨테이너

SIP 컨테이너가 애플리케이션에서 지원하는 URI(Uniform Resource Indicator) 설계를 확인할 수 없어서 요청 URI의 설계를 인지하지 못한 경우 해당 컨테이너는 메시지를 거부하지 못합니다. SIP 요소는 sip 또는 sips 이외의 설계로 구성된 요청 URI를 지원할 수 있습니다. 예를 들어 pres: 설계는 Presence Server라는 특별한 의미를 갖고 있지만 컨테이너는 이 의미를 인지하지 못합니다. 특정 설계를 허용하거나 거부하는 결정은 애플리케이션에서 내립니다. 사용 가능한 메커니즘을 사용하여 SIP 요소가 비SIP URI를 변환하면 RFC 2806 [9]의 tel URI 설계와 같이 SIP URI, SIPS URI 또는 기타 설계로 결정됩니다.

전환 중인 사용자를 위한 참고 사항: SIP 애플리케이션이 6.1 버전에서 전송 계층 보안( TLS )을 통해 SIP URI로 요청을 보낼 때, 요청 URI 스키마가 "sip"에서 "sips"로 변경됩니다 현재 버전에서, 설계는 변경되지 않습니다. 애플리케이션 코드를 변경하여 새 작동을 되돌릴 수 있습니다. "sips" URI에서는 버전 6.1에서 7.0 이상으로 업그레이드한 후 동작이 동일하게 유지됩니다.

다중 컨테이너 환경에서 직접 요청

다중 컨테이너 환경(SIP 프록시 및 SIP 컨테이너)에서 애플리케이션이 원래 외부에서 전송한 후 나중에 수신하기로 한 요청을 전송하는 경우 맨 앞에 있는 load balancing 요소(다중 SIP 프록시의 경우 IP sprayer 또는 SIP 프록시가 하나만 있는 경우 해당 SIP 프록시)의 호스트 및 포트를 사용해야 합니다. 애플리케이션이 맨 앞에 있는 요소 대신 컨테이너의 호스트 이름을 사용하는 경우 장애가 발생하면 해당 요청이 유실될 수 있습니다.

예를 들어 애플리케이션이 INVITE 요청을 자체 애플리케이션으로 전송하지만 요청은 푸시된 Route 헤더를 통해 외부 계정 시스템에서 전달되어야 합니다. 애플리케이션은 장애 복구가 수행되었는지 확인하려면 INVITE 요청 URI를 맨 앞에 있는 요소의 호스트 및 포트로 설정해야 합니다. 요청은 푸시된 Route를 통해 계정 시스템으로 라우트된 후 앞에 있는 load balancing 요소를 처리하기 위해 다시 전송합니다.

세션 리스너 이벤트 호출

SipSessionListener 및 SipApplicationSessionListener 이벤트는 애플리케이션이 해당 세션 오브젝트를 요청하는 경우에만 호출됩니다. 애플리케이션에서 표 1에 표시된 메소드를 사용하여 이를 수행합니다.
표 1. 세션 리스너 이벤트를 호출하는 메소드.

다음 표에는 세션 리스너 이벤트를 호출하는 메소드가 있습니다.

이벤트 방법
SipSessionListener getSession()
SipApplicationSessionListener getApplicationSession()

세션 활성화 및 비활성화

정상적인 조작에서 이 제품은 서버 사이에서 세션을 마이그레이션하지 않습니다. 세션 마이그레이션은 서버 장애가 발생한 경우에만 발생합니다. 따라서 SipSessionActivationListener 메소드의 비활성화 콜백은 호출되지 않습니다. 그러나 장애가 발생하여 다른 서버에 대한 세션 장애 복구가 강제 실행되는 경우 활성화 콜백이 호출됩니다.

외부 자원

SIP 애플리케이션이 중점적으로 I/O를 수행하고 외부 데이터베이스에 액세스하는 경우 몇 밀리초 동안 차단될 수 있습니다. 가능한 경우 이러한 자원에 대해 비동기 API를 사용하십시오. 블록화된 SIP 애플리케이션은 업무량이 많은 경우 요청 제한시간 또는 재전송을 트리거할 수 있습니다.

SIP 애플리케이션 속성

SIP 세션 속성처럼 대형 오브젝트나 BLOB가 정지되지 않도록 하십시오(SIPSession.setAttribute API). 고가용성(HA)과 결합되는 경우에는 전체 성능을 저하시킬 수도 있습니다. SIPApplicationSession.setAttribute에 동일한 권장사항이 적용됩니다. 대부분의 경우 대형 오브젝트가 여러 간단한 또는 작성된 문자열로 대체됩니다.