servicecomb-java-chassis
servicecomb-java-chassis copied to clipboard
调用RPC接口报错:java.lang.IllegalStateException: parameter name is not present,但是<compilerArgument>-parameters</compilerArgument>已经添加
接口定义在单独的组件A中,已添加<compilerArgument>-parameters</compilerArgument>编译 服务 B 实现了该接口定义,部署注册成功,cse已正常显示生成的对应契约,参数名称也为定义好的名称 服务 C 在调用此接口时报错java.lang.IllegalStateException: parameter name is not present,但是另一个服务 D 在调用此接口时能够正常调用成功
是什么原因导致了这种情况~
请问是必现吗,可否提供一个简单的重现例子,步骤?
不是必现的~ 一般出现在自身服务重启,或者接口提供方重启的时候,并且问题出现后不会自动恢复
再补充一下上面问题的描述: 目前只有服务 C 加载服务 B 契约的时候,会出现标题中的问题;服务 C 在调用其他服务的接口时,没有出现这个问题~
补充使用版本:2.6.1
你是用的@RpcSchema还是@RestSchema?之前有同事用错注解会有这种情况,但他好像是必现,所以如果能贴出个简单的demo,可能会更利于我们重现这个问题
使用的@RpcSchema注解
组件A接口定义
public interface BService {
boolean specificMethod(String specificParamName);
}
微服务B接口实现
@RpcSchema(schemaId = "BService")
public class BSerivceImpl implements BService {
@Override
public boolean specificMethod(String specificParamName) {
...
return true;
}
}
微服务C、D注入
@RpcReference(microserviceName = "B", schemaId = "BService")
private BService bService;
您好,错误栈信息再贴一下,谢谢! 问题出现后不会自动恢复,是指出现问题之后只能重启吗? 通过如下方式加的-parameters,并且是ABCD都应用到这个配置了?
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<compilerArgument>-parameters</compilerArgument>
然后试试在参数那里加上如下注解试试,看看能不能解决 @RequestParam("specificParamName")