LINUX.ORG.RU

перенос tomcat

 , , ,


0

1

Есть сервер openSUSE 12.3 на нем развернуто 3 приложения на tomcat, tomcat были установлены из пакетов, сейчас все работает, мне надо перенести все эти 3 приложения на tomcat на сервер Ubuntu 16.04.1, tomcat и java качаю архивом в /opt и там уже разворачиваю, сделано для того, что бы можно было иметь несколько версий tomcat и java, версии все скачал такие же как и на openSUSE, дефолтная страница tomcat открывается все работает, но после того как я удаляю все из /opt/tomcat/webapps/* и закачиваю war файл с openSUSE, копирую все настройки конфигурации с openSUSE, стартую tomcat идет deploy приложения и сыпятся ошибки

[ERROR] context.ContextLoader Context initialization failed org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'customUserDetailsService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: 
Could not autowire field: private com.multipass.core.facade.ClientFacade com.multipass.web.api.security.CustomUserDetailsService.clientFacade; nested exception is org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'clientFacadeImpl': 
Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: 
Could not autowire field: private com.multipass.dao.ClientDao com.multipass.core.facade.impl.ClientFacadeImpl.clientDao; nested exception is org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'clientDao': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: 
Could not autowire field: private com.multipass.cache.api.Cache com.multipass.dao.impl.ClientDaoImpl.cache; nested exception is org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'memcached': 
Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: 
Could not autowire field: private boolean com.multipass.cache.memcached.Memcached.enabled; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'boolean'; nested exception is java.lang.IllegalArgumentException: Invalid boolean value [${memcached.enabled}]

почему не может создаться bean с именем customUserDetailsService? как это можно исправить?

п.с. скажите какие конфиги предоставить, покажу. Не силен пока с tomcat'ом



Последнее исправление: Garcia (всего исправлений: 1)

spring.xml надо поправить. Скан компонентов не фурычит.

bitfroster ★★
()
Последнее исправление: bitfroster (всего исправлений: 1)

Не может создаться бин com.multipass.cache.memcached.Memcached по причине того, что его булево поле enabled хочет быть не true, не false, а аж ${memcached.enabled}. Строкой то есть.

Возможно забыли перенести какой нибудь .properties файл, где оно описывалось. Либо как то странно настроен скан компонентов в xml-конфиге контекста

alchemist
()
Последнее исправление: alchemist (всего исправлений: 1)
Ответ на: комментарий от alchemist

Обычно если забыли .properties файл, то оно материлось бы о невозможности разрешить само значение. Очевидно проперти гдето есть но непонятно какого значения. Но явно что-то не то. Похоже на следующий вариант:
Как вариант, сам спринг не настроен на разрешение таких вещей, ибо для этого в контексте обычно прописывают бин propertyPlaceholderResolver(или как-то так), который почему-то не завелся, например потому что он условный(заводился только если работает на продовской машине, а определяет это например по какой-нибудь переменной среды, которую забыли установить).

FeyFre ★★★★
()
Ответ на: комментарий от FeyFre

Да, org.springframework.beans.factory.config.PropertyPlaceholderConfigurer эта штука подменяет такие вещи.

В общем, ТС, нам нужен твой applicationContext.xml или нечто подобное из каталога WEB-INF. Если такого нет - кидай web.xml из того же каталога сначала.

alchemist
()
Ответ на: комментарий от alchemist

в WEB-INF у меня такое

ls WEB-INF
app.properties  app_ru.properties  classes  lib  spring  web.xml 

WEB-INF/web.xml

<?xml version=«1.0» encoding=«UTF-8»?>
<!DOCTYPE web-app
        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
        <display-name>API</display-name>
        <context-param>
                <!-- The only significant configuration for Tapestry 5, this informs Tapestry
                        of where to look for pages, components and mixins. -->
                <param-name>tapestry.app-package</param-name>
                <param-value>com.multipass.web.api</param-value>
        </context-param>
        <!-- Specify some additional Modules for two different execution modes:
                development and qa. Remember that the default execution mode is production -->
        <context-param>
                <param-name>tapestry.development-modules</param-name>
                <param-value>
                        com.multipass.web.api.services.DevelopmentModule
                </param-value>
        </context-param>
        <context-param>
                <param-name>tapestry.qa-modules</param-name>
                <param-value>
                        com.multipass.web.api.services.QaModule
                </param-value>
        </context-param>
        <context-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>WEB-INF/spring/spring-context.xml</param-value>
        </context-param>
        <filter>
                <filter-name>getRealIpFilter</filter-name>
                <filter-class>com.multipass.shared.web.filter.GetRealIpFilter</filter-class>
        </filter>
<filter-mapping>
                <filter-name>getRealIpFilter</filter-name>
                <url-pattern>/*</url-pattern>
        </filter-mapping>
        <filter>
                <filter-name>springSecurityFilterChain</filter-name>
                <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
        </filter>
        <filter-mapping>
                <filter-name>springSecurityFilterChain</filter-name>
                <url-pattern>/*</url-pattern>
        </filter-mapping>
        <filter>
                <filter-name>app</filter-name>
                <filter-class>org.apache.tapestry5.spring.TapestrySpringFilter</filter-class>
        </filter>
        <filter-mapping>
                <filter-name>app</filter-name>
                <url-pattern>/*</url-pattern>
        </filter-mapping>
        <servlet>
                <servlet-name>CXFServlet</servlet-name>
                <display-name>CXF Servlet</display-name>
                <servlet-class>
                        org.apache.cxf.transport.servlet.CXFServlet
                </servlet-class>
                <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
                <servlet-name>CXFServlet</servlet-name>
                <url-pattern>/api/*</url-pattern>
        </servlet-mapping>
        <servlet>
                <servlet-name>PayPalPaymentResultServlet</servlet-name>
                <servlet-class>com.multipass.web.api.servlet.PayPalPaymentResultServlet</servlet-class>
        </servlet>
<servlet-mapping>
                <servlet-name>PayPalPaymentResultServlet</servlet-name>
                <url-pattern>/payment-result/paypal-d8e72bf3-46b2-4b32-880a-d48af0b32d4c</url-pattern>
        </servlet-mapping>
        <servlet>
                <servlet-name>WebMoneyPaymentResultServlet</servlet-name>
                <servlet-class>com.multipass.web.api.servlet.WebMoneyPaymentResultServlet</servlet-class>
        </servlet>
        <servlet-mapping>
                <servlet-name>WebMoneyPaymentResultServlet</servlet-name>
                <url-pattern>/payment-result/webmoney</url-pattern>
        </servlet-mapping>
        <servlet>
                <servlet-name>W1PaymentResultServlet</servlet-name>
                <servlet-class>com.multipass.web.api.servlet.W1PaymentResultServlet</servlet-class>
        </servlet>
        <servlet-mapping>
                <servlet-name>W1PaymentResultServlet</servlet-name>
                <url-pattern>/payment-result/w1</url-pattern>
        </servlet-mapping>
        <servlet>
                <servlet-name>YandexMoneyCheckOrderServlet</servlet-name>
                <servlet-class>com.multipass.web.api.servlet.YandexMoneyCheckOrderServlet</servlet-class>
        </servlet>
        <servlet-mapping>
                <servlet-name>YandexMoneyCheckOrderServlet</servlet-name>
                <url-pattern>/payment-check/yandex</url-pattern>
        </servlet-mapping>
        <servlet>
                <servlet-name>YandexMoneyPaymentAvisoServlet</servlet-name>
                <servlet-class>com.multipass.web.api.servlet.YandexMoneyPaymentAvisoServlet</servlet-class>
        </servlet>
        <servlet-mapping>
                <servlet-name>YandexMoneyPaymentAvisoServlet</servlet-name>
                <url-pattern>/payment-result/yandex</url-pattern>
        </servlet-mapping>
<servlet>
                <servlet-name>YandexMoneyPaymentResultServlet</servlet-name>
                <servlet-class>com.multipass.web.api.servlet.YandexMoneyPaymentResultServlet</servlet-class>
        </servlet>
        <servlet-mapping>
                <servlet-name>YandexMoneyPaymentResultServlet</servlet-name>
                <url-pattern>/payment-result/yandex-money-ce21b803-e42b-4827-ae73-96987fb10cf1</url-pattern>
        </servlet-mapping>
        <servlet>
                <servlet-name>QiwiPaymentResultServlet</servlet-name>
                <servlet-class>com.multipass.web.api.servlet.QiwiPaymentResultServlet</servlet-class>
        </servlet>
        <servlet-mapping>
                <servlet-name>QiwiPaymentResultServlet</servlet-name>
                <url-pattern>/payment-result/qiwi</url-pattern>
        </servlet-mapping>
        <servlet>
                <servlet-name>PlatformLicenseCostCalculatorServlet</servlet-name>
                <servlet-class>com.multipass.web.api.servlet.PlatformLicenseCostCalculatorServlet</servlet-class>
        </servlet>
        <servlet-mapping>
                <servlet-name>PlatformLicenseCostCalculatorServlet</servlet-name>
                <url-pattern>/platform/license/cost</url-pattern>
        </servlet-mapping>
    <servlet>
        <servlet-name>FirstPaymentsServlet</servlet-name>
        <servlet-class>com.multipass.web.api.servlet.FirstPaymentsServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>FirstPaymentsServlet</servlet-name>
        <url-pattern>/payment-result/cardgateway</url-pattern>
    </servlet-mapping>
<session-config>
                <session-timeout>15</session-timeout>
                <tracking-mode>COOKIE</tracking-mode>
                <cookie-config>
                        <http-only>true</http-only>
                        <secure>true</secure>
                </cookie-config>
        </session-config>
</web-app>

что самое интересное, попробовал на тестовой поднять openSUSE поставил все так же из пакетов и все заработало, но на ubuntu пока никак не хочет

Garcia
() автор топика
Ответ на: комментарий от Garcia

WEB-INF/spring/spring-context.xml - это файл описания контекста, там должен быть бин этого самого PropertyPlaceholderConfigurer'а, покажи и его тоже (можно через ссылку, если он большой)

alchemist
()
Ответ на: комментарий от alchemist

spring-context.xml

<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.1.xsd">

        <context:annotation-config />
        <context:component-scan base-package="com.multipass" />

    <context:property-placeholder
            location="${protectimus.properties}"
            ignore-resource-not-found="true"
            ignore-unresolvable="true"
            order="-1"/>

    <context:property-placeholder
            location="file:${catalina.home}/conf/protectimus.properties"
            ignore-resource-not-found="true"
            ignore-unresolvable="true"
            order="0"/>

    <import resource="spring-jdbc.xml" />
        <import resource="spring-security.xml" />
        <import resource="spring-api.xml" />
        <import resource="spring-aop.xml" />
        <import resource="spring-cache.xml" />
        <import resource="spring-mail.xml" />
        <import resource="spring-task.xml" />

</beans>

Garcia
() автор топика
Ответ на: комментарий от Garcia

location=«file:${catalina.home}/conf/protectimus.properties»

блеать... ну какое у...ище использует ${catalina.home} ? Меняем на ${catalina.base}
Убеждаемся что там лежит указаный файлик protectimus.properties
Дальше смотрим на исходной системе в что была выставлен проперти ${protectimus.properties} я так понял чтобы твикать запуск(запускали томкет с -Dprotectimus.properties=мой/путь/к/конфигу)

Да, вот эта пара заглушила все ошибки.

ignore-resource-not-found=«true»
ignore-unresolvable=«true»

FeyFre ★★★★
()
Ответ на: комментарий от Garcia

вроде бы на ubunte тоже завелось, но только пока одно приложение проверил, завтра буду все остальные проверять всем спасибо за помощь

а вот это что ему не нравится?

SEVERE: Couldn't load specified error report valve class: com.multipass.tomcat.MultipassErrorReportingValve
java.lang.ClassNotFoundException: com.multipass.tomcat.MultipassErrorReportingValve
какой-то отчет не может загрузить

Garcia
() автор топика
Ответ на: комментарий от Garcia

Абсолютно частный случай.
CATALINA_HOME - место где лежат бинари(общие для нод)
CATALINA_BASE - место где лежит контент и конфигурация(для каждой ноды своя)

FeyFre ★★★★
()
Ответ на: комментарий от Garcia

Не грузится Valve. Классы используемые вальвами грузятся при старте, до того как любые приложения начинают взлетать. Положите либу с указанным обработчиком в TOMCAT_HOME\lib. Не исключено что на старом месте эта либа лежала гдето в TOMCAT_HOME\endorsed, либо глобальных classpath-ах.

FeyFre ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.