2017-09-04 9 views
0

4ノードのApache Ignite Clusterをビルドし、Javaプログラムからキャッシュを作成するなどの基本操作を実行して接続することができます。Apache Ignite設定エラー

しかし、私はMySQLの統合を行ったときにIgniteクラスタに接続できません。

以下はエラーメッセージです。

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設定ファイルです:

<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> 

このエラーを解決する方法は?

+0

PersonExample.PersonStoreクラスコードを教えてください。 – alamar

答えて

1

エラーは、次のように変更して解決されました:

  • のIgnite libsディレクトリに確保し、クラスタ設定ファイルとクライアントの設定ファイルを最新のMySQL JDBCのjarファイルを追加したのと同じ(以前のクライアントの設定ファイルには、追加のいくつか含まれていますキャッシュ構成の構成)。
  • Personクラス(Igniteキャッシュに格納されるMySQLテーブルPOJO)が追加されました。
関連する問題