2013-05-16 1 views
0

Мой класс медиатор код:Ошибка при выполнении одноплодной диспетчера кэша внутри класса медиатора

package wso2.caching; 

import org.apache.synapse.MessageContext; 
import org.apache.synapse.mediators.AbstractMediator; 
import java.util.Date; 
import net.sf.ehcache.CacheManager; 
import net.sf.ehcache.Element; 
import net.sf.ehcache.Cache; 
import net.sf.ehcache.config.CacheConfiguration; 


public class CacheMe extends AbstractMediator { 

    String data = ""; 
    CacheManager cacheManager; 
    CacheConfiguration cacheConfiguration; 
    Element element; 
    private Cache mdmCache; 
    boolean firstTime=true; 

    public boolean mediate(MessageContext messageContext) { 
     System.out.println(new Date() + "FirstTime = " + firstTime); 
     data = String.valueOf(messageContext.getProperty("propertyarray")); 
     System.out.println("data from proxy service is : " + data); 
     cacheData(data); 
     messageContext.setProperty("ResultData", "You got Data"); 
     return true; 
    } 

    public void cacheData(String data){ 
     if(firstTime){ 
     cacheManager = new CacheManager(); 
     firstTime=false; 
     } 
     System.out.println(new Date() + "FirstTime = " + firstTime); 
     System.out.println("Checkpoint A"); 
     //mdmCache = new Cache(getCacheConfiguration("mdmCache"));//test 
     cacheManager.addCache("mdmCache"); 
     System.out.println("Checkpoint B"); 
     this.mdmCache = cacheManager.getCache("mdmCache"); 
     System.out.println("Checkpoint C"); 
     //this.mdmCache = mdmCache;//test 
     System.out.println(new Date() + " Generating MDM Data..."); 
     System.out.println("mdmCache.size(): " + mdmCache.getSize()); 
     Element eqpElement = new Element("CacheValueKey", data); 
     mdmCache.put(eqpElement); 
     System.out.println("mdmCache.size(): " + mdmCache.getSize()); 
     } 
} 

Я называю этот класс посредником в последовательности моего ESB, как наконец-то названный в прокси-сервис:

<sequence xmlns="http://ws.apache.org/ns/synapse" name="cacheImplementationSeq"> 
    <property xmlns:ns="http://org.apache.synapse/xsd" name="propertyarray" expression="$body"/> 
    <log level="custom"> 
     <property xmlns:ns="http://org.apache.synapse/xsd" name="PropertyData" expression="get-property('propertyarray')"/> 
    </log> 
    <class name="cts.falcon.data.cachable.CacheData"/> 
    <property xmlns:ns="http://org.apache.synapse/xsd" name="ResultSet" expression="get-property('ResultData')" scope="default" type="STRING"/> 
    <header name="To" action="remove"/> 
    <property name="RESPONSE" value="true" scope="default" type="STRING"/> 
    <property name="NO_ENTITY_BODY" action="remove" scope="axis2"/> 
    <payloadFactory> 
     <format> 
     <resultSetResponse xmlns:ns1="http://www.cts.falcon.data.cachable/">$1</resultSetResponse> 
     </format> 
     <args> 
     <arg xmlns:ns="http://org.apache.synapse/xsd" expression="get-property('ResultSet')"/> 
     </args> 
    </payloadFactory> 
    <send/> 
</sequence> 

Когда я запускаю свою прокси-службу из try-it в первый раз, мой ответ получает кеширование с уникальным ключом (его UUID), и снова, когда я запускаю свою службу снова, мой предыдущий ключ заменяется новым ключом и новым значением ответа , Я ищу, если мой ключ такой же, он должен обновлять кеш, и если мой ключ отличается, он должен быть добавлен с новым ключом, а мой предыдущий ключ кеша не должен исчезнуть? Я использую ehcache1.5.0 jar для достижения этого, который поставляется с wso2 esb в плагине. Ждем ваших ответов. Заранее спасибо

ответ

0

Вопрос в посреднике вашего класса. Дайг и найдите

+0

как отладить мой класс-посредник? – Roy

Смежные вопросы