2016-04-05 20 views
1

Redissonドライバを介してRedisキャッシュクラスタと通信するWebアプリケーションを構築しました。 Redissonドライバは、その設定をYAMLファイルからロードします。 構成には、オブジェクトの作成にコンストラクタを使用して作成される2つの属性が含まれています。コンフィギュレーションが原因これらのコンストラクタメソッドへのロードに失敗したいくつかの理由 は、次のエラーで呼び出します。ここでは"無効なタグ"エラーのためにJavaオブジェクトを構築できません

org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SessionManagement]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) 
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:939) 
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1812) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: Can't construct a java object for org.redisson.connection.balancer.RoundRobinLoadBalancer; exception=Invalid tag: org.redisson.connection.balancer.RoundRobinLoadBalancer 
in 'reader', line 14, column 17: 
     loadBalancer: !<org.redisson.connection.balanc ... 
        ^

    at org.yaml.snakeyaml.constructor.Constructor$ConstructYamlObject.construct(Constructor.java:350) 
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:182) 
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructMapping2ndStep(BaseConstructor.java:373) 

はYAMLファイルです:

--- 
clusterServersConfig: 
    idleConnectionTimeout: 10000 
    pingTimeout: 1000 
    connectTimeout: 1000 
    timeout: 1000 
    retryAttempts: 3 
    retryInterval: 1000 
    reconnectionTimeout: 3000 
    failedAttempts: 3 
    password: null 
    subscriptionsPerConnection: 5 
    clientName: null 
    loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {} 
    slaveSubscriptionConnectionMinimumIdleSize: 1 
    slaveSubscriptionConnectionPoolSize: 25 
    slaveConnectionMinimumIdleSize: 5 
    slaveConnectionPoolSize: 100 
    masterConnectionMinimumIdleSize: 5 
    masterConnectionPoolSize: 100 
    readMode: "SLAVE" 
    nodeAddresses: 
    - "//172.31.150.113:7000" 
    - "//172.31.150.113:7001" 
    - "//172.31.150.113:7002" 
    - "//172.31.150.113:7003" 
    - "//172.31.150.113:7004" 
    - "//172.31.150.113:7005" 
    scanInterval: 1000 
threads: 0 
codec: !<org.redisson.codec.JsonJacksonCodec> {} 
useLinuxNativeEpoll: false 
eventLoopGroup: null 

私がオブジェクトに必要なredissonライブラリいることが確認しましたクリエーションはクラスパス上にあります。
誰もこのYAMLファイルがSnakeyamlによって正しく読み込まれない理由を知っていますか?

+0

私の設定はうまく動作します。おそらく、あなたのredissonバージョンを追加することができます。 –

答えて

0

このフォームを使用してタグが事前に定義されていないjavabeanとして読み込む場合、シンタックスは2つの感嘆符で周囲のマーカーはありません。すなわち

ロードがコンストラクタと事前に定義されたタグを持つクラスとして、その後、中括弧の代わりにブラケット場合
codec: !!org.redisson.codec.JsonJacksonCodec{} 

codec: !org.redisson.codec.JsonJacksonCodec[] 

それが解決しない場合は、使用しているSnakeyamlのバージョン掲載も検討してください。

+0

速い応答に感謝します!残念ながら、それはまだ動作しません。私はSnakeyaml 1.16を使用しています。 – Nel

関連する問題