2017-09-04 1 views
0

4 노드 Apache Ignite Cluster를 빌드하고 Java 프로그램에서 캐시를 생성하는 것과 같은 기본 작업을 수행하고 연결할 수 있습니다.Apache Ignite 구성 오류

하지만 MySQL 통합을 수행 할 때 Ignite 클러스터에 연결되지 않습니다.

다음은 오류 메시지입니다.

<beans xmlns="http://www.springframework.org/schema/beans" 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.xsd"> 
    <!-- 
     Alter configuration below as needed. 
    --> 
    <bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" name="dataSource"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
     <property name="url" value="jdbc:mysql://<<mysqk_host>>:3306/sample_db" /> 
     <property name="username" value="root" /> 
     <property name="password" value="hadoop" /> 
    </bean> 
    <bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration"> 
     <property name="cacheConfiguration"> 
     <list> 
      <bean class="org.apache.ignite.configuration.CacheConfiguration"> 
       <property name="name" value="personCache" /> 
       <property name="readThrough" value="true" /> 
       <property name="writeThrough" value="true" /> 
       <property name="cacheStoreFactory"> 
        <bean class="javax.cache.configuration.FactoryBuilder" factory-method="factoryOf"> 
        <constructor-arg value="PersonExample.PersonStore" /> 
        </bean> 
       </property> 
       <property name="queryEntities"> 
        <list> 
        <bean class="org.apache.ignite.cache.QueryEntity"> 
         <property name="keyType" value="java.lang.Long" /> 
         <property name="valueType" value="PersonExample.Person" /> 
         <property name="fields"> 
          <map> 
           <entry key="id" value="java.lang.Long" /> 
           <entry key="name" value="java.lang.String" /> 
           <entry key="orgId" value="java.lang.Long" /> 
           <entry key="salary" value="java.lang.Integer" /> 
          </map> 
         </property> 
        </bean> 
        </list> 
       </property> 
      </bean> 
     </list> 
     </property> 
     <!--   <property name="peerClassLoadingEnabled" value="true"></property> --> 
     <property name="discoverySpi"> 
     <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi"> 
      <property name="ipFinder"> 
       <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.zk.TcpDiscoveryZookeeperIpFinder"> 
        <property name="zkConnectionString" value=“<<zk_host>>:2181" /> 
       </bean> 
      </property> 
     </bean> 
     </property> 
    </bean> 

방법이 오류를 해결하려면 :

Exception in thread "main" class org.apache.ignite.IgniteException: Resource field is not assignable from the resource: class org.springframework.jdbc.datasource.DriverManagerDataSource 
    at org.apache.ignite.internal.util.IgniteUtils.convertException(IgniteUtils.java:906) 
    at org.apache.ignite.Ignition.start(Ignition.java:350) 
    at PersonExample.PersonStoreExample.main(PersonStoreExample.java:16) 
Caused by: class org.apache.ignite.IgniteCheckedException: Resource field is not assignable from the resource: class org.springframework.jdbc.datasource.DriverManagerDataSource 
    at org.apache.ignite.internal.processors.resource.GridResourceUtils.inject(GridResourceUtils.java:50) 
    at org.apache.ignite.internal.processors.resource.GridResourceSpringBeanInjector.inject(GridResourceSpringBeanInjector.java:67) 
    at org.apache.ignite.internal.processors.resource.GridResourceIoc.injectInternal(GridResourceIoc.java:172) 
    at org.apache.ignite.internal.processors.resource.GridResourceIoc.inject(GridResourceIoc.java:97) 
    at org.apache.ignite.internal.processors.resource.GridResourceProcessor.injectGeneric(GridResourceProcessor.java:257) 
    at org.apache.ignite.internal.processors.cache.GridCacheProcessor.prepare(GridCacheProcessor.java:539) 
    at org.apache.ignite.internal.processors.cache.GridCacheProcessor.prepare(GridCacheProcessor.java:528) 
    at org.apache.ignite.internal.processors.cache.GridCacheProcessor.createCache(GridCacheProcessor.java:1270) 
    at org.apache.ignite.internal.processors.cache.GridCacheProcessor.onKernalStart(GridCacheProcessor.java:784) 
    at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:926) 
    at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1736) 
    at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1589) 
    at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1042) 
    at org.apache.ignite.internal.IgnitionEx.startConfigurations(IgnitionEx.java:964) 
    at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:850) 
    at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:749) 
    at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:619) 
    at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:589) 
    at org.apache.ignite.Ignition.start(Ignition.java:347) 
    ... 1 more 

은 Ignite 구성 파일은 다음?

+0

PersonExample.PersonStore 클래스 코드를 공유 할 수 있습니까? – alamar

답변

1

오류는 다음과 같이 변경하여 해결되었습니다

  • 추가
  • 보장 된 클러스터 설정 파일 및 클라이언트 설정 파일이 동일 점화 libs와 디렉토리의 최신 MySQL의 JDBC 항아리 (이전 클라이언트 설정 파일 추가 몇 포함 캐시 구성의 구성).
  • Person 클래스 (Ignite 캐시에 저장되는 MySQL 테이블 POJO)가 추가되었습니다.