Saya ingin menggunakan Spring AOP di aplikasi pegas saya. Saat membuat proksi AOP untuk net.sf.ehcache.CacheManager
, inisialisasi konteks pegas gagal dengan pengecualian di bawah ini:
nested exception is org.springframework.aop.framework.AopConfigException: Could not
generate CGLIB subclass of class [class net.sf.ehcache.CacheManager]: Common causes of
this problem include using a final class or a non-visible class; nested exception is
net.sf.cglib.core.CodeGenerationException: net.sf.ehcache.CacheException-->Another
unnamed CacheManager already exists in the same VM. Please provide unique names for
each CacheManager in the config or do one of following:
1. Use one of the CacheManager.create() static factory methods to reuse same
CacheManager with same name or create one if necessary
2. Shutdown the earlier cacheManager before creating new one with same name.
The source of the existing CacheManager is: InputStreamConfigurationSource
[stream=java.io.ByteArrayInputStream@955b34]
Inilah pemahaman saya tentang masalah ini - Spring mencoba membuat proxy AOP untuk net.sf.ehcache.CacheManager
, dan berhasil pertama kali dan memberikan nama default ke CacheManager __DEFAULT__
(menemukan ini dengan menambahkan pernyataan debug ke kode ehcache, membuatnya berdasarkan sumber dan menggunakannya dalam lamaran saya). Sekarang jika saya memiliki beberapa pengelola cache seperti 'abcCacheManager' dan 'xyzCacheManager' (dari tipe EhCacheManagerFactoryBean), Spring menemukan beberapa net.sf.ehcache.CacheManager
s dan mencoba membuat objek proxy (seperti net.sf.ehcache.CacheManager$$EnhancerByCGLIB$$b18c5958
) untuk semuanya, tetapi dengan EhCache >= versi 2.5, kami tidak dapat memiliki lebih dari satu cache dengan nama yang sama di bawah VM yang sama.
Saya menggunakan EhCache 2.5.1 dan ingin menghindari kembali ke 2.4 hanya untuk tujuan ini. Saya tidak yakin apakah ini benar-benar masalahnya, bagaimana saya bisa mengatasi masalah ini.
Catatan: Perhatikan pasti apakah ini akan membantu, tetapi saya juga memperhatikan dari pernyataan debug bahwa konstruktor CacheManager
no-arg hanya dipanggil oleh generator proxy pegas/CGLIB dan xyzCacheManager
memanggilnya dengan meneruskan konfigurasi sebagai argumen.
CacheManager
? - person jeha   schedule 10.09.2012