Tomcat не удалось завершить работу

Вы можете сделать это, обработав результат из своей записи:

result = ['1', None, 's', '1']

for idx, item in enumerate(result):
    try:
        result[idx] = int(item)
    except:
        if item == 'None':
            result[idx] = None

>>> result
[1, None, 's', 1]
27
задан THelper 2 May 2012 в 11:41
поделиться

5 ответов

Спасибо за хорошее краткое объяснение, PHeath! Следуя вашим советам, я обнаружил, что лучший способ решить эту проблему - просто использовать CATALINA_OPTS вместо JAVA_OPTS .

Глядя на catalina.sh, можно увидеть, что CATALINA_OPTS используется только командами «start» и «start-security», тогда как JAVA_OPTS также используется командой «stop» (по крайней мере, с Tomcat 6.0.33 в openSUSE 12.1).

По крайней мере, если у вас установлен Tomcat в Linux с помощью менеджера пакетов, то изменение переменной CATALINA_OPTS в /etc/tomcat6/tomcat6.conf (или любом другом пути в вашем дистрибутиве) будет более чистым, чем изменение сценария catalina.sh напрямую, диспетчер пакетов предполагает, что пользователь изменяет только файлы конфигурации, и нарушение этого предположения может вызвать проблемы при обновлении пакетов Tomcat (например, потеря настроек из-за перезаписи файла catalina.sh).

Я думаю, что предпочтение CATALINA_OPTS следует отдавать JAVA_OPTS не только для JDWP, но и для многих других вариантов: e. г. если использовать опцию размера кучи -Xmx ... тогда было бы разумно поместить ее в CATALINA_OPTS, так как команде "stop" не нужно много кучи.

36
ответ дан Jaan 28 November 2019 в 04:24
поделиться

Проблема в том, что ваш кот все еще работает на отладочном порту (5005) или какой-либо другой службе, работающей на том же порту (5005).

Если tomcat все еще работает, вы можете убить его

  • , если он находится в среде linux ps -ef | grep java , и идентифицировать его идентификатор процесса. и завершить процесс, используя sudo kill -9 .
  • Если он в среде windows попал в диспетчер задач и убил процесс tomcat и java.

Теперь вы сможете запускать сервер в режиме отладки без каких-либо проблем.

Это может произойти при отладке юнит-теста через инструмент (eclipse), который был выполнен через maven. Для этого вы можете использовать тот же процесс.

Сначала закройте Eclipse, а также убейте процесс Java и запустите его снова.

7
ответ дан Dinusha 28 November 2019 в 04:24
поделиться

Похоже, порт 5005 уже используется. Проверьте открытые порты командой netstat .

Это может быть связано с тем, что вы уже открыли tomcat. Проверьте свои процессы.

2
ответ дан 28 November 2019 в 04:24
поделиться

Вы пытаетесь отладить tomcat при запуске, поэтому он привязывается к порту 5005 при запуске jvm.

Когда вы запускаете catalina.sh stop , он запускается другой jvm, который также пытается привязаться к порту 5005.

Вам нужно переместить аргументы отладки в аргументы запуска и запуска (в catalina.sh ) tomcat, поместив их прямо в JAVA_OPTS является причиной возникшей у вас проблемы.

29
ответ дан 28 November 2019 в 04:24
поделиться

Похоже, вы запускаете Tomcat с включенным отладчиком. Это заставляет JVM подключаться к процессу для отладки. Однако в catalina.sh есть оператор case для запуска, остановки, перезапуска , так далее и так далее. Выполнение команды остановки по-прежнему добавляет это, поскольку оно является частью вашего глобального JAVA_OPTS и пытается запустить отладчик, прослушивающий тот же порт для команды выключения. Если вы удалите адрес = 50005 из JAVA_OPTS или воспользуетесь командами start jdpa для запуска виртуальной машины с отладчиком, это решит вашу проблему.

Посмотрите на файл catalina.sh по умолчанию в последней версии Tomcat, если вам нужна чистая копия . Похоже, кто-то внес изменения в ваш, которые являются недопустимыми и вызывают запуск JDPA при запуске, остановке, любой выданной команде.

1
ответ дан 28 November 2019 в 04:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: