我必须拦截APi Publisher事件到wso2 ApiManager wso2am-2.1.0 . 我写了一个像这样的观察者..
import java.io.PrintWriter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.apimgt.api.model.API;
import org.wso2.carbon.apimgt.api.model.APIStatus;
import org.wso2.carbon.apimgt.impl.observers.APIStatusObserver;
public class CustomApiObserver implements APIStatusObserver{
private static final Log log = LogFactory.getLog(CustomApiObserver.class);
@Override
public boolean statusChanged(APIStatus previous, APIStatus current, API api)
{
log.info("API status updated from: " + previous.getStatus() + " to: " +
current.getStatus() + " for the API: " + api.getId().getApiName() + " (" + api.getId().getVersion() + ")");
PrintWriter writer;
try {
writer = new PrintWriter("/opt/CustomApiObserver.log", "UTF-8");
writer.println("The first line");
writer.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
}
打包为jar并复制到[AM_HOME] / repository / lib和[AM_HOME] / repository / components / lib .
我没有发现观察员是否应该注册 . 启用Observer还有其他配置吗?
我用谷歌搜索,但我没有找到碳观测员部署的资源 .
wso2server以root身份运行,我没有找到任何记录到碳仪表板或文件wroted,甚至错误跟踪,好像它没有被触发 .
谢谢你们 .