Ошибка развертывания Tomcat
проблема у меня есть
я реализовал небольшое изменение в своем приложении, и я проверил его в репозитории subversion. Как только это было зарегистрировано, я запустил сборку Дженкинса. Дженкинс в настоящее время работает на сервере Windows.
ошибка, которую я получаю, следующая:
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal
org.codehaus.mojo:tomcat-maven-plugin:1.1:deploy (deploy) on project sd-rest-servlet:
Cannot invoke Tomcat manager: FAIL - Deployed application at context path /sd but
context failed to start
я исследовал это сообщение об ошибке, поэтому я проверил журналы Tomcat на сервере Jenkins, и я нашел основная проблема:
SEVERE: Error starting static Resources
java.lang.IllegalArgumentException: Document base C:Program FilesApache Software FoundationTomcat 6.0temp-sd does not exist or is not a readable directory
at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:142)
at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4320)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4489)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:601)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1385)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:306)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1389)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1653)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1662)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1642)
at java.lang.Thread.run(Unknown Source)
теперь, как я понимаю,temp
папка используется только таким образом, когда я устанавливаю antiJarLocking
или antiResourceLocking
to true
на . Однако, как вы можете видеть, я не включил это в Context
элемент:
<Context unpackWAR="false">
Другое Поведение
не удается удалить
после тщательного осмотра, я обнаружил, что Дженкинс не в состоянии удалить приложение. В журналах я вижу это сообщение.
[INFO] Undeploying application at http://localhost:8082/sd
[INFO] OK - Undeployed application at context path /sd
однако сборка не выполняется при попытке развертывания со следующей ошибкой:
Cannot invoke Tomcat manager: FAIL - Application already exists at path /sd
неустойчивый доступ к каталогу Temp
я также заметил, что он бросает то же самое IllegalArgumentException
всякий раз, когда он пытается получить доступ к файлам внутри . Это говорит мне что-то не так с temp
каталог, однако я установил разрешения и ранее в приложении Дженкинс фактически помещает файл в .
Нет Проблем Depoying
Дженкинс фактически развертывает приложение без проблем. Я наблюдал, как меняются каталоги при добавлении в них файлов, включая . Это говорит мне, что Дженкинс случайно решает, что он не может прочитать содержимое каталога, несмотря на то, что в него добавлен файл. Похоже, что он написать разрешения, но не разрешения на чтение, что действительно не имеет большого смысла!
попытки решить проблему
убедитесь, что файл существует
я сначала попытался заглянуть внутрь C:Program FilesApache Software FoundationTomcat 6.0temp-sd
чтобы узнать, существует ли файл. Конечно, он существовал.
Изменены Разрешения
я установил разрешения для обеспечения полного доступа от каждого пользователя на сервере, как предосторожность.
исследовал использование каталога Temp
я попытался настроить свой контекстный файл, чтобы избежать использования , так что я понятия не имею, почему он все еще пытается читать из него. Я неопытен с входами и выходами этой технологии, поэтому у меня все еще могут быть некоторые настройки, которые требуют .
редактирование
Расширенный Tomcat Журналы
18-Dec-2013 12:14:19 org.apache.catalina.startup.HostConfig checkResources
INFO: Undeploying context [/sd]
18-Dec-2013 12:16:06 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor sd.xml
18-Dec-2013 12:16:09 org.apache.catalina.core.StandardContext resourcesStart
<!-- Above stacktrace goes here -->
18-Dec-2013 12:16:09 org.apache.catalina.core.StandardContext start
SEVERE: Error in resourceStart()
18-Dec-2013 12:16:09 org.apache.catalina.core.StandardContext start
SEVERE: Error getConfigured
18-Dec-2013 12:16:09 org.apache.catalina.core.StandardContext start
SEVERE: Context [/sd] startup failed due to previous errors
18-Dec-2013 12:16:09 org.apache.catalina.core.StandardContext stop
INFO: Container org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/sd] has not been started
дополнительная информация по этому вопросу
в тысячный раз перечитав журналы, я перечитал эту строчку:
...Tomcat 6.0temp-sd does not exist or is *not a readable directory*
поэтому, когда я заглянул внутрь temp
каталог снова, я понял, что генерируемые файлы не являются directories
. Это эти странные файловые объекты без расширения, и они выглядят так:
для меня это указывает, что что-то пошло не так с тем, как Tomcat манипулирует файлами, и это ядро проблемы. Надеюсь, эта дополнительная информация поможет кому-то с ответом!
1 ответов
Я вижу, что Хоаз предложил перенести развертывание из C:\Program Files\
из-за пробела. Интересно, это скорее проблема с разрешениями, чем пробел в имени?
можете ли вы также попробовать их (без удаления Tomcat из C:\Program Files\
):
-
настройте расположение каталога temp, чтобы быть вне
C:\Program Files\
Ссылка: так вопрос как расположение каталога Tomcat temp определенными?
-
изменить местоположение
docBase
и/илиappBase
ссылка: документация Apache http://tomcat.apache.org/tomcat-6.0-doc/config/host.html
также, принуждающ установку снаружи "C:\Program файлы" будут работать нормально, если / пока кто-то не настаивает, что "вот где должны жить программные файлы, вы знаете". :-)