Memcacheにjava.util.List型のオブジェクトをキャッシュしようとすると「java.lang.IllegalArgumentException: Cannot use as value:…」という例外を吐く場合の対処法メモ。
とりあえず下記のコードでなんとかエラー吐かなくなった。似非プログラマーだから理由が分からない。詳しい方、代案や理由など教えていただければ幸いです。
List<String, String> list = new ArrayList<String, String>();
list.put("key", "test");
Cache cache = null;
try
{
CacheFactory factory = CacheManager.getInstance().getCacheFactory();
cache = factory.createCache(Collections.emptyMap());
}
catch(CacheException ex)
{
return;
}
try
{
cache.put("cache", new ArrayList<String, String>(list));
}
catch(GCacheException ex){}
新しいオブジェクト作ってコンストラクタに古いリストを指定したら直った。適当すぎる。
2011/9/30 追記
コード自体が支離滅裂なのでまったく当てにならないエントリです。申し訳ありません。