0
내 클래스 중재자 코드는 다음과 같습니다오류 동안
<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>
: 내가 마지막으로 프록시 서비스에 호출되는 내 ESB의 순서로 클래스 중재자를 호출하고
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());
}
}
try-it에서 처음으로 프록시 서비스를 실행할 때 내 응답이 고유 키 (UUID)를 가지고 캐시되고 다시 서비스를 실행할 때 이전 키가 새 키와 새로운 응답 값으로 대체됩니다. . 내가 찾고있는 키가 동일하면 캐시를 업데이트해야하며 내 키가 다른 경우 새 키를 추가해야하며 이전의 캐시 키가 사라지지 않아야합니다. 나는 플러그 접속 식에있는 wso2 esb에 오는 이것을 달성하기 위하여 ehcache1.5.0 단지를 사용하고있다. 귀하의 답변을 기다리고 있습니다. 미리 감사드립니다
수업 중재자를 디버깅하는 방법은 무엇입니까? – Roy