package com.basis.datasource.service.impl;
import com.basis.datasource.UserDataSource;
import com.basis.datasource.service.WisRemoteJobService;
import com.basis.datasource.vo.RemoteJobVO;
import com.core.context.WebContextHolder;
import com.core.utils.scheduler.SchedulerHelper;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Service;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@Service
public class WisRemoteJobServiceImpl implements WisRemoteJobService {
protected static final Log logger = LogFactory.getLog(SchedulerHelper.class);
/**
* 调用远程方法
*
*/
@Override
public void callJob(RemoteJobVO vo) {
try {
String customKey = vo.getCustomKey();
if (StringUtils.isNotBlank(customKey)) {
//切换数据源
UserDataSource.getSingleton().toggleDataSource(customKey);
Object bean = WebContextHolder.getWebAppContext().getBean(vo.getObjectType());
Method method = bean.getClass().getMethod(vo.getMethodName());
method.invoke(bean);
}
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
logger.error("远程定时任务调度失败:" + e.fillInStackTrace());
}
}
}
package com.basis.datasource.service.impl