lbc97
lbc97
那个@id和@JSONVIEW(RoleLevel.ManaLevel.class)这两个注解是你们自定义的注解吗还是哪儿的注解
如果想要获取微服务实例,请按照案例(https://servicecomb.apache.org/references/java-chassis/zh_CN/general-development/context.html ) 使用CustomEndpointDiscoveryFilter过滤器,DiscoveryFilter过滤器并不适用于issue中给出的代码。 具体原因如下: DiscoveryContext context = new DiscoveryContext();初始化时里面的Invocation并没有值,而DiscoveryFilter里面的discovery方法 则需要Invocation里面的数据去创建微服务实例节点DiscoveryTreeNode。
经验证:当一个微服务A的schema还没注册完时,另一个微服务B去调用A的任意接口(指注册上的和没注册上的)都会报如下错误 unexpected error operation=PRODUCER rest consumer.ConsumerController.sayHello, message=cause:InvocationTargetException,message:null;cause:IllegalStateException,message:Probably invoke a service before it is registered, or no instance found for it, appId=xxxxxxx, name=xxxxx, versionRule=xxxxxx. 验证过程: 在provider微服务项目中添加两个schema分别为provider1和provder2,然后在程序中打上断点进行调试,当控制台给出其中一个schema已经注册成功之后(控制台中有相应提示,也可以去微服务引擎页面查看相应的服务契约)启动consumer微服务项目 ,然后调用provider接口
已根据描述做出相应场景demo,结论是Servicecomb可以使用@JsonProperty,经过走读源码发现,该注解是直接作用在类的属性上,可以根据这一点来排查一下是否在业务中用了中间容器处理。走读源码可以在java.lang.reflect类中public Annotation[] getDeclaredAnnotations()方法中打上断点调试。
servicecomb2.6.0已经引入jackson2.12.1不需要引入第三方了,而且如果再引入第三方应该会报错导致程序启动失败
验证结果: 当consumer访问接口A时是轮询访问,即这一次访问调用provider1的A接口,下一次就会访问provider2的A接口,而B接口可以正常访问,与正常访问无异。 验证过程: 先启动高版本的微服务,即拥有B接口的微服务,再启动consumer,并多次访问A,B两个接口,再启动低版本的微服务,再多次访问A,B接口
你这个获取的时候要在哪里获取呢,是下游微服务吗还是说后面的某个特定位置。
能给看一下你是如何在filter里面获取上下文并添加内容的吗?
我这里直接是可以取到框架的上下文的。
看日志像是设置了全局的ssl设置,建议只设置自己业务调用范围的SSL,因为微服务引擎的证书需要找SRE设置。