2012-01-12 31 views
17

Tôi có một dự án dịch vụ và một dự án web. Tôi cần phải có bộ nhớ cache eh trong cả hai dự án. Ý tưởng là nếu dự án dịch vụ được cập nhật, các thay đổi liên quan đến bộ nhớ cache (như khóa và quy tắc không hợp lệ) cũng sẽ có sẵn, trong khi không có thay đổi nào được thực hiện cho dự án web. Quá độc lập, dự án dịch vụ cũng có thể được sử dụng với các dự án khác mà họ không hề biết về bộ nhớ đệm.Có thể sử dụng nhiều ehcache.xml (trong các dự án khác nhau, cùng một chiến tranh) không?

Tại thời điểm này, dự án web của tôi cũng sử dụng eh-cache cho mục đích riêng của mình. Tôi không có nhiều kinh nghiệm với eh-cache và tôi sợ rằng hai dự án có thể xung đột khi triển khai cùng nhau. Tôi cũng không tìm thấy thông tin liên quan trên trang eh-cache.

Bạn có thể cung cấp cho tôi một số thông tin về cách cấu hình tốt nhất hai dự án để tôi có thể đạt được các yêu cầu trên không?


Edit:

Tôi đang sử dụng mùa xuân, do đó tôi sẽ thích sử dụng nó cho các nhà quản lý bộ nhớ cache của tôi.

Tôi đang sử dụng sau trong context.xml cho mỗi jar với ehcache, ví dụ cho jar 1 Tôi có:

<ehcache:annotation-driven cache-manager="ehCacheManager1" /> 

<bean id="ehCacheManager1" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> 
    <property name="configLocation" value="classpath:ehcache-1.xml" /> 
</bean> 

và cho jar 2 Tôi có

<ehcache:annotation-driven cache-manager="ehCacheManager2" /> 

<bean id="ehCacheManager2" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> 
    <property name="configLocation" value="classpath:ehcache-2.xml" /> 
</bean> 

Vì vậy, , cả hai bộ nhớ cache sẽ hoạt động? Tôi sợ rằng ehcache:annotation-driven sẽ bị ghi đè bởi ngữ cảnh đọc cuối cùng và chỉ một bộ nhớ cache sẽ hoạt động. Tôi có sai, hay thiếu cái gì đó?

+0

Bạn đã bao giờ làm việc này? Câu trả lời về [Sử dụng chú thích bộ nhớ đệm Spring trong nhiều mô-đun] (http://stackoverflow.com/q/8658789/16487) (và thử nghiệm của riêng tôi), dường như không cho biết. –

+0

@ C.Ross, thực sự tôi đã hợp nhất các xmls ehcache thành một và sử dụng tệp được hợp nhất. Chúng tôi đã thay đổi nhà cung cấp bộ nhớ đệm thành hazelcast sớm đủ để không cần phải làm việc với ehcache nữa. Xin lỗi nếu không hữu ích –

+1

Chỉ cần bối rối. Tôi thường giả định câu trả lời được chấp nhận * hoạt động *, mà nó không có ở đây. –

Trả lời

3

Thuộc tính configurationResourceName được sử dụng để chỉ định vị trí của tệp cấu hình ehcache. Tài nguyên được tìm kiếm trong thư mục gốc của đường dẫn lớp. Nó được sử dụng để hỗ trợ nhiều CacheManagers trong cùng một máy ảo.

net.sf.ehcache.configurationResourceName=/name_of_ehcache.xml 
+0

OK, nhưng tôi muốn có nhiều tệp cấu hình. Điều này sẽ làm việc cho trường hợp của tôi? Ý tôi là - một cấu hình cho dịch vụ- và một cấu hình khác cho dự án web. –

+1

Khi bạn tạo CasheManager, bạn có thể chuyển tên tệp cấu hình cho hàm dựng Trình quản lý CacheManager = new CacheManager ("src/config/ehcache.xml"); –

+0

Tôi đã làm rõ câu hỏi của mình vì tôi gặp khó khăn.Tôi sẽ rất biết ơn nếu bạn trả lời –

1

nếu bạn sử dụng bộ nhớ cache khác nhau cho WAR khác nhau và bạn muốn ngăn chặn va chạm, đi đến echcache.xml của mỗi WAR và xác định giá trị multicastGroupPort khác nhau dưới phần tử cacheManagerPeerProviderFactory. cũng vô hiệu hóa phân phối.

Chúc may mắn!

+0

Tôi đã làm rõ câu hỏi của mình vì tôi gặp một số khó khăn. Tôi rất biết ơn nếu bạn trả lời –

2

Hãy thử đặt tên cả cacheManagers khác nhau trong ehcache.xml

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    name="ehCacheManager1"> 


<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    name="ehCacheManager2"> 
Các vấn đề liên quan