У меня возникают проблемы с развертыванием веб-приложения на встроенном Tomcat 7 с помощью maven-cargo-plugin. Я создал новый профиль maven в pom webapps, который создает контейнер Tomcat с помощью maven-cargo-plugin, а затем выполняет тестовый пример soapui с помощью soapui-maven-plugin.
Веб-приложение подключается к некоторым IBM WebSphere MQ, поэтому я перезаписал некоторые файлы конфигурации контейнеров:
- добавлены MQ в качестве ресурсов в server.xml для поиска JNDI
- добавил мой пользовательский applicationContext.xml в путь к классам, переопределив web.xml
- добавлены необходимые ресурсы в context.xml, необходимые для подключения к MQ
- добавлен путь к каталогу lib локально установленного IBM Websphere MQClient в контейнеры common.loader, чтобы его библиотеки могли использоваться контейнером
Кроме того, я скопировал необходимые файлы websphere.mq. *. Jar и j2ee-1.4.jar из локальной установки WebsSphere Server в каталог lib контейнеров Tomcat, добавив их с помощью тега cargos <file>
.
Теперь, когда я запускаю Maven с помощью этой команды (где runITs активирует созданный профиль):
clean verify -U -Dhttps.protocols=TLSv1,SSLv3 -DrunITs -X
Развертывание завершается ошибкой:
INFO] [talledLocalContainer] org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/cargocpc]]
[INFO] [talledLocalContainer] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
[INFO] [talledLocalContainer] at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
[INFO] [talledLocalContainer] at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
[INFO] [talledLocalContainer] at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
[INFO] [talledLocalContainer] at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1081)
[INFO] [talledLocalContainer] at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1877)
[INFO] [talledLocalContainer] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
[INFO] [talledLocalContainer] at java.util.concurrent.FutureTask.run(FutureTask.java:262)
[INFO] [talledLocalContainer] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[INFO] [talledLocalContainer] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[INFO] [talledLocalContainer] at java.lang.Thread.run(Thread.java:745)
[INFO] [talledLocalContainer] Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getClassLoader()Ljava/lang/ClassLoader;
[INFO] [talledLocalContainer] at org.apache.catalina.startup.WebappServiceLoader.load(WebappServiceLoader.java:90)
[INFO] [talledLocalContainer] at org.apache.catalina.startup.ContextConfig.processServletContainerInitializers(ContextConfig.java:1577)
[INFO] [talledLocalContainer] at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1281)
[INFO] [talledLocalContainer] at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:889)
[INFO] [talledLocalContainer] at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:386)
[INFO] [talledLocalContainer] at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
[INFO] [talledLocalContainer] at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
[INFO] [talledLocalContainer] at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5412)
[INFO] [talledLocalContainer] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
[INFO] [talledLocalContainer] ... 10 more
Я уже пробовал искать возможные решения и ф. е. попробовал решение, представленное здесь: java.lang.NoSuchMethodError: javax.textservlet.ServletContext. getContextPath () Ljava / lang / String;
но я мог исключить возможные причины, потому что:
- мой контейнер - Tomcat 7 и поэтому поддерживает Servlet API 2.5
- web.xml соответствует Servlet API 2.5
- В
WEB-INF/lib
илиJRE/lib
нет файлов j2ee.jar или servlet-api.jar
Убедившись, что моя установка соответствует этим трем пунктам, я все равно получаю указанную выше ошибку.
Кто-нибудь знает, что еще могло вызвать это?