Я пытаюсь настроить Apache Syncope 8.0.14, выполнив следующие действия: https://syncope.apache.org/docs/2.0/getting-started.html
Мне удалось использовать установщик графического интерфейса для успешной установки и компиляции проекта Syncope Maven.
Моя средаиспользует:
- Ubuntu 18.04
- Mysql (версия 14.14 Distrib 5.7.27, для Linux (x86_64) с использованием оболочки EditLine)
- Apache Tomcat 8.5.46
- Java 8 (сборка 1.8.0_181-b13)
Сборка maven успешна, и создаются файлы war для syncope, syncope-console и syncope-enduser.
Тем не менее, при развертывании военных файлов на Tomcat, Syncope не может запуститься. Ниже приведены журналы ошибок из журналов локального хоста tomcat:
02-Oct-2019 10:07:54.789 SEVERE [http-nio-8080-exec-6] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener]
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'MasterEntityManagerFactory' defined in URL [jar:file:/proj/apache-tomcat/webapps/syncope/WEB-INF/lib/syncope-core-persistence-jpa-2.0.14.jar!/domains/MasterDomain.xml]: Cannot resolve reference to bean 'MasterDataSource' while setting bean property 'dataSource'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'MasterDataSource' defined in URL [jar:file:/proj/apache-tomcat/webapps/syncope/WEB-INF/lib/syncope-core-persistence-jpa-2.0.14.jar!/domains/MasterDomain.xml]: Cannot resolve reference to bean 'localMasterDataSource' while setting bean property 'defaultObject'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'localMasterDataSource' defined in URL [jar:file:/proj/apache-tomcat/webapps/syncope/WEB-INF/lib/syncope-core-persistence-jpa-2.0.14.jar!/domains/MasterDomain.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'driverClassName' threw exception; nested exception is java.lang.RuntimeException: Failed to load driver class org.h2.Driver in either of HikariConfig class loader or Thread context classloader
Related cause: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'MasterDataSource' defined in URL [jar:file:/proj/apache-tomcat/webapps/syncope/WEB-INF/lib/syncope-core-persistence-jpa-2.0.14.jar!/domains/MasterDomain.xml]: Cannot resolve reference to bean 'localMasterDataSource' while setting bean property 'defaultObject'; nested exception is org.springframework.beans.factory.Bean
CreationException: Error creating bean with name 'localMasterDataSource' defined in URL [jar:file:/proj/apache-tomcat/webapps/syncope/WEB-INF/lib/syncope-core-persistence-jpa-2.0.14.jar!/domains/MasterDomain.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'driverClassName' threw exception; nested exception is java.lang.RuntimeException: Failed to load driver class org.h2.Driver in either of HikariConfig class loader or Thread context classloader
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1533)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1280)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:551)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1082)
Master.properties содержит:
Master.driverClassName=com.mysql.jdbc.Driver
Master.url=jdbc:mysql://10.1.153.100:3306/syncope?characterEncoding=UTF-8&relaxAutoCommit=true&relaxAutoCommit=true
Master.schema=
Master.username=syncope
Master.password=syncope
Master.databasePlatform=org.apache.openjpa.jdbc.sql.MySQLDictionary(blobTypeName=LONGBLOB)
Master.orm=META-INF/spring-orm.xml
Master.pool.validationQuery=SELECT 1
Master.pool.maxActive=10
Master.pool.minIdle=2
Master.audit.sql=audit.sql
MasterDomain.xml содержит:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd">
<bean id="MasterContentXML" class="org.apache.syncope.core.spring.ResourceWithFallbackLoader">
<property name="primary" value="file:${content.directory}/domains/MasterContent.xml"/>
<property name="fallback" value="classpath:domains/MasterContent.xml"/>
</bean>
<bean id="MasterProperties" class="org.apache.syncope.core.spring.ResourceWithFallbackLoader">
<property name="primary" value="file:${content.directory}/domains/Master.properties"/>
<property name="fallback" value="classpath:domains/Master.properties"/>
</bean>
<bean id="MasterDatabaseSchema" class="java.lang.String">
<constructor-arg value="${Master.schema}"/>
</bean>
<!-- Use JNDI datasource as default but, when not available, revert to
local datasource, with different properties for execution and testing.
In any case, get all JDBC connections with a determined isolation level. -->
<bean id="MasterDataSource" class="org.springframework.jndi.JndiObjectFactoryBean" primary="true">
<property name="jndiName" value="java:comp/env/jdbc/syncopeMasterDataSource"/>
<property name="defaultObject" ref="localMasterDataSource"/>
</bean>
<bean id="localMasterDataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<property name="driverClassName" value="${Master.driverClassName}"/>
<property name="jdbcUrl" value="${Master.url}"/>
<property name="username" value="${Master.username}"/>
<property name="password" value="${Master.password}"/>
<!-- connection pool configuration - transaction isolation, default READ_COMMITTED (see SYNCOPE-202) -->
<property name="transactionIsolation">
<util:constant static-field="${Master.pool.transactionIsolation:java.sql.Connection.TRANSACTION_READ_COMMITTED}"/>
</property>
<!-- connection pool configuration - default values taken from HikariConfig default values -->
<property name="maximumPoolSize" value="${Master.pool.maxActive:8}"/>
<property name="minimumIdle" value="${Master.pool.minIdle:0}"/>
</bean>
<bean class="org.springframework.jdbc.datasource.init.DataSourceInitializer">
<property name="dataSource" ref="MasterDataSource"/>
<property name="enabled" value="true"/>
<property name="databasePopulator">
<bean class="org.springframework.jdbc.datasource.init.ResourceDatabasePopulator">
<property name="continueOnError" value="true"/>
<property name="ignoreFailedDrops" value="true"/>
<property name="sqlScriptEncoding" value="UTF-8"/>
<property name="scripts">
<array>
<value type="org.springframework.core.io.Resource">
classpath:/audit/${Master.audit.sql}
</value>
</array>
</property>
</bean>
</property>
</bean>
<bean id="MasterEntityManagerFactory"
class="org.apache.syncope.core.persistence.jpa.spring.DomainEntityManagerFactoryBean">
<property name="mappingResources">
<list>
<value>${Master.orm}</value>
</list>
</property>
<property name="persistenceUnitName" value="Master"/>
<property name="dataSource" ref="MasterDataSource"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter">
<property name="showSql" value="false"/>
<property name="generateDdl" value="true"/>
<property name="databasePlatform" value="${Master.databasePlatform}"/>
</bean>
</property>
<property name="commonEntityManagerFactoryConf" ref="commonEMFConf"/>
</bean>
<bean id="MasterTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="MasterEntityManagerFactory"/>
<qualifier value="Master"/>
</bean>
<tx:annotation-driven transaction-manager="MasterTransactionManager"/>
</beans>
У меня естьвключил mysql-connector-java-5.1.48.jar в мою папку lib tomcat. Пробовал использовать последнюю версию драйвера mysql-connector-java-8.0.17.jar и все равно получаю ту же ошибку.
Как мне решить эту проблему?