2011-12-20 3 views
7

Я пытаюсь отследить проблему конфигурации в моей среде tomcat. На наших производственных серверах работает установка tomcat и чтение войны с общего монстра NFS.Tomcat 6 не загружает банки из WEB-INF/lib

Однако, когда я пробую ту же войну с автономной коробкой (с их конфигурацией), я получаю сообщение об ошибке, указанную ниже.

Интересно, что если я разархивирую все банки в WEB-INF/lib в WEB-INF/classes, эта ошибка исчезнет.

Итак, похоже, что что-то мешает приложению загружать WEB-INF/lib путь, но я не могу на всю жизнь найти какие-либо параметры tomcat, которые могут вызвать это, потому что он обнаруживает приложения и конфигурации, просто не включенные банки.

Любые идеи?

СИЛЬНЫЕ: настройка Ошибка приложения слушатель класса org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener в org.apache.catalina.loader .WebappClassLoader.loadClass (WebappClassLoader.java:1387) at org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1233) at org.apache.catalina.core.StandardContext.listenerStart (StandardContext.java:3786)) на org.apache.catalina.core.StandardContext.start (StandardContext.java:4342) на org.apache.catalin a.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: 525) at org.apache.catalina.startup.HostConfig.deployDescriptor (HostConfig.java:627) at org.apache.catalina.startup.HostConfig.deployDescriptors (HostConfig.java:553) at org.apache. catalina.startup.HostConfig.deployApps (HostConfig.java:488) at org.apache.catalina.startup.HostConfig.start (HostConfig.java:1149) at org.apache.catalina.startup.HostConfig.lifecycleEvent (HostConfig. java: 311) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent (LifecycleSupport.java:117) at org.apa che.catalina.core.ContainerBase.start (ContainerBase.java:1053) на org.apache.catalina.core.StandardHost.start (StandardHost.java:719) на org.apache.catalina.core.ContainerBase.start (ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start (StandardEngine.java:443) at org.apache.catalina.core.StandardService.start (StandardService.java:516) at org. apache.catalina.core.StandardServer.start (StandardServer.java:710) at org.apache.catalina.startup.Catalina.start (Catalina.java:578) at sun.reflect.NativeMethodAccessorImpl.invoke0 (родной метод) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (Dele gatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke (Method.java:597) at org.apache.catalina.startup.Bootstrap.start (Bootstrap.java:288) at org.apache. catalina.startup.Bootstrap.main (Bootstrap.java:413) Dec 20, 2011 4:20:38 PM org.apache.catalina.core.StandardContext listenerStart SEVERE: ошибка настройки прослушивателя приложений класса org.springframework.security .web.session.HttpSessionEventPublisher java.lang.ClassNotFoundException: org.springframework.security.web.session.HttpSessionEventPublisher в org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1387) на org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1233) на org.apache.catalina.core.StandardContext.listenerStart (StandardContext.java:3786) на org.apache.catalina.core.StandardContext.start (StandardContext.java:4342) на org.apache.catalina.core.ContainerBase .addChildInternal (ContainerBase.java:791) на org.apache.catalina.core.ContainerBase.addChild (ContainerBase.java:771) на org.apache.catalina.core.StandardHost.addChild (StandardHost.java:525) at org.apache.catalina.startup.HostConfig.deployDescriptor (HostConfig.java:627) на org.apache.catalina.startup.HostConfig.deployDescriptors (HostConfig.java:553) на org.apache.catalina.startup.HostConfig.deployApps (HostConfig.java:488) на org.apache.catalina.startup. HostConfig.start (HostConfig.java:1149) на org.apache.catalina.startup.HostConfig.lifecycleEvent (HostConfig.java:311) на org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent (LifecycleSupport.java:117) на org.apache.catalina.core.ContainerBase.start (ContainerBase.java:1053) на org.apache.catalina.core.StandardHost.start (StandardHost.java:719) на org.apache.catalina.core. ContainerBase.start (ContainerBase.java:1045) по адресу org.apache.catalina.core.StandardEngine.start (StandardEngine.java:443) на org.apache.catalina.core.StandardService.start (StandardService.java:516) на org.apache.catalina.core.StandardServer.start (StandardServer.java:710) на org.apache.catalina.startup. Catalina.start (Catalina.java:578) на sun.reflect.NativeMethodAccessorImpl.invoke0 (нативный метод) на sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl .java: 25) at java.lang.reflect.Method.invoke (Method.java:597) at org.apache.catalina.startup.Bootstrap.start (Bootstrap.java:288) at org.apache.catalina .startup.Bootstrap.main (Bootstrap.java:413)

+3

Являются ли ваши баночки ссылками через символические ссылки? По умолчанию Tomcat не будет следовать символическим ссылкам. – fge

+0

Нет, основной webapp привязан к папке развертывания, но даже если я включил все приложение, я все равно получаю эту ошибку. – liam

+2

Я имел в виду банки в WEB-INF/lib. Я был достаточно укушен этой ошибкой, чтобы быть очень осторожным в настройке Tomcat правильно ... – fge

ответ

2

Итак, у меня до сих пор нет причины для почему это происходит, но я, наконец, смог заставить его работать. Обычно мы используем «распаковать», чтобы распаковать войну в каталог развертывания. Я переключил его, чтобы использовать «банку», и все магически работает.

У меня есть no Идея, почему это было бы.Я пробовал каждую другую перестановку (проверяя нашу папку развертывания, символические ссылки, разрешения, владельцы и т. Д.), И это было только вещь, которая имела значение, даже различая две распакованные папки, показав, что они были такими же, с теми же разрешениями, но один работал, а один не работал

Также обратите внимание: развертывания производства используют «unzip» в течение многих лет. Я действительно не могу понять этого, но я рад, что могу хотя бы поработать над чем-то еще.

2

Одна вещь, которую нужно изучить, ClassNotFoundException не всегда означает, что указанный класс (в вашем случае org.springframework.web.context.ContextLoaderListener) не найден, это может означать, что этот класс не может быть загружен.

Если какой-либо конкретный класс не может загрузить по какой-либо причине, скажем, что он имеет статический блок, который ссылается на другой класс, который не найден, загрузчик классов сообщает о невозможности загрузки как «ClassNotFoundException».

Убедитесь, что ваш каталог WEB-INF/lib не содержит классов/баночек, которые также существуют в библиотеках по умолчанию Tomcat. Иногда это может привести к сбоям нагрузки, если существует несколько версий. Распаковывая банки в каталог классов, вы можете перемещать классы в порядке пути, поэтому он может работать.

+0

Спасибо, но обходной путь оказался еще более странным. – liam