DefaultProperties.java 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package com.genersoft.iot.vmp.gb28181.conf;
  2. import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.notify.cmd.AlarmNotifyMessageHandler;
  3. import org.slf4j.Logger;
  4. import org.slf4j.LoggerFactory;
  5. import java.util.Properties;
  6. /**
  7. * 获取sip默认配置
  8. * @author lin
  9. */
  10. public class DefaultProperties {
  11. public static Properties getProperties(String name, boolean sipLog) {
  12. Properties properties = new Properties();
  13. properties.setProperty("javax.sip.STACK_NAME", name);
  14. // properties.setProperty("javax.sip.IP_ADDRESS", ip);
  15. // 关闭自动会话
  16. properties.setProperty("javax.sip.AUTOMATIC_DIALOG_SUPPORT", "off");
  17. /**
  18. * 完整配置参考 gov.nist.javax.sip.SipStackImpl,需要下载源码
  19. * gov/nist/javax/sip/SipStackImpl.class
  20. * sip消息的解析在 gov.nist.javax.sip.stack.UDPMessageChannel的processIncomingDataPacket方法
  21. */
  22. // * gov/nist/javax/sip/SipStackImpl.class
  23. // 接收所有notify请求,即使没有订阅
  24. properties.setProperty("gov.nist.javax.sip.DELIVER_UNSOLICITED_NOTIFY", "true");
  25. properties.setProperty("gov.nist.javax.sip.AUTOMATIC_DIALOG_ERROR_HANDLING", "false");
  26. properties.setProperty("gov.nist.javax.sip.CANCEL_CLIENT_TRANSACTION_CHECKED", "true");
  27. // 为_NULL _对话框传递_终止的_事件
  28. properties.setProperty("gov.nist.javax.sip.DELIVER_TERMINATED_EVENT_FOR_NULL_DIALOG", "true");
  29. // 是否自动计算content length的实际长度,默认不计算
  30. properties.setProperty("gov.nist.javax.sip.COMPUTE_CONTENT_LENGTH_FROM_MESSAGE_BODY", "true");
  31. // 会话清理策略
  32. properties.setProperty("gov.nist.javax.sip.RELEASE_REFERENCES_STRATEGY", "Normal");
  33. // 处理由该服务器处理的基于底层TCP的保持生存超时
  34. properties.setProperty("gov.nist.javax.sip.RELIABLE_CONNECTION_KEEP_ALIVE_TIMEOUT", "60");
  35. // 获取实际内容长度,不使用header中的长度信息
  36. properties.setProperty("gov.nist.javax.sip.COMPUTE_CONTENT_LENGTH_FROM_MESSAGE_BODY", "true");
  37. // 线程可重入
  38. properties.setProperty("gov.nist.javax.sip.REENTRANT_LISTENER", "true");
  39. // 定义应用程序打算多久审计一次 SIP 堆栈,了解其内部线程的健康状况(该属性指定连续审计之间的时间(以毫秒为单位))
  40. properties.setProperty("gov.nist.javax.sip.THREAD_AUDIT_INTERVAL_IN_MILLISECS", "30000");
  41. // properties.setProperty("gov.nist.javax.sip.MESSAGE_PROCESSOR_FACTORY", "gov.nist.javax.sip.stack.NioMessageProcessorFactory");
  42. /**
  43. * sip_server_log.log 和 sip_debug_log.log ERROR, INFO, WARNING, OFF, DEBUG, TRACE
  44. */
  45. Logger log = LoggerFactory.getLogger(AlarmNotifyMessageHandler.class);
  46. if (sipLog) {
  47. properties.setProperty("gov.nist.javax.sip.STACK_LOGGER", "com.genersoft.iot.vmp.gb28181.conf.StackLoggerImpl");
  48. properties.setProperty("gov.nist.javax.sip.SERVER_LOGGER", "com.genersoft.iot.vmp.gb28181.conf.ServerLoggerImpl");
  49. properties.setProperty("gov.nist.javax.sip.LOG_MESSAGE_CONTENT", "true");
  50. log.info("[SIP日志]已开启");
  51. }else {
  52. log.info("[SIP日志]已关闭");
  53. }
  54. return properties;
  55. }
  56. }