import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.extension.Activate;
import com.alibaba.dubbo.rpc.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.i18n.LocaleContextHolder;
import java.util.Locale;
/**
* @className: DubboContextLanguageFilter
* @description:
* @author: feiliang
* @create: 2020-04-27 11:46
**/
@Activate(group = Constants.PROVIDER)
public class DubboContextLanguageFilter implements Filter {
private final Logger log = LoggerFactory.getLogger(this.getClass());
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
try {
// 处理你所想要的逻辑
String language = RpcContext.getContext().getAttachment("session:org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE");
if ("en".equals(language)) {
LocaleContextHolder.setDefaultLocale(new Locale("en", "US"));
} else {
LocaleContextHolder.setDefaultLocale(new Locale("zh", "CN"));
}
} catch (Throwable t) {
log.error("[DubboContextEnterFilter - invoke - language fail] 获取并设置language失败!", t);
}
return invoker.invoke(invocation);
}
}在META-INF下新建一个dubbo文件夹,在dubbo文件夹内创建一个com.alibaba.dubbo.rpc.Filter文件
s
DubboContextLanguageFilter=com.xxx.infrastructure.filter.DubboContextLanguageFilter