Ошибка развертывания 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. Это эти странные файловые объекты без расширения, и они выглядят так:

enter image description here

для меня это указывает, что что-то пошло не так с тем, как Tomcat манипулирует файлами, и это ядро проблемы. Надеюсь, эта дополнительная информация поможет кому-то с ответом!

1 ответов


Я вижу, что Хоаз предложил перенести развертывание из C:\Program Files\ из-за пробела. Интересно, это скорее проблема с разрешениями, чем пробел в имени?

можете ли вы также попробовать их (без удаления Tomcat из C:\Program Files\):

  1. настройте расположение каталога temp, чтобы быть вне C:\Program Files\

    Ссылка: так вопрос как расположение каталога Tomcat temp определенными?

  2. изменить местоположение docBase и/или appBase

    ссылка: документация Apache http://tomcat.apache.org/tomcat-6.0-doc/config/host.html

также, принуждающ установку снаружи "C:\Program файлы" будут работать нормально, если / пока кто-то не настаивает, что "вот где должны жить программные файлы, вы знаете". :-)