Maven Jetty не отключается должным образом в затмении - PullRequest
2 голосов
/ 24 мая 2009

В настоящее время я использую Jetty из Eclipse в качестве внешней Java-программы. Проблема в том, что когда я прекращаю работу Jetty и пытаюсь снова запустить ее, это невозможно, поскольку порт все еще используется.

Что мне нужно сделать, это открыть диспетчер задач Windows и вручную завершить процесс Java. Как сделать так, чтобы пристань хорошо закрывалась / прекращалась / заканчивалась?

Ниже приведены настройки приложения Maven Jetty

Аргументы: пристань: беги-война

MAVEN_OPTS: -Xdebug -Xnoagent -Djava.compiler = NONE -Xrunjdwp: транспорт = dt_socket, адрес = 8080, сервер = y, приостановить = y

Установка suspend = n, похоже, тоже не решает проблему.

Ответы [ 4 ]

1 голос
/ 28 мая 2009

Если Java-приложение не закрывается, это из-за живого потока, не являющегося демоном. Попробуйте получить дамп потока работающего процесса maven, например, используя VisualVM и посмотрите, что поддерживает приложение в действии.

0 голосов
/ 02 июня 2009

Кажется, я забыл поставить галочку «Разрешить завершение удаленной ВМ». Странно, что раньше это не сработало.

0 голосов
/ 28 мая 2009

Я не знаком с плагином maven, но при запуске jetty с помощью start.jar вы можете использовать stop.jar, чтобы он корректно завершил работу (начиная с версии 4.something).

<b>Stopping Jetty</b>
<P>
Programs started with the start.jar mechanism may be stopped with the
stop.jar:

<pre>
   <b>java -jar stop.jar</b>
Это подключается через локальный порт для остановки сервера. Порт по умолчанию может быть установлен с системным свойством STOP.PORT

Источник

В качестве альтернативы, и, возможно, вам больше по вкусу, вы можете сделать это в Eclipse, написав такой класс и запустив метод main:


   package mypackage;  

   import java.io.OutputStream;  
   import java.net.InetAddress;  
   import java.net.Socket;  

   public class Stop {  
       public static final int PORT = 8079; //Change to whatever your port is, 8079 is default

       public static void main(String[] args) throws Exception {  
          Socket s = new Socket(InetAddress.getByName("127.0.0.1"), PORT);  
          OutputStream out = s.getOutputStream();  
          System.out.println("*** sending jetty stop request");  
          out.write(("\r\n").getBytes());  
          out.flush();  
          s.close();  
      }  

  }  

Источник

0 голосов
/ 24 мая 2009

Вы можете запустить приложение через плагин Eclipse 'Run Jetty Run', а не плагин Maven jetty. Eclipse имеет более прямой контроль над новой JVM, чем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...