provider端与consumer端都没有服务契约配置的ymal文件,provider端是通过@RpcSchema注解的,consumer端从日志看是从SC获取后执行SchemaLoader.registerSchema进行注册了,但是在调用时出现类型转换错误。
provider端测试类
@RpcSchema(schemaId = "MyTestSchema")
public class MyTestSchema {
public String test(String name) {
System.out.println(" ---------- test: " + name);
return "hello " + name;
}
}
consumer端通过InvokerUtils调用,出现类型类型转换异常,日志如下:
2017-09-07 15:46:08,997 [INFO] Write merged log4j config file to E:\Java\eclipse_workspaces\ws_oxygen\java-chassis-sources\demo\demo-pojo\pojo-client\target\classes\config\merged.log4j.properties io.servicecomb.foundation.common.utils.Log4jUtils.outputFile(Log4jUtils.java:102)
2017-09-07 15:46:09,183 [INFO] Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@7a5d012c: startup date [Thu Sep 07 15:46:09 CST 2017]; root of context hierarchy org.springframework.context.support.AbstractApplicationContext.prepareRefresh(AbstractApplicationContext.java:582)
2017-09-07 15:46:09,259 [INFO] Loading XML bean definitions from URL [jar:file:/E:/Java/.m2/repository/io/servicecomb/foundation-common/0.2.0/foundation-common-0.2.0.jar!/META-INF/spring/common.bean.xml] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:317)
2017-09-07 15:46:09,383 [INFO] Loading XML bean definitions from URL [jar:file:/E:/Java/.m2/repository/io/servicecomb/foundation-config/0.2.0/foundation-config-0.2.0.jar!/META-INF/spring/cse.bean.xml] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:317)
2017-09-07 15:46:09,432 [INFO] Loading XML bean definitions from URL [jar:file:/E:/Java/.m2/repository/io/servicecomb/foundation-vertx/0.2.0/foundation-vertx-0.2.0.jar!/META-INF/spring/cse.bean.xml] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:317)
2017-09-07 15:46:09,455 [INFO] Loading XML bean definitions from URL [jar:file:/E:/Java/.m2/repository/io/servicecomb/java-chassis-core/0.2.0/java-chassis-core-0.2.0.jar!/META-INF/spring/cse.bean.xml] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:317)
2017-09-07 15:46:09,961 [INFO] Loading XML bean definitions from URL [jar:file:/E:/Java/.m2/repository/io/servicecomb/transport-rest-client/0.2.0/transport-rest-client-0.2.0.jar!/META-INF/spring/cse.transport.rest.bean.xml] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:317)
2017-09-07 15:46:10,368 [WARN] No URLs will be polled as dynamic configuration sources. com.netflix.config.sources.URLConfigurationSource.(URLConfigurationSource.java:121)
2017-09-07 15:46:10,368 [INFO] To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath. com.netflix.config.sources.URLConfigurationSource.(URLConfigurationSource.java:122)
2017-09-07 15:46:10,375 [INFO] create dynamic config: io.servicecomb.config.ConfigUtil.createDynamicConfig(ConfigUtil.java:156)
2017-09-07 15:46:10,454 [INFO] create local config: io.servicecomb.config.ConfigUtil.createLocalConfig(ConfigUtil.java:88)
2017-09-07 15:46:10,455 [INFO] file:/E:/Java/eclipse_workspaces/ws_oxygen/java-chassis-sources/demo/demo-pojo/pojo-client/target/classes/microservice.yaml. io.servicecomb.config.ConfigUtil.createLocalConfig(ConfigUtil.java:90)
2017-09-07 15:46:10,472 [INFO] config center URL is missing, skip to load configuration from config center io.servicecomb.config.ConfigUtil.createConfigFromConfigCenter(ConfigUtil.java:139)
2017-09-07 15:46:10,979 [INFO] JSR-330 'javax.inject.Inject' annotation found and supported for autowiring org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.(AutowiredAnnotationBeanPostProcessor.java:155)
2017-09-07 15:46:11,181 [INFO] Found swagger generator context: io.servicecomb.swagger.generator.springmvc.SpringmvcSwaggerGeneratorContext io.servicecomb.swagger.generator.core.CompositeSwaggerGeneratorContext.(CompositeSwaggerGeneratorContext.java:41)
2017-09-07 15:46:11,181 [INFO] Found swagger generator context: io.servicecomb.swagger.generator.pojo.PojoSwaggerGeneratorContext io.servicecomb.swagger.generator.core.CompositeSwaggerGeneratorContext.(CompositeSwaggerGeneratorContext.java:41)
2017-09-07 15:46:12,554 [INFO] load microservice config, name=pojoClient, paths=[file:/E:/Java/eclipse_workspaces/ws_oxygen/java-chassis-sources/demo/demo-pojo/pojo-client/target/classes/microservice.yaml] io.servicecomb.serviceregistry.definition.MicroserviceDefinition.logConfigPath(MicroserviceDefinition.java:127)
2017-09-07 15:46:12,560 [INFO] It is running in the normal mode, a separated service registry is required io.servicecomb.serviceregistry.registry.ServiceRegistryFactory.create(ServiceRegistryFactory.java:81)
2017-09-07 15:46:12,716 [INFO] executor group 2, thread per group 4. io.servicecomb.core.executor.FixedThreadExecutor.(FixedThreadExecutor.java:53)
2017-09-07 15:46:13,247 [INFO] add network interface name:eth3,host address:10.23.7.126 io.servicecomb.foundation.common.net.NetUtils.doGetIpv4AddressFromNetworkInterface(NetUtils.java:104)
2017-09-07 15:46:13,274 [INFO] add network interface name:eth4,host address:192.168.183.1 io.servicecomb.foundation.common.net.NetUtils.doGetIpv4AddressFromNetworkInterface(NetUtils.java:104)
2017-09-07 15:46:13,552 [INFO] add host name from localhost:zxg-PC,host address:10.23.7.126 io.servicecomb.foundation.common.net.NetUtils.(NetUtils.java:62)
2017-09-07 15:46:13,552 [INFO] choose io.servicecomb.transport.rest.vertx.VertxRestTransport for rest. io.servicecomb.core.transport.TransportManager.chooseOneTransport(TransportManager.java:85)
2017-09-07 15:46:13,553 [INFO] choose io.servicecomb.transport.highway.HighwayTransport for highway. io.servicecomb.core.transport.TransportManager.chooseOneTransport(TransportManager.java:85)
2017-09-07 15:46:13,585 [INFO] set uploads directory to null io.servicecomb.transport.rest.vertx.RestServerVerticle.init(RestServerVerticle.java:68)
2017-09-07 15:46:13,586 [WARN] rest listen address is not configured, will not start. io.servicecomb.transport.rest.vertx.RestServerVerticle.start(RestServerVerticle.java:77)
2017-09-07 15:46:14,068 [WARN] highway listen address is not configured, will not listen. io.servicecomb.transport.highway.HighwayServerVerticle.startListen(HighwayServerVerticle.java:59)
2017-09-07 15:46:14,088 [INFO] running microservice register task. io.servicecomb.serviceregistry.task.MicroserviceRegisterTask.doRegister(MicroserviceRegisterTask.java:55)
2017-09-07 15:46:14,653 [WARN] service does not exist io.servicecomb.serviceregistry.client.http.ServiceRegistryClientImpl.lambda$null$0(ServiceRegistryClientImpl.java:119)
2017-09-07 15:46:14,702 [INFO] Registry Microservice successfully. id=394fbafa93a111e795fc005056ac44e8 appId=pojotest, name=pojoClient, version=0.0.1, schemaIds=[] io.servicecomb.serviceregistry.task.MicroserviceRegisterTask.doRegister(MicroserviceRegisterTask.java:87)
2017-09-07 15:46:14,705 [INFO] read MicroserviceRegisterTask status is FINISHED io.servicecomb.serviceregistry.task.ServiceCenterTask.onRegisterTask(ServiceCenterTask.java:73)
2017-09-07 15:46:14,706 [INFO] running microservice instance register task. io.servicecomb.serviceregistry.task.MicroserviceInstanceRegisterTask.doRegister(MicroserviceInstanceRegisterTask.java:57)
2017-09-07 15:46:14,748 [INFO] Register microservice instance success. microserviceId=394fbafa93a111e795fc005056ac44e8 instanceId=3957193493a111e795fc005056ac44e8 endpoints=[] lease 120s io.servicecomb.serviceregistry.task.MicroserviceInstanceRegisterTask.doRegister(MicroserviceInstanceRegisterTask.java:75)
2017-09-07 15:46:14,749 [INFO] read MicroserviceInstanceRegisterTask status is FINISHED io.servicecomb.serviceregistry.task.ServiceCenterTask.onRegisterTask(ServiceCenterTask.java:73)
2017-09-07 15:46:14,798 [INFO] Found schema ids from service center, pojotest:pojo:latest:[MyTestSchema] io.servicecomb.core.definition.schema.ConsumerSchemaFactory.findMicroservice(ConsumerSchemaFactory.java:106)
2017-09-07 15:46:14,808 [INFO] load schema from service center, microservice=pojotest:pojo:0.0.4, schemaId=MyTestSchema, result=true io.servicecomb.core.definition.schema.ConsumerSchemaFactory.loadSwagger(ConsumerSchemaFactory.java:146)
2017-09-07 15:46:14,835 [INFO] Reconnected to service center, clean up the provider's microservice instances cache. io.servicecomb.serviceregistry.registry.AbstractServiceRegistry.onRecovered(AbstractServiceRegistry.java:172)
2017-09-07 15:46:14,836 [INFO] watching microservice 394fbafa93a111e795fc005056ac44e8 successfully, the chosen service center address is 10.23.10.117:30100 io.servicecomb.serviceregistry.client.http.ServiceRegistryClientImpl.lambda$watch$6(ServiceRegistryClientImpl.java:521)
2017-09-07 15:46:14,915 [INFO] register schema pojotest/pojo/MyTestSchema io.servicecomb.core.definition.loader.SchemaLoader.registerSchema(SchemaLoader.java:88)
2017-09-07 15:46:14,940 [INFO] on schema loaded, new schema. pojo:MyTestSchema io.servicecomb.common.rest.RestEngineSchemaListener.onSchemaLoaded(RestEngineSchemaListener.java:51)
2017-09-07 15:46:15,287 [INFO] Using loadbalance rule [com.netflix.loadbalancer.RoundRobinRule] for service [pojo,latest]. io.servicecomb.loadbalance.LoadbalanceHandler.createLoadBalancer(LoadbalanceHandler.java:294)
2017-09-07 15:46:15,521 [INFO] find instances[1] from service center success. service=pojotest/pojo io.servicecomb.serviceregistry.registry.AbstractServiceRegistry.findServiceInstance(AbstractServiceRegistry.java:204)
2017-09-07 15:46:15,522 [INFO] service id=f6dcfc3693a011e795fc005056ac44e8, instance id=f6e4d5f593a011e795fc005056ac44e8, endpoints=[highway://10.23.7.126:7070?login=true] io.servicecomb.serviceregistry.registry.AbstractServiceRegistry.findServiceInstance(AbstractServiceRegistry.java:209)
2017-09-07 15:46:15,669 [INFO] connecting to address /10.23.7.126:7070 io.servicecomb.foundation.vertx.client.tcp.TcpClientConnection.connect(TcpClientConnection.java:158)
2017-09-07 15:46:15,678 [INFO] connectd to address /10.23.7.126:7070 success in thread transport-vert.x-eventloop-thread-2. io.servicecomb.foundation.vertx.client.tcp.TcpClientConnection.onConnectSuccess(TcpClientConnection.java:171)
2017-09-07 15:46:15,685 [INFO] try login to address /10.23.7.126:7070 io.servicecomb.foundation.vertx.client.tcp.TcpClientConnection.tryLogin(TcpClientConnection.java:222)
2017-09-07 15:46:15,970 [INFO] login success, address /10.23.7.126:7070 io.servicecomb.foundation.vertx.client.tcp.TcpClientConnection.onLoginResponse(TcpClientConnection.java:246)
2017-09-07 15:46:15,972 [ERROR] Unhandled exception io.vertx.core.impl.ContextImpl.lambda$wrapTask$2(ContextImpl.java:322)
java.lang.Error: encode request failed. appid=pojotest, qualifiedName=pojo.MyTestSchema.test
at io.servicecomb.transport.highway.HighwayClientPackage.createStream(HighwayClientPackage.java:45)
at io.servicecomb.foundation.vertx.client.tcp.TcpClientConnection.writePackageInContext(TcpClientConnection.java:149)
at io.servicecomb.foundation.vertx.client.tcp.TcpClientConnection.writeInContext(TcpClientConnection.java:137)
at io.servicecomb.foundation.vertx.client.tcp.TcpClientConnection.onLoginSuccess(TcpClientConnection.java:252)
at io.servicecomb.foundation.vertx.client.tcp.TcpClientConnection.onLoginResponse(TcpClientConnection.java:247)
at io.servicecomb.foundation.vertx.AsyncResultCallback.success(AsyncResultCallback.java:24)
at io.servicecomb.foundation.vertx.client.tcp.TcpRequest.onReply(TcpRequest.java:48)
at io.servicecomb.foundation.vertx.client.tcp.TcpClientConnection.onReply(TcpClientConnection.java:283)
at io.servicecomb.foundation.vertx.server.TcpParser.onReadOnePackage(TcpParser.java:124)
at io.servicecomb.foundation.vertx.server.TcpParser.onParse(TcpParser.java:115)
at io.vertx.core.parsetools.impl.RecordParserImpl.parseFixed(RecordParserImpl.java:203)
at io.vertx.core.parsetools.impl.RecordParserImpl.handleParsing(RecordParserImpl.java:161)
at io.vertx.core.parsetools.impl.RecordParserImpl.handle(RecordParserImpl.java:218)
at io.servicecomb.foundation.vertx.server.TcpParser.handle(TcpParser.java:131)
at io.servicecomb.foundation.vertx.server.TcpParser.handle(TcpParser.java:32)
at io.vertx.core.net.impl.NetSocketImpl.handleDataReceived(NetSocketImpl.java:324)
at io.vertx.core.net.impl.VertxNetHandler.lambda$channelRead$0(VertxNetHandler.java:67)
at io.vertx.core.impl.ContextImpl.lambda$wrapTask$2(ContextImpl.java:314)
at io.vertx.core.impl.ContextImpl.executeFromIO(ContextImpl.java:190)
at io.vertx.core.net.impl.VertxNetHandler.channelRead(VertxNetHandler.java:67)
at io.vertx.core.net.impl.VertxNetHandler.channelRead(VertxNetHandler.java:31)
at io.vertx.core.net.impl.VertxHandler.channelRead(VertxHandler.java:122)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:129)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:610)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:551)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:465)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:437)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:873)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassCastException: [C cannot be cast to java.lang.String
at io.protostuff.runtime.RuntimeUnsafeFieldFactory$9$1.writeTo(RuntimeUnsafeFieldFactory.java:760)
at io.protostuff.runtime.RuntimeSchema.writeTo(RuntimeSchema.java:475)
at io.servicecomb.codec.protobuf.utils.schema.ArgsNotWrapSchema.writeObject(ArgsNotWrapSchema.java:50)
at io.servicecomb.codec.protobuf.utils.WrapSchema.writeObject(WrapSchema.java:51)
at io.servicecomb.transport.highway.HighwayOutputStream.write(HighwayOutputStream.java:57)
at io.servicecomb.transport.highway.HighwayOutputStream.write(HighwayOutputStream.java:36)
at io.servicecomb.transport.highway.HighwayCodec.encodeRequest(HighwayCodec.java:54)
at io.servicecomb.transport.highway.HighwayClientPackage.createStream(HighwayClientPackage.java:40)
... 35 more