Tomcat 6 не загружает банки из WEB-INF / lib - PullRequest
7 голосов
/ 21 декабря 2011

Я пытаюсь отследить проблему конфигурации в моей среде Tomcat.Наши производственные серверы работают с установкой tomcat и читают войну из общего монтирования NFS.

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

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

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

Есть идеи?

SEVERE: Ошибка при настройке прослушивателя приложения класса org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderLache.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.cat.core.ContainerBase.addChildInternal (ContainerBase.java:791) в org.apache.catalina.core.ContainerBase.addChild (ContainerBase.java:771) в org.apache.catalina.core.StandardHost.addChild: StandardHost.) в org.apache.catalina.startup.HostConfig.deployDescriptor (HostConfig.java:627) в org.apache.catalina.startup.HostConfig.deployDescriptors (HostConfig.java:553) в org.apache.catalina.stfup.HdeployApps (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) в орг.apache.catalina.core.StandardService.start (StandardService.java:516) в org.apache.catalina.core.StandardServer.start (StandardServer.java:710) в org.apache.catalina.startup.Catalina.start (Каталина.Java: 578) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) в sun.reflect.Delegating.MethodAccessor jj.reflect.Method.invoke (Method.java:597) в org.apache.catalina.startup.Bootstrap.start (Bootstrap.java:288) в org.apache.catalina.startup.Bootstrap.main (Bootstrap.java:413).) 20 декабря 2011 г. 16:20:38 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:1387L.ader.app.WebappClassLoader.java:1233) в org.apache.catalina.core.StandardContext.listenerStart (StandardContext.java:3786) в org.apache.catalina.core.StandardContext.start (StandardContext.java:4342) в org.apache.cat.core.ContainerBase.addChildInternal (ContainerBase.java:791)в org.apache.catalina.core.ContainerBase.addChild (ContainerBase.java:771) в org.apache.catalina.core.StandardHost.addChild (StandardHost.java:525) в 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) at sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) в java.lang.reflect.Method.invoke (Method.java:597) в org.apache.catalina.startup.Bootstrap.start (Bootstrap.java:288) в org.apache.catalina.startup.Bootstrap.main (Bootstrap.java:413)

Ответы [ 2 ]

2 голосов
/ 23 декабря 2011

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

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

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

2 голосов
/ 21 декабря 2011

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

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

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

...