ServerController.java 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package com.genersoft.iot.vmp.vmanager.server;
  2. import com.genersoft.iot.vmp.VManageBootstrap;
  3. import com.genersoft.iot.vmp.utils.SpringBeanFactory;
  4. import gov.nist.javax.sip.SipStackImpl;
  5. import io.swagger.annotations.Api;
  6. import io.swagger.annotations.ApiOperation;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.context.ConfigurableApplicationContext;
  9. import org.springframework.web.bind.annotation.*;
  10. import javax.sip.ListeningPoint;
  11. import javax.sip.ObjectInUseException;
  12. import javax.sip.SipProvider;
  13. import java.util.Iterator;
  14. @Api(tags = "服务控制")
  15. @CrossOrigin
  16. @RestController
  17. @RequestMapping("/api/server")
  18. public class ServerController {
  19. @Autowired
  20. private ConfigurableApplicationContext context;
  21. @ApiOperation("重启服务")
  22. @GetMapping(value = "/restart")
  23. @ResponseBody
  24. public Object restart(){
  25. Thread restartThread = new Thread(new Runnable() {
  26. @Override
  27. public void run() {
  28. try {
  29. Thread.sleep(3000);
  30. SipProvider up = (SipProvider) SpringBeanFactory.getBean("udpSipProvider");
  31. SipStackImpl stack = (SipStackImpl)up.getSipStack();
  32. stack.stop();
  33. Iterator listener = stack.getListeningPoints();
  34. while (listener.hasNext()) {
  35. stack.deleteListeningPoint((ListeningPoint) listener.next());
  36. }
  37. Iterator providers = stack.getSipProviders();
  38. while (providers.hasNext()) {
  39. stack.deleteSipProvider((SipProvider) providers.next());
  40. }
  41. VManageBootstrap.restart();
  42. } catch (InterruptedException ignored) {
  43. } catch (ObjectInUseException e) {
  44. e.printStackTrace();
  45. }
  46. }
  47. });
  48. restartThread.setDaemon(false);
  49. restartThread.start();
  50. return "success";
  51. }
  52. }