1. Весенние задачи выполняются дважды
Проблема воспроизведение и анализ
Недавно я использовал структуру задачи Quartz Timing и обнаружил, что не было проблем с выполнением среды разработки. После развертывания на сервере я обнаружил, что задача была выполнена несколько раз одновременно. После поиска я обнаружил, что была проблема с файлом конфигурации Tomcat на сервере.
Исходный файл конфигурации - Server.xml выглядит следующим образом:
<Host name = "localhost" appbase = "webApps" unpackwars = "true" autodeploy = "true"> <valve classname = "org.apache.catalina.valves.accesslogvalve" Directory = "logs" prefix = "locolhost_access_log". /> </Host> <host name = "www.xxx.com" appbase = "webApps" unpackwars = "true" autodeploy = "true" xmlvalidation = "false" xmlnamespaceaware = "false"> <context path = "" docbase = "/usr/local/tomcat/apache-tomcat-8.5.9/" "docbase ="/usr/local/tomcat/apache-tomcat-8.5.9.5.9.5.9.5.9.5.9.5.9.5.9.5.9.5.9/" reloadable = "true"> </context> </host>
Хост представляет контейнер, который может содержать несколько контекстов (приложения). Приведенный выше файл конфигурации означает: два контейнера настроены в Tomcat, One name = localhost, корневой каталог приложения является веб -приложением, а пакет войны будет автоматически декомпрессирован и развернут автоматически. Если контекст не указан, все веб -приложения в корневом каталоге будут развернуты. После успешного развертывания к внешней сети можно получить доступ через имя проекта IP + сервера; Другое имя = www.xxx.com, которое отличается от первого хоста, настроено с веб -приложением домашней страницы и не нужно получить доступ с именем проекта. После того, как развертывание будет успешным, вы можете получить к нему доступ через доменное имя + имя проекта, и проект, в котором расположена домашняя страница, можно получить непосредственно через корневое доменное имя.
В настоящее время возникает проблема. Проект, содержащий задачи времени, развернут в каталоге WebApps. Два независимых контейнера в Tomcat развернуты один раз, что эквивалентно проекту развертывается дважды на Tomcat на сервере. Обе стороны будут выполнять задачи временного времени одновременно, и указана одна и та же база данных.
Решение проблем
Следовательно, чтобы не влиять на нормальный доступ других проектов как можно больше, я пошел на компромисс и сказал, что проект, который должен выполнять задачи по времени, развертывается отдельно в другой папке, такой как WebRoot, а затем использует только хост доменного имени. После изменения файла конфигурации следующее:
<Host name = "localhost" appbase = "webApps" unpackwars = "true" autodeploy = "true"> <valve classname = "org.apache.catalina.valves.accesslogvalve" Directory = "logs" prefix = "locolhost_access_log". /></Host><Host name="www.xxx.com" appBase="" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="/usr/local/tomcat/apache-tomcat-8.5.9/webapps/xxxindex" reloadable="true"></Context> <Context path="/projectA" docBase="/usr/local/tomcat/apache-tomcat-8.5.9/webapps/projectA" reloadable="true"></Context> <Context path="/projectB" docBase="/usr/local/tomcat/apache-tomcat-8.5.9/webapps/projectB" reloadable = "true"> </context> <context path = "/projectc" docbase = "/usr/local/tomcat/apache-tomcat-8.5.9/webroot/projectc" reloadable = "true"> </context> </host>
Вы можете видеть, что ProjectC - это проект, содержащий задачи времени. После успешного развертывания, за исключением проекта, к которому можно получить доступ только через доменное имя, метод доступа других проектов остается неизменным. В то же время проблема решается, и задача времени выполняется только один раз.
Еще одно высказывание в Интернете
<Host name = "localhost" appbase = "webapps" unpackwars = "true" autodeploy = "true"> <context docbase = "projecta" path = "" reloadable = "true" /> < /host>
Есть только один хост. Когда Tomcat запускается, все проекты в корневом каталоге будут развернуты один раз, а затем контекст будет развернут еще раз, что также приведет к выполнению задачи временного времени дважды.
Есть много решений этой проблемы:
2. Проблема медленного развертывания Tomcat
Облачный сервер Alibaba, который я использовал, был очень медленным при развертывании Tomcat, но новое облако Alibaba, которое я купил позже, не имела этой проблемы. После того, как проект будет развернут, он будет
Информация [localhost-startstop-1] org.apache.catalina.startup.hostconfig.deploydirectory Развертывание каталога веб-приложений/opt/apache-tomcat-8.0.15-server/webapps/root
Чтобы продолжить здесь, требуется несколько минут. Раньше я думал, что это была причина конфигурации сервера, но позже я случайно обнаружил, что это была причина конфигурации JRE. Ссылаясь на несколько блогов, я обнаружил, что Oracle дал причины и решения в соответствии с документацией Weblogic.
Библиотека, используемая для генерации случайных чисел в JVM Sun, по умолчанию по умолчанию по умолчанию по умолчанию для платформ UNIX. Это может потенциально заблокировать процесс SIP -сервера WebLogic, потому что в некоторых операционных системах /Dev /Random ожидается генерировать определенное количество «шума» на хост -машине, прежде чем вернуть результат. Хотя /dev /random более безопасно, BEA рекомендует использовать /dev /urandom, если задержка конфигурации JVM по умолчанию задерживает запуск SIP -сервера WebLogic.
Значение:
Метод модификации:
Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенную справочную ценность для каждого обучения или работы. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения. Спасибо за поддержку Wulin.com.