TomEE несколько хостов с одинаковыми проблемами развертывания приложений
Я пытаюсь настроить TomEE (7.0.2) с несколькими виртуальными хостами для сред разработки и тестирования, одни и те же приложения обычно будут развернуты на всех хостах. Из этого поста я узнал, как избежать конфликтов имен JNDI, что в значительной степени решило проблему неудачных развертываний, но у меня сейчас есть несколько других проблем.
Первая проблема заключается в том, что я по-прежнему получаю следующие серьезные ошибки в журнале, хотя они, похоже, не влияют на работающие приложения, я не уверен, как от них избавиться:
SCHWERWIEGEND - Jndi(name=global/webspi/DefaultStoredProcedureResolver) cannot be bound to Ejb(deployment-id=1774342742/ger400-q/2-webspi/webspi/DefaultDatasourceConnectorService). Name already taken by Ejb(deployment-id=-1143530541/ger400-t/1-webspi/webspi/DefaultStoredProcedureResolver
Вторая проблема заключается в том, что один файл WAR не будет развернут на одном из хостов (ger400-d ниже), если он не будет переименован первым. Он развернется ко всем остальным без проблем. Сгенерированное сообщение журнала:
SCHWERWIEGEND - Error merging Java EE JNDI entries in to war /webspi: Exception: null java.lang.NullPointerException
Добавление "x" или чего-либо еще к имени файла WAR делает его правильно развернутым, хотя и с неправильным именем пути.
Последняя проблема заключается в том, что остановка или удаление одного экземпляра приложения приводит к поломке всех остальных запущенных экземпляров, кажется, что фильтры Jax RS как-то нарушаются:
javax.servlet.ServletException: Error processing webservice request
org.apache.tomee.webservices.CXFJAXRSFilter.doFilter(CXFJAXRSFilter.java:98)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.apache.openejb.server.httpd.EEFilter.doFilter(EEFilter.java:65)
org.webspi.CORSFilter.doFilter(CORSFilter.java:61)
root cause
java.lang.NullPointerException
org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:252)
org.apache.openejb.server.cxf.rs.CxfRsHttpListener.doInvoke(CxfRsHttpListener.java:251)
org.apache.tomee.webservices.CXFJAXRSFilter.doFilter(CXFJAXRSFilter.java:94)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.apache.openejb.server.httpd.EEFilter.doFilter(EEFilter.java:65)
org.webspi.CORSFilter.doFilter(CORSFilter.java:61)
Соответствующая часть server.xml
является
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
</Host>
<Host name="ger400-d" appBase="/usr/tomee-webapps/d" unpackWARs="true" autoDeploy="true">
<Alias>ger400-d.ourcompany.com</Alias>
</Host>
<Host name="ger400-t" appBase="/usr/tomee-webapps/t" unpackWARs="true" autoDeploy="true">
<Alias>ger400-t.ourcompany.com</Alias>
</Host>
<Host name="ger400-q" appBase="/usr/tomee-webapps/q" unpackWARs="true" autoDeploy="true">
<Alias>ger400-q.ourcompany.com</Alias>
</Host>
<Host name="ger400-r" appBase="/usr/tomee-webapps/r" unpackWARs="true" autoDeploy="true">
<Alias>ger400-r.ourcompany.com</Alias>
</Host>
Есть идеи, что может быть не так?
1 ответ
У меня тоже была эта проблема, но, будучи новичком в Томи, я не знал, что есть простое решение. Когда я развернул свое веб-приложение в папке webapps, приложение работало нормально, но когда я развернул его в служебной папке, у меня произошел такой же отказ. Проблема заключалась в том, что имя папки не совпадало с именем войны (за исключением.war). Как только я это исправил, приложение работало нормально. Убедитесь, что имя войны, имя папки и имя службы идентичны.