0

Java 用の Heroku の Memcached チュートリアルを追うのに忙しい: https://devcenter.heroku.com/articles/memcache#using-spymemcached-with-spring

Homebrew を介して Memcached をインストールし、起動して実行し、Spymemcached 依存関係を追加し、XML 構成をアプリケーション コンテキストに追加しました。

問題は、アプリケーション コンテキストがローカルで起動するときに次の認証エラーが発生するため、MEMCACHE_USERNAME および MEMCACHE_PASSWORD 環境変数が何を必要としているかについて、かすかな手掛かりが得られないことです。

2013-04-21 18:22:52.108 INFO net.spy.memcached.MemcachedConnection:  Added {QA sa=localhost/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2013-04-21 18:22:52.127 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@228ef305
2013-04-21 18:22:52.283 WARN net.spy.memcached.auth.AuthThread:  Authentication failed to localhost/127.0.0.1:11211
2013-04-21 18:22:52.398 WARN net.spy.memcached.auth.AuthThread:  Authentication failed to localhost/127.0.0.1:11211
2013-04-21 18:22:52.520 WARN net.spy.memcached.auth.AuthThread:  Authentication failed to localhost/127.0.0.1:11211 ...

ユーザー名とパスワードが提供される構成:

<bean id="plainCallbackHandler" class="net.spy.memcached.auth.PlainCallbackHandler">
   <constructor-arg index="0" value="${MEMCACHE_USERNAME}"/>
   <constructor-arg index="1" value="${MEMCACHE_PASSWORD}"/>
</bean>

私はかなり明白なものを見逃しているに違いありません...何か指針はありますか?

4

2 に答える 2

0

こんにちは、私も同様の問題に遭遇しました。SASL ユーザー名とパスワードを設定していなかったため、構成を削除するとエラー メッセージが消えました。

<bean name="defaultCache" class="com.google.code.ssm.CacheFactory">
    <property name="cacheName" value="default" />
    <property name="cacheClientFactory">
        <bean name="cacheClientFactory"
            class="com.google.code.ssm.providers.spymemcached.MemcacheClientFactoryImpl" />
    </property>
    <property name="addressProvider" ref="addressProvider" />
    <property name="configuration" ref="cacheFactoryConf" />
</bean>

<bean id="addressProvider" class="com.google.code.ssm.config.DefaultAddressProvider">
    <property name="address" value="${memcached.hosts}" />
</bean>
<bean id="cacheFactoryConf"
    class="com.google.code.ssm.providers.spymemcached.SpymemcachedConfiguration">
    <property name="consistentHashing" value="true" />
    <property name="useBinaryProtocol" value="true" />
    <property name="keyPrefixSeparator" value=".xxx." />
    <property name="useNameAsKeyPrefix" value="true" />
    <!-- 
    <property name="authDescriptor">
        <bean class="net.spy.memcached.auth.AuthDescriptor">
            <constructor-arg index="0">
                <value>PLAIN</value>
            </constructor-arg>
            <constructor-arg index="1">
                <bean class="net.spy.memcached.auth.PlainCallbackHandler">
                    <constructor-arg index="0">
                        <value>${memcached.username}</value>
                    </constructor-arg>
                    <constructor-arg index="1">
                        <value>${memcached.password}</value>
                    </constructor-arg>
                </bean>
            </constructor-arg>
        </bean>
    </property>
    -->
</bean>
于 2016-01-06T09:54:24.313 に答える
0

アプリをローカルで実行している場合、MEMCACHE_USERNAMEMEMCACHE_PASSWORDは両方とも空白にする必要があります (インストール中に設定しない限り)。MEMCACHE_USERNAME= MEMCACHE_PASSWORD= the-command-to-run-your-app構成で null 値が処理されない場合は、プレフィックスを使用してアプリを実行できます。

Memcache アドオンを使用して Heroku を実行している場合、アドオンのインストール時に自動的に設定されるMEMCACHE_USERNAMEMEMCACHE_PASSWORD、 などの環境変数を取得します。MEMCACHE_SERVERS

Memcached サーバーを自己ホストする場合は、アプリケーションで構成する SASL ユーザー名とパスワードを設定する必要があります (または設定する必要があります)

于 2013-04-22T19:19:20.980 に答える