Ошибка Tomcat при развертывании

#spring #tomcat #war

#spring #tomcat #Война

Вопрос:

Я пытаюсь развернуть файл war в tomcat 6.0.27. Этот файл war содержит spring conf и java beans, а также обычный html и т.д. Этот файл war успешно развертывается на tomcat, установленном на платформе Windows. Однако при попытке развертывания в Linux в журналах tomcat отображается следующая ошибка: (и приложение не развернуто)

 SEVERE: ContainerBase.addChild: start: 
LifecycleException:  Error initializaing :  java.lang.IllegalArgumentException: The archive [jar:file:/var/lib/tomcat6/webapps/afghlcustomer.war!/] is malformed and will be ignored: an entry contains an illegal path [/]
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4217)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:525)
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1359)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(Unknown Source)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(Unknown Source)
    at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1475)
    at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:645)
    at org.apache.catalina.manager.ManagerServlet.doPut(ManagerServlet.java:432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:640)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:558)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Unknown Source)
  

Как мне решить эту проблему? С чего мне начать?

Комментарии:

1. Как вы создаете файл WAR?

2. @Franklin Я создаю файл war с использованием ant и ivy. Хотите посмотреть скрипт?

3. В качестве быстрого исправления, как насчет того, чтобы развернуть разнесенную папку напрямую, а не файл WAR. По крайней мере, вы будете знать, что она работает в Linux.

4. @Franklin Наш администратор Linux вручную создавал файл в папке webapps, но затем он начал конфликтовать с другим проектом spring. Он попытается найти контроллер из другого веб-приложения.

5. Исправлена проблема с ребятами. Это было в цели ANT WAR. Префикс, определенный следующим образом: /WEB-INF-classes/… вызывала проблему. Поскольку WEB-INF находится в корневом каталоге, нет необходимости ставить «/» в начале. Просто вызвал его напрямую как WEB-INF/ classes

Ответ №1:

Возможно, вы столкнулись с ошибкой в JVM, но я почти уверен, что разнесенная папка должна работать.

Комментарии:

1. Я только что попробовал это. Проекты развертываются, но затем, как я уже говорил ранее, они начинают конфликтовать друг с другом. один проект пытается вызвать контроллер другого проекта spring.

2. У меня не возникает никаких подобных проблем на платформе Windows.

3. Уверен, вы бы уже знали об этом, но у каждого проекта есть своя папка в каталоге webapp. правильно!! Также используете ли вы веб-сервисы Spring? У меня тоже однажды был странный конфликт, когда два приложения Spring WS были развернуты на одном Tomcat.

4. Что ж, теперь я решил эту проблему. Таким образом я сканировал контроллеры в базовом пакете. Я использовал * вместо фактического указания базового пакета, такого как com.xxx. В любом случае спасибо за вашу помощь @Franklin. Я действительно развернул его рекомендованным вами способом, пока не начнет работать скрипт удаленного развертывания.

5. Хорошо, что это сработало. Сообщите нам, когда удаленное развертывание сработает.