Commit b37a77f23f995758178b6af38b89a860107d218d

Authored by panlinlin
1 parent bb22908c

解决循环依赖导致的打包失败

src/main/java/com/genersoft/iot/vmp/conf/SipPlatformRunner.java
... ... @@ -36,7 +36,6 @@ public class SipPlatformRunner implements CommandLineRunner {
36 36 List<ParentPlatform> parentPlatforms = storager.queryEnableParentPlatformList(true);
37 37  
38 38 for (ParentPlatform parentPlatform : parentPlatforms) {
39   -
40 39 redisCatchStorage.updatePlatformRegister(parentPlatform);
41 40  
42 41 redisCatchStorage.updatePlatformKeepalive(parentPlatform);
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/SipLayer.java
... ... @@ -16,6 +16,7 @@ import org.slf4j.Logger;
16 16 import org.slf4j.LoggerFactory;
17 17 import org.springframework.beans.factory.annotation.Autowired;
18 18 import org.springframework.context.annotation.Bean;
  19 +import org.springframework.context.annotation.ComponentScan;
19 20 import org.springframework.context.annotation.DependsOn;
20 21 import org.springframework.stereotype.Component;
21 22  
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderPlarformProvider.java
... ... @@ -31,16 +31,16 @@ public class SIPRequestHeaderPlarformProvider {
31 31 @Autowired
32 32 private SipFactory sipFactory;
33 33  
34   - @Autowired
35   - @Qualifier(value="tcpSipProvider")
36   - private SipProvider tcpSipProvider;
37   -
38   - @Autowired
39   - @Qualifier(value="udpSipProvider")
40   - private SipProvider udpSipProvider;
  34 +// @Autowired
  35 +// @Qualifier(value="tcpSipProvider")
  36 +// private SipProvider tcpSipProvider;
  37 +//
  38 +// @Autowired
  39 +// @Qualifier(value="udpSipProvider")
  40 +// private SipProvider udpSipProvider;
41 41  
42 42  
43   - public Request createKeetpaliveMessageRequest(ParentPlatform parentPlatform, String content, String viaTag, String fromTag, String toTag) throws ParseException, InvalidArgumentException, PeerUnavailableException {
  43 + public Request createKeetpaliveMessageRequest(ParentPlatform parentPlatform, String content, String viaTag, String fromTag, String toTag, CallIdHeader callIdHeader) throws ParseException, InvalidArgumentException, PeerUnavailableException {
44 44 Request request = null;
45 45 // sipuri
46 46 SipURI requestURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerIP() + ":" + parentPlatform.getServerPort());
... ... @@ -59,9 +59,8 @@ public class SIPRequestHeaderPlarformProvider {
59 59 SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerIP() + ":" + parentPlatform.getServerPort() );
60 60 Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
61 61 ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress, toTag);
62   - // callid
63   - CallIdHeader callIdHeader = parentPlatform.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
64   - : udpSipProvider.getNewCallId();
  62 +
  63 +
65 64 // Forwards
66 65 MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70);
67 66 // ceq
... ... @@ -75,7 +74,7 @@ public class SIPRequestHeaderPlarformProvider {
75 74 }
76 75  
77 76  
78   - public Request createRegisterRequest(@NotNull ParentPlatform platform, long CSeq, String fromTag, String viaTag) throws ParseException, InvalidArgumentException, PeerUnavailableException {
  77 + public Request createRegisterRequest(@NotNull ParentPlatform platform, long CSeq, String fromTag, String viaTag, CallIdHeader callIdHeader) throws ParseException, InvalidArgumentException, PeerUnavailableException {
79 78 Request request = null;
80 79 String sipAddress = sipConfig.getSipIp() + ":" + sipConfig.getSipPort();
81 80 //请求行
... ... @@ -95,14 +94,7 @@ public class SIPRequestHeaderPlarformProvider {
95 94 Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
96 95 ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress,null);
97 96  
98   - //callid
99   - CallIdHeader callIdHeader = null;
100   - if(platform.getTransport().equals("TCP")) {
101   - callIdHeader = tcpSipProvider.getNewCallId();
102   - }
103   - if(platform.getTransport().equals("UDP")) {
104   - callIdHeader = udpSipProvider.getNewCallId();
105   - }
  97 +
106 98  
107 99 //Forwards
108 100 MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70);
... ... @@ -123,8 +115,10 @@ public class SIPRequestHeaderPlarformProvider {
123 115 }
124 116  
125 117 public Request createRegisterRequest(@NotNull ParentPlatform parentPlatform, String fromTag, String viaTag,
126   - String callId, WWWAuthenticateHeader www ) throws ParseException, PeerUnavailableException, InvalidArgumentException {
127   - Request registerRequest = createRegisterRequest(parentPlatform, 2L, fromTag, viaTag);
  118 + String callId, WWWAuthenticateHeader www , CallIdHeader callIdHeader) throws ParseException, PeerUnavailableException, InvalidArgumentException {
  119 +
  120 +
  121 + Request registerRequest = createRegisterRequest(parentPlatform, 2L, fromTag, viaTag, callIdHeader);
128 122  
129 123 String realm = www.getRealm();
130 124 String nonce = www.getNonce();
... ... @@ -134,10 +128,8 @@ public class SIPRequestHeaderPlarformProvider {
134 128 // qop 保护质量 包含auth(默认的)和auth-int(增加了报文完整性检测)两种策略
135 129 String qop = www.getQop();
136 130  
137   - CallIdHeader callIdHeader = (CallIdHeader)registerRequest.getHeader(CallIdHeader.NAME);
138 131 callIdHeader.setCallId(callId);
139 132  
140   -
141 133 SipURI requestURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerIP() + ":" + parentPlatform.getServerPort());
142 134 String cNonce = null;
143 135 String nc = "00000001";
... ... @@ -189,7 +181,7 @@ public class SIPRequestHeaderPlarformProvider {
189 181 }
190 182  
191 183  
192   - public Request createMessageRequest(ParentPlatform parentPlatform, String content, String fromTag) throws PeerUnavailableException, ParseException, InvalidArgumentException {
  184 + public Request createMessageRequest(ParentPlatform parentPlatform, String content, String fromTag, CallIdHeader callIdHeader) throws PeerUnavailableException, ParseException, InvalidArgumentException {
193 185 Request request = null;
194 186 // sipuri
195 187 SipURI requestURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerIP()+ ":" + parentPlatform.getServerPort());
... ... @@ -208,9 +200,7 @@ public class SIPRequestHeaderPlarformProvider {
208 200 SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getDeviceGBId(), parentPlatform.getServerGBDomain());
209 201 Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
210 202 ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress, null);
211   - // callid
212   - CallIdHeader callIdHeader = parentPlatform.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
213   - : udpSipProvider.getNewCallId();
  203 +
214 204 // Forwards
215 205 MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70);
216 206 // ceq
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java
... ... @@ -33,15 +33,7 @@ public class SIPRequestHeaderProvider {
33 33 @Autowired
34 34 private SipFactory sipFactory;
35 35  
36   - @Autowired
37   - @Qualifier(value="tcpSipProvider")
38   - private SipProvider tcpSipProvider;
39   -
40   - @Autowired
41   - @Qualifier(value="udpSipProvider")
42   - private SipProvider udpSipProvider;
43   -
44   - public Request createMessageRequest(Device device, String content, String viaTag, String fromTag, String toTag) throws ParseException, InvalidArgumentException, PeerUnavailableException {
  36 + public Request createMessageRequest(Device device, String content, String viaTag, String fromTag, String toTag, CallIdHeader callIdHeader) throws ParseException, InvalidArgumentException, PeerUnavailableException {
45 37 Request request = null;
46 38 // sipuri
47 39 SipURI requestURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
... ... @@ -60,9 +52,7 @@ public class SIPRequestHeaderProvider {
60 52 SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), sipConfig.getSipDomain());
61 53 Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
62 54 ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress, toTag);
63   - // callid
64   - CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
65   - : udpSipProvider.getNewCallId();
  55 +
66 56 // Forwards
67 57 MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70);
68 58 // ceq
... ... @@ -75,7 +65,7 @@ public class SIPRequestHeaderProvider {
75 65 return request;
76 66 }
77 67  
78   - public Request createInviteRequest(Device device, String channelId, String content, String viaTag, String fromTag, String toTag, String ssrc) throws ParseException, InvalidArgumentException, PeerUnavailableException {
  68 + public Request createInviteRequest(Device device, String channelId, String content, String viaTag, String fromTag, String toTag, String ssrc, CallIdHeader callIdHeader) throws ParseException, InvalidArgumentException, PeerUnavailableException {
79 69 Request request = null;
80 70 //请求行
81 71 SipURI requestLine = sipFactory.createAddressFactory().createSipURI(channelId, device.getHostAddress());
... ... @@ -93,15 +83,6 @@ public class SIPRequestHeaderProvider {
93 83 SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(channelId,sipConfig.getSipDomain());
94 84 Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
95 85 ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress,null);
96   -
97   - //callid
98   - CallIdHeader callIdHeader = null;
99   - if(device.getTransport().equals("TCP")) {
100   - callIdHeader = tcpSipProvider.getNewCallId();
101   - }
102   - if(device.getTransport().equals("UDP")) {
103   - callIdHeader = udpSipProvider.getNewCallId();
104   - }
105 86  
106 87 //Forwards
107 88 MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70);
... ... @@ -121,7 +102,7 @@ public class SIPRequestHeaderProvider {
121 102 return request;
122 103 }
123 104  
124   - public Request createPlaybackInviteRequest(Device device, String channelId, String content, String viaTag, String fromTag, String toTag) throws ParseException, InvalidArgumentException, PeerUnavailableException {
  105 + public Request createPlaybackInviteRequest(Device device, String channelId, String content, String viaTag, String fromTag, String toTag, CallIdHeader callIdHeader) throws ParseException, InvalidArgumentException, PeerUnavailableException {
125 106 Request request = null;
126 107 //请求行
127 108 SipURI requestLine = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
... ... @@ -138,15 +119,6 @@ public class SIPRequestHeaderProvider {
138 119 SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(channelId,sipConfig.getSipDomain());
139 120 Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
140 121 ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress,null);
141   -
142   - //callid
143   - CallIdHeader callIdHeader = null;
144   - if(device.getTransport().equals("TCP")) {
145   - callIdHeader = tcpSipProvider.getNewCallId();
146   - }
147   - if(device.getTransport().equals("UDP")) {
148   - callIdHeader = udpSipProvider.getNewCallId();
149   - }
150 122  
151 123 //Forwards
152 124 MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70);
... ... @@ -164,7 +136,7 @@ public class SIPRequestHeaderProvider {
164 136 return request;
165 137 }
166 138  
167   - public Request createSubscribeRequest(Device device, String content, String viaTag, String fromTag, String toTag, Integer expires, String event) throws ParseException, InvalidArgumentException, PeerUnavailableException {
  139 + public Request createSubscribeRequest(Device device, String content, String viaTag, String fromTag, String toTag, Integer expires, String event, CallIdHeader callIdHeader) throws ParseException, InvalidArgumentException, PeerUnavailableException {
168 140 Request request = null;
169 141 // sipuri
170 142 SipURI requestURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
... ... @@ -183,9 +155,7 @@ public class SIPRequestHeaderProvider {
183 155 SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), sipConfig.getSipDomain());
184 156 Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
185 157 ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress, toTag);
186   - // callid
187   - CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
188   - : udpSipProvider.getNewCallId();
  158 +
189 159 // Forwards
190 160 MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70);
191 161 // ceq
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
... ... @@ -23,6 +23,9 @@ import org.slf4j.LoggerFactory;
23 23 import org.springframework.beans.factory.annotation.Autowired;
24 24 import org.springframework.beans.factory.annotation.Qualifier;
25 25 import org.springframework.beans.factory.annotation.Value;
  26 +import org.springframework.context.annotation.ComponentScan;
  27 +import org.springframework.context.annotation.DependsOn;
  28 +import org.springframework.context.annotation.Lazy;
26 29 import org.springframework.stereotype.Component;
27 30  
28 31 import com.genersoft.iot.vmp.conf.SipConfig;
... ... @@ -40,13 +43,25 @@ import com.genersoft.iot.vmp.gb28181.utils.XmlUtil;
40 43 * @date: 2020年5月3日 下午9:22:48
41 44 */
42 45 @Component
  46 +@DependsOn("sipLayer")
43 47 public class SIPCommander implements ISIPCommander {
44 48  
45 49 private final Logger logger = LoggerFactory.getLogger(SIPCommander.class);
46   -
  50 +
  51 +
47 52 @Autowired
48 53 private SipConfig sipConfig;
49   -
  54 +
  55 + @Lazy
  56 + @Autowired
  57 + @Qualifier(value="tcpSipProvider")
  58 + private SipProvider tcpSipProvider;
  59 +
  60 + @Lazy
  61 + @Autowired
  62 + @Qualifier(value="udpSipProvider")
  63 + private SipProvider udpSipProvider;
  64 +
50 65 @Autowired
51 66 private SIPRequestHeaderProvider headerProvider;
52 67  
... ... @@ -58,14 +73,6 @@ public class SIPCommander implements ISIPCommander {
58 73  
59 74 @Autowired
60 75 private IRedisCatchStorage redisCatchStorage;
61   -
62   - @Autowired
63   - @Qualifier(value="tcpSipProvider")
64   - private SipProvider tcpSipProvider;
65   -
66   - @Autowired
67   - @Qualifier(value="udpSipProvider")
68   - private SipProvider udpSipProvider;
69 76  
70 77 @Autowired
71 78 private ZLMRTPServerFactory zlmrtpServerFactory;
... ... @@ -235,7 +242,11 @@ public class SIPCommander implements ISIPCommander {
235 242 ptzXml.append("</Control>\r\n");
236 243  
237 244 String tm = Long.toString(System.currentTimeMillis());
238   - Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "z9hG4bK-ViaPtz-" + tm, "FromPtz" + tm, null);
  245 +
  246 + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  247 + : udpSipProvider.getNewCallId();
  248 +
  249 + Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "z9hG4bK-ViaPtz-" + tm, "FromPtz" + tm, null, callIdHeader);
239 250  
240 251 transmitRequest(device, request);
241 252 return true;
... ... @@ -272,7 +283,11 @@ public class SIPCommander implements ISIPCommander {
272 283 ptzXml.append("</Control>\r\n");
273 284  
274 285 String tm = Long.toString(System.currentTimeMillis());
275   - Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "z9hG4bK-ViaPtz-" + tm, "FromPtz" + tm, null);
  286 +
  287 + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  288 + : udpSipProvider.getNewCallId();
  289 +
  290 + Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "z9hG4bK-ViaPtz-" + tm, "FromPtz" + tm, null, callIdHeader);
276 291 transmitRequest(device, request);
277 292 return true;
278 293 } catch (SipException | ParseException | InvalidArgumentException e) {
... ... @@ -302,7 +317,11 @@ public class SIPCommander implements ISIPCommander {
302 317 ptzXml.append("</Control>\r\n");
303 318  
304 319 String tm = Long.toString(System.currentTimeMillis());
305   - Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "z9hG4bK-ViaPtz-" + tm, "FromPtz" + tm, null);
  320 +
  321 + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  322 + : udpSipProvider.getNewCallId();
  323 +
  324 + Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "z9hG4bK-ViaPtz-" + tm, "FromPtz" + tm, null, callIdHeader);
306 325 transmitRequest(device, request);
307 326 return true;
308 327 } catch (SipException | ParseException | InvalidArgumentException e) {
... ... @@ -414,7 +433,11 @@ public class SIPCommander implements ISIPCommander {
414 433 content.append("y="+ssrc+"\r\n");//ssrc
415 434  
416 435 String tm = Long.toString(System.currentTimeMillis());
417   - Request request = headerProvider.createInviteRequest(device, channelId, content.toString(), null, "FromInvt" + tm, null, ssrc);
  436 +
  437 + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  438 + : udpSipProvider.getNewCallId();
  439 +
  440 + Request request = headerProvider.createInviteRequest(device, channelId, content.toString(), null, "FromInvt" + tm, null, ssrc, callIdHeader);
418 441  
419 442 ClientTransaction transaction = transmitRequest(device, request, errorEvent);
420 443 streamSession.put(streamId,ssrc, transaction);
... ... @@ -512,7 +535,11 @@ public class SIPCommander implements ISIPCommander {
512 535 content.append("y="+ssrc+"\r\n");//ssrc
513 536  
514 537 String tm = Long.toString(System.currentTimeMillis());
515   - Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, "fromplybck" + tm, null);
  538 +
  539 + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  540 + : udpSipProvider.getNewCallId();
  541 +
  542 + Request request = headerProvider.createPlaybackInviteRequest(device, channelId, content.toString(), null, "fromplybck" + tm, null, callIdHeader);
516 543  
517 544 ClientTransaction transaction = transmitRequest(device, request, errorEvent);
518 545 streamSession.put(streamId, ssrc, transaction);
... ... @@ -624,7 +651,11 @@ public class SIPCommander implements ISIPCommander {
624 651 cmdXml.append("</Control>\r\n");
625 652  
626 653 String tm = Long.toString(System.currentTimeMillis());
627   - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromRecord" + tm, null);
  654 +
  655 + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  656 + : udpSipProvider.getNewCallId();
  657 +
  658 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromRecord" + tm, null, callIdHeader);
628 659 transmitRequest(device, request, errorEvent);
629 660 return true;
630 661 } catch (SipException | ParseException | InvalidArgumentException e) {
... ... @@ -651,7 +682,11 @@ public class SIPCommander implements ISIPCommander {
651 682 cmdXml.append("</Control>\r\n");
652 683  
653 684 String tm = Long.toString(System.currentTimeMillis());
654   - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromBoot" + tm, null);
  685 +
  686 + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  687 + : udpSipProvider.getNewCallId();
  688 +
  689 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromBoot" + tm, null, callIdHeader);
655 690 transmitRequest(device, request);
656 691 return true;
657 692 } catch (SipException | ParseException | InvalidArgumentException e) {
... ... @@ -679,7 +714,11 @@ public class SIPCommander implements ISIPCommander {
679 714 cmdXml.append("</Control>\r\n");
680 715  
681 716 String tm = Long.toString(System.currentTimeMillis());
682   - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromGuard" + tm, null);
  717 +
  718 + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  719 + : udpSipProvider.getNewCallId();
  720 +
  721 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromGuard" + tm, null, callIdHeader);
683 722 transmitRequest(device, request, errorEvent);
684 723 return true;
685 724 } catch (SipException | ParseException | InvalidArgumentException e) {
... ... @@ -718,7 +757,11 @@ public class SIPCommander implements ISIPCommander {
718 757 cmdXml.append("</Control>\r\n");
719 758  
720 759 String tm = Long.toString(System.currentTimeMillis());
721   - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromAlarm" + tm, null);
  760 +
  761 + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  762 + : udpSipProvider.getNewCallId();
  763 +
  764 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromAlarm" + tm, null, callIdHeader);
722 765 transmitRequest(device, request, errorEvent);
723 766 return true;
724 767 } catch (SipException | ParseException | InvalidArgumentException e) {
... ... @@ -750,7 +793,11 @@ public class SIPCommander implements ISIPCommander {
750 793 cmdXml.append("</Control>\r\n");
751 794  
752 795 String tm = Long.toString(System.currentTimeMillis());
753   - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromBoot" + tm, null);
  796 +
  797 + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  798 + : udpSipProvider.getNewCallId();
  799 +
  800 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromBoot" + tm, null, callIdHeader);
754 801 transmitRequest(device, request);
755 802 return true;
756 803 } catch (SipException | ParseException | InvalidArgumentException e) {
... ... @@ -800,7 +847,11 @@ public class SIPCommander implements ISIPCommander {
800 847 cmdXml.append("</Control>\r\n");
801 848  
802 849 String tm = Long.toString(System.currentTimeMillis());
803   - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromGuard" + tm, null);
  850 +
  851 + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  852 + : udpSipProvider.getNewCallId();
  853 +
  854 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromGuard" + tm, null, callIdHeader);
804 855 transmitRequest(device, request, errorEvent);
805 856 return true;
806 857 } catch (SipException | ParseException | InvalidArgumentException e) {
... ... @@ -867,7 +918,11 @@ public class SIPCommander implements ISIPCommander {
867 918 cmdXml.append("</Control>\r\n");
868 919  
869 920 String tm = Long.toString(System.currentTimeMillis());
870   - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromConfig" + tm, null);
  921 +
  922 + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  923 + : udpSipProvider.getNewCallId();
  924 +
  925 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromConfig" + tm, null, callIdHeader);
871 926 transmitRequest(device, request, errorEvent);
872 927 return true;
873 928 } catch (SipException | ParseException | InvalidArgumentException e) {
... ... @@ -893,7 +948,11 @@ public class SIPCommander implements ISIPCommander {
893 948 catalogXml.append("</Query>\r\n");
894 949  
895 950 String tm = Long.toString(System.currentTimeMillis());
896   - Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), null, "FromStatus" + tm, null);
  951 +
  952 + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  953 + : udpSipProvider.getNewCallId();
  954 +
  955 + Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), null, "FromStatus" + tm, null, callIdHeader);
897 956  
898 957 transmitRequest(device, request, errorEvent);
899 958 return true;
... ... @@ -921,7 +980,11 @@ public class SIPCommander implements ISIPCommander {
921 980 catalogXml.append("</Query>\r\n");
922 981  
923 982 String tm = Long.toString(System.currentTimeMillis());
924   - Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), "z9hG4bK-ViaDeviceInfo-" + tm, "FromDev" + tm, null);
  983 +
  984 + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  985 + : udpSipProvider.getNewCallId();
  986 +
  987 + Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), "z9hG4bK-ViaDeviceInfo-" + tm, "FromDev" + tm, null, callIdHeader);
925 988  
926 989 transmitRequest(device, request);
927 990  
... ... @@ -951,7 +1014,11 @@ public class SIPCommander implements ISIPCommander {
951 1014 catalogXml.append("</Query>\r\n");
952 1015  
953 1016 String tm = Long.toString(System.currentTimeMillis());
954   - Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), "z9hG4bK-ViaCatalog-" + tm, "FromCat" + tm, null);
  1017 +
  1018 + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  1019 + : udpSipProvider.getNewCallId();
  1020 +
  1021 + Request request = headerProvider.createMessageRequest(device, catalogXml.toString(), "z9hG4bK-ViaCatalog-" + tm, "FromCat" + tm, null, callIdHeader);
955 1022  
956 1023 transmitRequest(device, request, errorEvent);
957 1024 } catch (SipException | ParseException | InvalidArgumentException e) {
... ... @@ -986,7 +1053,12 @@ public class SIPCommander implements ISIPCommander {
986 1053 recordInfoXml.append("</Query>\r\n");
987 1054  
988 1055 String tm = Long.toString(System.currentTimeMillis());
989   - Request request = headerProvider.createMessageRequest(device, recordInfoXml.toString(), "z9hG4bK-ViaRecordInfo-" + tm, "fromRec" + tm, null);
  1056 +
  1057 + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  1058 + : udpSipProvider.getNewCallId();
  1059 +
  1060 + Request request = headerProvider.createMessageRequest(device, recordInfoXml.toString(),
  1061 + "z9hG4bK-ViaRecordInfo-" + tm, "fromRec" + tm, null, callIdHeader);
990 1062  
991 1063 transmitRequest(device, request);
992 1064 } catch (SipException | ParseException | InvalidArgumentException e) {
... ... @@ -1039,7 +1111,11 @@ public class SIPCommander implements ISIPCommander {
1039 1111 cmdXml.append("</Query>\r\n");
1040 1112  
1041 1113 String tm = Long.toString(System.currentTimeMillis());
1042   - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromAlarm" + tm, null);
  1114 +
  1115 + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  1116 + : udpSipProvider.getNewCallId();
  1117 +
  1118 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromAlarm" + tm, null, callIdHeader);
1043 1119 transmitRequest(device, request, errorEvent);
1044 1120 return true;
1045 1121 } catch (SipException | ParseException | InvalidArgumentException e) {
... ... @@ -1072,7 +1148,11 @@ public class SIPCommander implements ISIPCommander {
1072 1148 cmdXml.append("</Query>\r\n");
1073 1149  
1074 1150 String tm = Long.toString(System.currentTimeMillis());
1075   - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromConfig" + tm, null);
  1151 +
  1152 + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  1153 + : udpSipProvider.getNewCallId();
  1154 +
  1155 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromConfig" + tm, null, callIdHeader);
1076 1156 transmitRequest(device, request, errorEvent);
1077 1157 return true;
1078 1158 } catch (SipException | ParseException | InvalidArgumentException e) {
... ... @@ -1102,7 +1182,11 @@ public class SIPCommander implements ISIPCommander {
1102 1182 cmdXml.append("</Query>\r\n");
1103 1183  
1104 1184 String tm = Long.toString(System.currentTimeMillis());
1105   - Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromConfig" + tm, null);
  1185 +
  1186 + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  1187 + : udpSipProvider.getNewCallId();
  1188 +
  1189 + Request request = headerProvider.createMessageRequest(device, cmdXml.toString(), null, "FromConfig" + tm, null, callIdHeader);
1106 1190 transmitRequest(device, request, errorEvent);
1107 1191 return true;
1108 1192 } catch (SipException | ParseException | InvalidArgumentException e) {
... ... @@ -1129,7 +1213,11 @@ public class SIPCommander implements ISIPCommander {
1129 1213 mobilePostitionXml.append("</Query>\r\n");
1130 1214  
1131 1215 String tm = Long.toString(System.currentTimeMillis());
1132   - Request request = headerProvider.createMessageRequest(device, mobilePostitionXml.toString(), "z9hG4bK-viaPos-" + tm, "fromTagPos" + tm, null);
  1216 +
  1217 + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  1218 + : udpSipProvider.getNewCallId();
  1219 +
  1220 + Request request = headerProvider.createMessageRequest(device, mobilePostitionXml.toString(), "z9hG4bK-viaPos-" + tm, "fromTagPos" + tm, null, callIdHeader);
1133 1221  
1134 1222 transmitRequest(device, request, errorEvent);
1135 1223  
... ... @@ -1162,7 +1250,11 @@ public class SIPCommander implements ISIPCommander {
1162 1250 subscribePostitionXml.append("</Query>\r\n");
1163 1251  
1164 1252 String tm = Long.toString(System.currentTimeMillis());
1165   - Request request = headerProvider.createSubscribeRequest(device, subscribePostitionXml.toString(), "z9hG4bK-viaPos-" + tm, "fromTagPos" + tm, null, expires, "presence" ); //Position;id=" + tm.substring(tm.length() - 4));
  1253 +
  1254 + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  1255 + : udpSipProvider.getNewCallId();
  1256 +
  1257 + Request request = headerProvider.createSubscribeRequest(device, subscribePostitionXml.toString(), "z9hG4bK-viaPos-" + tm, "fromTagPos" + tm, null, expires, "presence" ,callIdHeader); //Position;id=" + tm.substring(tm.length() - 4));
1166 1258 transmitRequest(device, request);
1167 1259  
1168 1260 return true;
... ... @@ -1215,7 +1307,11 @@ public class SIPCommander implements ISIPCommander {
1215 1307 cmdXml.append("</Query>\r\n");
1216 1308  
1217 1309 String tm = Long.toString(System.currentTimeMillis());
1218   - Request request = headerProvider.createSubscribeRequest(device, cmdXml.toString(), "z9hG4bK-viaPos-" + tm, "fromTagPos" + tm, null, expires, "presence" );
  1310 +
  1311 + CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  1312 + : udpSipProvider.getNewCallId();
  1313 +
  1314 + Request request = headerProvider.createSubscribeRequest(device, cmdXml.toString(), "z9hG4bK-viaPos-" + tm, "fromTagPos" + tm, null, expires, "presence" , callIdHeader);
1219 1315 transmitRequest(device, request);
1220 1316  
1221 1317 return true;
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
... ... @@ -15,6 +15,9 @@ import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
15 15 import org.springframework.beans.factory.annotation.Autowired;
16 16 import org.springframework.beans.factory.annotation.Qualifier;
17 17 import org.springframework.beans.factory.annotation.Value;
  18 +import org.springframework.context.annotation.ComponentScan;
  19 +import org.springframework.context.annotation.DependsOn;
  20 +import org.springframework.context.annotation.Lazy;
18 21 import org.springframework.lang.Nullable;
19 22 import org.springframework.stereotype.Component;
20 23  
... ... @@ -26,6 +29,7 @@ import java.text.ParseException;
26 29 import java.util.UUID;
27 30  
28 31 @Component
  32 +@DependsOn("sipLayer")
29 33 public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
30 34  
31 35 // @Autowired
... ... @@ -49,10 +53,12 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
49 53 @Autowired
50 54 private SipSubscribe sipSubscribe;
51 55  
  56 + @Lazy
52 57 @Autowired
53 58 @Qualifier(value="tcpSipProvider")
54 59 private SipProvider tcpSipProvider;
55 60  
  61 + @Lazy
56 62 @Autowired
57 63 @Qualifier(value="udpSipProvider")
58 64 private SipProvider udpSipProvider;
... ... @@ -83,19 +89,30 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
83 89 Request request = null;
84 90  
85 91 if (www == null ) {
86   - request = headerProviderPlarformProvider.createRegisterRequest(parentPlatform, 1L, null, null);
  92 + // //callid
  93 + CallIdHeader callIdHeader = null;
  94 + if(parentPlatform.getTransport().equals("TCP")) {
  95 + callIdHeader = tcpSipProvider.getNewCallId();
  96 + }
  97 + if(parentPlatform.getTransport().equals("UDP")) {
  98 + callIdHeader = udpSipProvider.getNewCallId();
  99 + }
  100 + request = headerProviderPlarformProvider.createRegisterRequest(parentPlatform, 1L, null, null, callIdHeader);
87 101 // 将 callid 写入缓存, 等注册成功可以更新状态
88   - CallIdHeader callIdHeader = (CallIdHeader)request.getHeader(CallIdHeader.NAME);
89 102 redisCatchStorage.updatePlatformRegisterInfo(callIdHeader.getCallId(), parentPlatform.getServerGBId());
90 103  
  104 + CallIdHeader finalCallIdHeader = callIdHeader;
91 105 sipSubscribe.addErrorSubscribe(callIdHeader.getCallId(), (event)->{
92   - redisCatchStorage.delPlatformRegisterInfo(callIdHeader.getCallId());
  106 + redisCatchStorage.delPlatformRegisterInfo(finalCallIdHeader.getCallId());
93 107 if (errorEvent != null) {
94 108 errorEvent.response(event);
95 109 }
96 110 });
97 111 }else {
98   - request = headerProviderPlarformProvider.createRegisterRequest(parentPlatform, null, null, callId, www);
  112 + CallIdHeader callIdHeader = parentPlatform.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  113 + : udpSipProvider.getNewCallId();
  114 +
  115 + request = headerProviderPlarformProvider.createRegisterRequest(parentPlatform, null, null, callId, www, callIdHeader);
99 116 }
100 117  
101 118 transmitRequest(parentPlatform, request, null, okEvent);
... ... @@ -126,14 +143,17 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
126 143 keepaliveXml.append("<Status>OK</Status>\r\n");
127 144 keepaliveXml.append("</Notify>\r\n");
128 145  
  146 + CallIdHeader callIdHeader = parentPlatform.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  147 + : udpSipProvider.getNewCallId();
  148 +
129 149 Request request = headerProviderPlarformProvider.createKeetpaliveMessageRequest(
130 150 parentPlatform,
131 151 keepaliveXml.toString(),
132 152 "z9hG4bK-" + UUID.randomUUID().toString().replace("-", ""),
133 153 UUID.randomUUID().toString().replace("-", ""),
134   - null);
  154 + null,
  155 + callIdHeader);
135 156 transmitRequest(parentPlatform, request);
136   - CallIdHeader callIdHeader = (CallIdHeader)request.getHeader(CallIdHeader.NAME);
137 157 callId = callIdHeader.getCallId();
138 158 } catch (ParseException | InvalidArgumentException | SipException e) {
139 159 e.printStackTrace();
... ... @@ -208,7 +228,12 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
208 228 catalogXml.append("</Item>\r\n");
209 229 catalogXml.append("</DeviceList>\r\n");
210 230 catalogXml.append("</Response>\r\n");
211   - Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, catalogXml.toString(), fromTag);
  231 +
  232 + // callid
  233 + CallIdHeader callIdHeader = parentPlatform.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  234 + : udpSipProvider.getNewCallId();
  235 +
  236 + Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, catalogXml.toString(), fromTag, callIdHeader);
212 237 transmitRequest(parentPlatform, request);
213 238  
214 239 } catch (SipException | ParseException | InvalidArgumentException e) {
... ... @@ -243,7 +268,11 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
243 268 deviceInfoXml.append("<Firmware>2.0.202103</Firmware>\r\n");
244 269 deviceInfoXml.append("<Result>OK</Result>\r\n");
245 270 deviceInfoXml.append("</Response>\r\n");
246   - Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, deviceInfoXml.toString(), fromTag);
  271 +
  272 + CallIdHeader callIdHeader = parentPlatform.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  273 + : udpSipProvider.getNewCallId();
  274 +
  275 + Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, deviceInfoXml.toString(), fromTag, callIdHeader);
247 276 transmitRequest(parentPlatform, request);
248 277  
249 278 } catch (SipException | ParseException | InvalidArgumentException e) {
... ... @@ -276,7 +305,11 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
276 305 deviceStatusXml.append("<Online>ONLINE</Online>\r\n");
277 306 deviceStatusXml.append("<Status>OK</Status>\r\n");
278 307 deviceStatusXml.append("</Response>\r\n");
279   - Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, deviceStatusXml.toString(), fromTag);
  308 +
  309 + CallIdHeader callIdHeader = parentPlatform.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
  310 + : udpSipProvider.getNewCallId();
  311 +
  312 + Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, deviceStatusXml.toString(), fromTag, callIdHeader);
280 313 transmitRequest(parentPlatform, request);
281 314  
282 315 } catch (SipException | ParseException | InvalidArgumentException e) {
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/AckRequestProcessor.java
... ... @@ -37,7 +37,7 @@ public class AckRequestProcessor extends SIPRequestAbstractProcessor {
37 37 Dialog dialog = evt.getDialog();
38 38 if (dialog == null) return;
39 39 //DialogState state = dialog.getState();
40   - if (/*request.getMethod().equals(Request.INVITE) &&*/ dialog.getState()== DialogState.CONFIRMED) {
  40 + if (/*request.getMecodewwthod().equals(Request.INVITE) &&*/ dialog.getState()== DialogState.CONFIRMED) {
41 41 String platformGbId = ((SipURI) ((HeaderAddress) evt.getRequest().getHeader(FromHeader.NAME)).getAddress().getURI()).getUser();
42 42 String channelId = ((SipURI) ((HeaderAddress) evt.getRequest().getHeader(ToHeader.NAME)).getAddress().getURI()).getUser();
43 43 SendRtpItem sendRtpItem = redisCatchStorage.querySendRTPServer(platformGbId, channelId);
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/InviteRequestProcessor.java
... ... @@ -237,7 +237,7 @@ public class InviteRequestProcessor extends SIPRequestAbstractProcessor {
237 237 * @throws ParseException
238 238 */
239 239 private void responseAck(RequestEvent evt, int statusCode) throws SipException, InvalidArgumentException, ParseException {
240   - Response response = getMessageFactory().createResponse(Response.TRYING, evt.getRequest());
  240 + Response response = getMessageFactory().createResponse(statusCode, evt.getRequest());
241 241 getServerTransaction(evt).sendResponse(response);
242 242 }
243 243  
... ...
src/main/resources/application-dev.yml
... ... @@ -11,7 +11,7 @@ spring:
11 11 password:
12 12 # [可选] 超时时间
13 13 timeout: 10000
14   - # [不可用] jdbc数据库配置, 暂不支持
  14 + # [可选] jdbc数据库配置, 项目使用sqlite作为数据库,一般不需要配置
15 15 datasource:
16 16 # name: eiot
17 17 # url: jdbc:mysql://127.0.0.1:3306/eiot?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true
... ...
web_src/package-lock.json
... ... @@ -124,7 +124,6 @@
124 124 "version": "1.0.10",
125 125 "resolved": "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz",
126 126 "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=",
127   - "dev": true,
128 127 "requires": {
129 128 "sprintf-js": "~1.0.2"
130 129 }
... ...