Coder Social home page Coder Social logo

apache / servicecomb-java-chassis Goto Github PK

View Code? Open in Web Editor NEW
1.9K 137.0 804.0 27.42 MB

ServiceComb Java Chassis is a Software Development Kit (SDK) for rapid development of microservices in Java, providing service registration, service discovery, dynamic routing, and service management features

License: Apache License 2.0

Java 99.99% HTML 0.01%
servicecomb

servicecomb-java-chassis's Introduction

Java Chassis 中文 Maven Central License

Apache ServiceComb Java Chassis is a Software Development Kit (SDK) for rapid development of microservices in Java, providing service registration, service discovery, dynamic routing, and service management features.

releases

Release Train Latest Version Compiled JDK Version Tested JDK Version Open API Notes
Java Chassis 3 3.2.0 OpenJDK 17 OpenJDK 17 3.0.x Depends on Spring Boot 3
Java Chassis 2 2.8.18 OpenJDK 8 OpenJDK 8, 11, 17 2.0.x Depends on Spring 5
Java Chassis 1 1.3.11 OpenJDK 8 OpenJDK 8 2.0.x End of Support

NOTICE: Since Open API 3.0.x is not compatible with 2.0.x, Java Chassis 2 and Java Chassis 1 can not work together with Java Chassis 3. All related consumers, providers and edge service need use Java Chassis 3 when upgrading.

NOTICE: Java Chassis 1 reached its end of support now after it's first release from 2018.

Quick Start

  • Define API
@RequestMapping(path = "/provider")
public interface ProviderService {
  @GetMapping("/sayHello")
  String sayHello(@RequestParam("name") String name);
}
  • Provider service
@RestSchema(schemaId = "ProviderController", schemaInterface = ProviderService.class)
public class ProviderController implements ProviderService {
  @Override
  public String sayHello(String name) {
    return "Hello " + name;
  }
}
  • Consumer service
@Configuration
public class ProviderServiceConfiguration {
  @Bean
  public ProviderService providerService() {
    return Invoker.createProxy("provider", "ProviderController", ProviderService.class);
  }
}

Invoke Provider service with RPC

@RestSchema(schemaId = "ConsumerController", schemaInterface = ConsumerService.class)
public class ConsumerController implements ConsumerService {
  private ProviderService providerService;

  @Autowired
  public void setProviderService(ProviderService providerService) {
    this.providerService = providerService;
  }

  @Override
  public String sayHello(String name) {
    return providerService.sayHello(name);
  }
}

Try out this example here .

Documentation

Project documentation is available on the ServiceComb Java Chassis Developer Guide.

Building

You don’t need to build from source to use Java Chassis (binaries in apache nexus ), but if you want to try out the latest and greatest, Java Chassis can be easily built with the maven. You also need JDK 17.

  mvn clean install

The first build may take a longer than expected as Maven downloads all the dependencies.

Automated Testing

To build the docker image and run the integration tests with docker, you can use maven docker profile

  mvn clean install -Pdocker -Pit

If you are using docker machine, please use the following command

  mvn clean install -Pdocker -Pit -Pdocker-machine

Contact

Bugs: issues

mailing list: subscribe dev

Contributing

See CONTRIBUTING for details on submitting patches and the contribution workflow.

License

Licensed under an Apache 2.0 license.

servicecomb-java-chassis's People

Contributors

acsukesh avatar angli2 avatar aseto2016 avatar asifdxtreme avatar chengyouling avatar david6969xin avatar dependabot[bot] avatar develpoerx avatar eric-lee-ltk avatar fu-turer avatar guoyl123 avatar heyile avatar jeho0815 avatar jungan21 avatar kaister3 avatar laijianbin avatar lbc97 avatar liubao68 avatar lovehzj avatar maheshrajus avatar seanyinx avatar shoothzj avatar weichao666 avatar willemjiang avatar wujimin avatar xuyiyun0929 avatar yangbor avatar yanghao605 avatar yhs0092 avatar zanechou1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

servicecomb-java-chassis's Issues

按照快速启动教程本地启动后

java.net.ConnectException: Failed to connect to /127.0.0.1:9411
at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:189) ~[okhttp-3.4.1.jar:na]
at okhttp3.internal.connection.RealConnection.buildConnection(RealConnection.java:173) ~[okhttp-3.4.1.jar:na]
at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:114) ~[okhttp-3.4.1.jar:na]
at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:193) ~[okhttp-3.4.1.jar:na]
at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:129) ~[okhttp-3.4.1.jar:na]
at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:98) ~[okhttp-3.4.1.jar:na]
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42) ~[okhttp-3.4.1.jar:na]
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) ~[okhttp-3.4.1.jar:na]
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) ~[okhttp-3.4.1.jar:na]
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:109) ~[okhttp-3.4.1.jar:na]
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) ~[okhttp-3.4.1.jar:na]
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) ~[okhttp-3.4.1.jar:na]
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) ~[okhttp-3.4.1.jar:na]
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) ~[okhttp-3.4.1.jar:na]
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:124) ~[okhttp-3.4.1.jar:na]
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) ~[okhttp-3.4.1.jar:na]
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) ~[okhttp-3.4.1.jar:na]
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:170) ~[okhttp-3.4.1.jar:na]
at okhttp3.RealCall.access$100(RealCall.java:33) ~[okhttp-3.4.1.jar:na]
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:120) ~[okhttp-3.4.1.jar:na]
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32) [okhttp-3.4.1.jar:na]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_121]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_121]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121]

install ServiceComb-Java-Chassis 时出错

根据我们的快速入门的指南,发现有编译错误。用的是阿里云maven镜像库。

git clone https://github.com/ServiceComb/ServiceComb-Java-Chassis.git
cd ServiceComb-Java-Chassis

只想上述命令是OK的。但是执行下述命令时候,有错误:

mvn clean install -DskipTests -DskipITs

root@ubuntu64:/usr/share/maven/conf# cd /home/zhu/docker-file/ServiceComb-Java-Chassis/
root@ubuntu64:/home/zhu/docker-file/ServiceComb-Java-Chassis# mvn clean install -DskipTests -DskipITs
[INFO] Scanning for projects...
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[FATAL] Non-parseable POM /root/.m2/repository/org/springframework/boot/spring-boot-dependencies/1.4.5.RELEASE/spring-boot-dependencies-1.4.5.RELEASE.pom: attribute value must start with quotation or apostrophe not t (position: TEXT seen ...vascript"\r\n\t\t\tsrc="js/visitorAccountApplication/portal.js" defer=t... @14:56) @ /root/.m2/repository/org/springframework/boot/spring-boot-dependencies/1.4.5.RELEASE/spring-boot-dependencies-1.4.5.RELEASE.pom, line 14, column 56
[FATAL] Non-parseable POM /root/.m2/repository/org/springframework/cloud/spring-cloud-dependencies/Camden.SR6/spring-cloud-dependencies-Camden.SR6.pom: attribute value must start with quotation or apostrophe not t (position: TEXT seen ...vascript"\r\n\t\t\tsrc="js/visitorAccountApplication/portal.js" defer=t... @14:56) @ /root/.m2/repository/org/springframework/cloud/spring-cloud-dependencies/Camden.SR6/spring-cloud-dependencies-Camden.SR6.pom, line 14, column 56
[ERROR] 'dependencies.dependency.version' for org.hamcrest:hamcrest-all:jar is missing. @ io.servicecomb:java-chassis-parent:[unknown-version], /home/zhu/docker-file/ServiceComb-Java-Chassis/parent/pom.xml, line 62, column 17
[FATAL] Non-parseable POM /root/.m2/repository/org/springframework/boot/spring-boot-dependencies/1.4.5.RELEASE/spring-boot-dependencies-1.4.5.RELEASE.pom: attribute value must start with quotation or apostrophe not t (position: TEXT seen ...vascript"\r\n\t\t\tsrc="js/visitorAccountApplication/portal.js" defer=t... @14:56) @ /root/.m2/repository/org/springframework/boot/spring-boot-dependencies/1.4.5.RELEASE/spring-boot-dependencies-1.4.5.RELEASE.pom, line 14, column 56
[FATAL] Non-parseable POM /root/.m2/repository/org/springframework/cloud/spring-cloud-dependencies/Camden.SR6/spring-cloud-dependencies-Camden.SR6.pom: attribute value must start with quotation or apostrophe not t (position: TEXT seen ...vascript"\r\n\t\t\tsrc="js/visitorAccountApplication/portal.js" defer=t... @14:56) @ /root/.m2/repository/org/springframework/cloud/spring-cloud-dependencies/Camden.SR6/spring-cloud-dependencies-Camden.SR6.pom, line 14, column 56
[FATAL] Non-parseable POM /root/.m2/repository/org/springframework/boot/spring-boot-dependencies/1.4.5.RELEASE/spring-boot-dependencies-1.4.5.RELEASE.pom: attribute value must start with quotation or apostrophe not t (position: TEXT seen ...vascript"\r\n\t\t\tsrc="js/visitorAccountApplication/portal.js" defer=t... @14:56) @ /root/.m2/repository/org/springframework/boot/spring-boot-dependencies/1.4.5.RELEASE/spring-boot-dependencies-1.4.5.RELEASE.pom, line 14, column 56
[FATAL] Non-parseable POM /root/.m2/repository/org/springframework/cloud/spring-cloud-dependencies/Camden.SR6/spring-cloud-dependencies-Camden.SR6.pom: attribute value must start with quotation or apostrophe not t (position: TEXT seen ...vascript"\r\n\t\t\tsrc="js/visitorAccountApplication/portal.js" defer=t... @14:56) @ /root/.m2/repository/org/springframework/cloud/spring-cloud-dependencies/Camden.SR6/spring-cloud-dependencies-Camden.SR6.pom, line 14, column 56
[ERROR] 'dependencies.dependency.version' for org.hamcrest:hamcrest-all:jar is missing. @ io.servicecomb:java-chassis-parent:[unknown-version], /home/zhu/docker-file/ServiceComb-Java-Chassis/parent/pom.xml, line 62, column 17
以下省略

POJO中包含的static方法被暴露为契约接口,启动时会报错

使用场景:使用@RpcSchema将一个单例POJO暴露为契约接口,但是调用该类中的public方法时,会报下面的错:
Exception in thread "main" java.lang.NullPointerException
at io.servicecomb.swagger.generator.core.utils.ClassUtils.getOrCreateClass(ClassUtils.java:135)
at io.servicecomb.swagger.converter.model.ModelImplConverter.doConvert(ModelImplConverter.java:55)
at io.servicecomb.swagger.converter.AbstractConverter.convert(AbstractConverter.java:42)
at io.servicecomb.swagger.converter.ConverterMgr.findJavaType(ConverterMgr.java:188)
at io.servicecomb.swagger.converter.ConverterMgr.findByRef(ConverterMgr.java:196)
at io.servicecomb.swagger.converter.property.RefPropertyConverter.doConvert(RefPropertyConverter.java:30)
at io.servicecomb.swagger.converter.AbstractConverter.convert(AbstractConverter.java:42)
at io.servicecomb.swagger.converter.ConverterMgr.findJavaType(ConverterMgr.java:188)
at io.servicecomb.swagger.generator.core.utils.ClassUtils.createInterface(ClassUtils.java:252)
at io.servicecomb.swagger.generator.core.utils.ClassUtils.getOrCreateInterface(ClassUtils.java:237)
at io.servicecomb.core.definition.SchemaMeta.(SchemaMeta.java:65)
at io.servicecomb.core.definition.loader.SchemaLoader.registerSchema(SchemaLoader.java:92)
at io.servicecomb.core.definition.schema.ConsumerSchemaFactory.createSchema(ConsumerSchemaFactory.java:132)
at io.servicecomb.core.definition.schema.ConsumerSchemaFactory.createSchema(ConsumerSchemaFactory.java:33)
at io.servicecomb.core.definition.schema.AbstractSchemaFactory.getOrCreateSchema(AbstractSchemaFactory.java:59)
at io.servicecomb.core.definition.schema.ConsumerSchemaFactory.getOrCreateConsumerSchema(ConsumerSchemaFactory.java:122)
at io.servicecomb.core.definition.schema.ConsumerSchemaFactory.getOrCreateMicroserviceMeta(ConsumerSchemaFactory.java:78)
at io.servicecomb.core.provider.consumer.ReferenceConfig.(ReferenceConfig.java:35)
at io.servicecomb.core.provider.consumer.ConsumerProviderManager.getReferenceConfig(ConsumerProviderManager.java:82)
at io.servicecomb.core.provider.consumer.ReferenceConfigUtils.getForInvoke(ReferenceConfigUtils.java:42)
at io.servicecomb.provider.pojo.Invoker.prepare(Invoker.java:59)
at io.servicecomb.provider.pojo.Invoker.invoke(Invoker.java:81)
at com.sun.proxy.$Proxy17.selectByPrimaryKey(Unknown Source)
at com.ceewa.cloud.consumer.DubboxConsumer.testMycat(DubboxConsumer.java:49)
at com.ceewa.cloud.consumer.DubboxConsumer.main(DubboxConsumer.java:38)

在getInstance方法上添加@ApiOperation(value = "getInstance is not an endpoint", hidden = true)标签后,该问题得到解决,请问对于解决这种问题,大家有没有什么更好的建议?

BMI Calculator Registry error in VM(分布式调用链跟踪)

Run bmi-calculator on virtual machine, and registry error occured.
(只有在分布式调用链有效的情况下才会出现这种情况。)

microservice.yaml

APPLICATION_ID: bmi
service_description:
name: calculator
version: 0.0.1
cse:
service:
registry:
address: http://192.168.158.101:30100
rest:
address: 0.0.0.0:7777
cse:
handler:
chain:
Provider:
default: tracing-provider


virtual machine IP: 192.168.158.101

root@ubuntu64:~# ifconfig
docker0 Link encap:Ethernet HWaddr 02:42:10:10:7a:4b
inet addr:172.17.0.1 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::42:10ff:fe10:7a4b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1554 errors:0 dropped:0 overruns:0 frame:0
TX packets:1723 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:475775 (475.7 KB) TX bytes:271834 (271.8 KB)

enp0s3 Link encap:Ethernet HWaddr 08:00:27:1e:2a:ea
inet addr:192.168.158.101 Bcast:192.168.158.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe1e:2aea/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:10189 errors:0 dropped:0 overruns:0 frame:0
TX packets:12953 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:743143 (743.1 KB) TX bytes:2505831 (2.5 MB)

service center running in docker.

root@ubuntu64:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c117ca577f65 servicecomb/service-center:latest "/root/start.sh" About an hour ago Up About an hour 2379-2380/tcp, 0.0.0.0:30100->30100/tcp dreamy_minsky
b94d2552eb76 openzipkin/zipkin "/bin/sh -c 'test ..." 2 hours ago Up 2 hours 9410/tcp, 0.0.0.0:9411->9411/tcp jovial_stallman
3547dcda858f rancher/server:stable "/usr/bin/entry /u..." 23 hours ago Up 2 hours 3306/tcp, 0.0.0.0:8080->8080/tcp ecstatic_bartik

run calculator, and Registry error :

root@ubuntu64:/home/zhu/docker/ServiceComb-Java-Chassis/samples/bmi/calculator# mvn spring-boot:run -Ptracing -Drun.jvmArguments="-Dcse.handler.chain.Provider.default=tracing-provider"

2017-09-19 17:13:43,891 [ERROR] POST /registry/v3/microservices fail, endpoint is 127.0.0.1:30100, message: Failed to create SSL connection io.servicecomb.serviceregistry.client.http.RestUtils.lambda$null$1(RestUtils.java:80)
2017-09-19 17:13:43,893 [WARN] service center has no available instance io.servicecomb.serviceregistry.client.IpPortManager.nextDefaultIpPort(IpPortManager.java:139)
2017-09-19 17:13:43,895 [ERROR] Registry microservice failed. appId=bmi, name=calculator, version=0.0.1 io.servicecomb.serviceregistry.task.MicroserviceRegisterTask.doRegister(MicroserviceRegisterTask.java:77)
2017-09-19 17:13:43,900 [INFO] read MicroserviceRegisterTask status is READY io.servicecomb.serviceregistry.task.ServiceCenterTask.onRegisterTask(ServiceCenterTask.java:74)
2017-09-19 17:13:46,902 [WARN] sc task interval changed from 2 to 3 io.servicecomb.serviceregistry.task.ServiceCenterTaskMonitor.beginCycle(ServiceCenterTaskMonitor.java:38)
2017-09-19 17:13:46,903 [INFO] running microservice register task. io.servicecomb.serviceregistry.task.MicroserviceRegisterTask.doRegister(MicroserviceRegisterTask.java:57)
2017-09-19 17:13:46,915 [ERROR] GET /registry/v3/existence?appId=bmi&type=microservice&serviceName=calculator&version=0.0.1 fail, endpoint is 127.0.0.1:30100, message: Failed to create SSL connection io.servicecomb.serviceregistry.client.http.RestUtils.lambda$null$1(RestUtils.java:80)
2017-09-19 17:13:46,915 [WARN] service center has no available instance io.servicecomb.serviceregistry.client.IpPortManager.nextDefaultIpPort(IpPortManager.java:139)
2017-09-19 17:13:46,930 [ERROR] POST /registry/v3/microservices fail, endpoint is 127.0.0.1:30100, message: Failed to create SSL connection io.servicecomb.serviceregistry.client.http.RestUtils.lambda$null$1(RestUtils.java:80)
2017-09-19 17:13:46,931 [WARN] service center has no available instance io.servicecomb.serviceregistry.client.IpPortManager.nextDefaultIpPort(IpPortManager.java:139)
2017-09-19 17:13:46,932 [ERROR] Registry microservice failed. appId=bmi, name=calculator, version=0.0.1 io.servicecomb.serviceregistry.task.MicroserviceRegisterTask.doRegister(MicroserviceRegisterTask.java:77)
2017-09-19 17:13:46,933 [INFO] read MicroserviceRegisterTask status is READY io.servicecomb.serviceregistry.task.ServiceCenterTask.onRegisterTask(ServiceCenterTask.java:74)

api鉴权机制

想了解一下api鉴权机制是怎么做的,是否有例子可以参考?

关于yaml文件版本号的问题

yaml文件微服务的version: 0.0.3,请问这个版本号如何使用?
比如两个点分隔的三个数字之间是什么关系?是最后的版本数字大小有一定限制吗,比如满1000进1,还是三个数字之间只是表示版本的级别?
另外,数字大小有限制吗,比如最后数字最大值可以是多少?

BMI示例WebApp端口冲突

默认的8888端口会与某些版本的迅雷冲突,电脑安装迅雷大概率事件,建议更换端口

Discuss about: How to instrument the ServiceComb SDK

Hi, everyone, I am from sky-walking team, which is an open source APM hosted on GitHub. We are also an opentracing supported tracer.

As ServiceComb has 4 releases, even they are all pre-release versions(from the version number is 0.x), I wonder that the framework core is stabilization enough to add some instrumentation codes or provide our team some intercept points about auto instrumentation agent do its works.

Skywalking has many supported from Chinese contributors, so we want to support Chinese open source RPC framework first. We have already supported Dubbo/Dubbox, Motan, Hprose(by OT API) , and been cooperating with dangdang.com about linkerd instrumentation and Sharding-JDBC instrumentation.

If your team has interested in instrumentation about micro-service, even event-bus, maybe we can cooperate on these things. Welcome to ping @wu-sheng and @sky-walking, when you have time or think it's ready to go.

服务中心注册服务和服务调用问题

您好:
我使用华为运服务,按照网站指导,下载sdk和服务中心,启动服务中心,然后用maven构件例子程序,构建成功,导入eclipse工具。
1)启动服务中心,类型为:service-center-0.1.1-windows-amd64,运行start.bat,启动服务中心,一直滚动如下信息:
2017-09-04T17:27:44.4495078+08:00 DEBUG service_center 31924 github.com/ServiceC
omb/service-center/server/core/registry/store/async_task.go collectReadyTasks():
208 - service_center."no task in queue, key is /cse-sr/inst/leases/default/defau
lt/27b96c20914811e7888a9c4e36cb7735/27e75a9c914811e7888a9c4e36cb7735"
2017-09-04T17:27:44.4495078+08:00 DEBUG service_center 31924 github.com/ServiceC
omb/service-center/server/core/registry/store/async_task.go collectReadyTasks():
208 - service_center."no task in queue, key is /cse-sr/inst/leases/default/defau
lt/3ed620f0914b11e7888a9c4e36cb7735/c69cb067914d11e7888a9c4e36cb7735"
2)启动pojo的例子程序,运行PojoProviderMain,注册服务,出现如下异常:
2017-09-04 16:48:06,468 [WARN] Thread Thread[transport-vert.x-eventloop-thread-0,5,main] has been blocked for 5485 ms, time limit is 2000 io.vertx.core.impl.BlockedThreadChecker$1.run(BlockedThreadChecker.java:57)
io.vertx.core.VertxException: Thread blocked
at java.net.NetworkInterface.getAll(Native Method)
at java.net.NetworkInterface.getNetworkInterfaces(Unknown Source)
at io.netty.util.internal.MacAddressUtil.bestAvailableMac(MacAddressUtil.java:58)
at io.netty.channel.DefaultChannelId.defaultMachineId(DefaultChannelId.java:127)
at io.netty.channel.DefaultChannelId.(DefaultChannelId.java:104)
at io.netty.channel.AbstractChannel.newId(AbstractChannel.java:107)
at io.netty.channel.AbstractChannel.(AbstractChannel.java:79)
at io.netty.channel.nio.AbstractNioChannel.(AbstractNioChannel.java:84)
at io.netty.channel.nio.AbstractNioMessageChannel.(AbstractNioMessageChannel.java:42)
at io.netty.channel.socket.nio.NioDatagramChannel.(NioDatagramChannel.java:146)
at io.netty.channel.socket.nio.NioDatagramChannel.(NioDatagramChannel.java:114)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at io.netty.channel.ReflectiveChannelFactory.newChannel(ReflectiveChannelFactory.java:38)
at io.netty.bootstrap.AbstractBootstrap.initAndRegister(AbstractBootstrap.java:319)
at io.netty.bootstrap.AbstractBootstrap.register(AbstractBootstrap.java:233)
at io.netty.resolver.dns.DnsNameResolver.(DnsNameResolver.java:212)
at io.netty.resolver.dns.DnsNameResolverBuilder.build(DnsNameResolverBuilder.java:348)
at io.vertx.core.impl.AddressResolver$1.newResolver(AddressResolver.java:167)
at io.netty.resolver.AddressResolverGroup.getResolver(AddressResolverGroup.java:67)
at io.vertx.core.impl.AddressResolver.resolveHostname(AddressResolver.java:223)
at io.vertx.core.impl.VertxImpl.resolveAddress(VertxImpl.java:690)
at io.vertx.core.net.impl.AsyncResolveConnectHelper.doBind(AsyncResolveConnectHelper.java:74)
at io.vertx.core.http.impl.HttpServerImpl.listen(HttpServerImpl.java:256)
at io.servicecomb.transport.rest.vertx.RestServerVerticle.startListen(RestServerVerticle.java:95)
at io.servicecomb.transport.rest.vertx.RestServerVerticle.start(RestServerVerticle.java:91)
at io.vertx.core.impl.DeploymentManager.lambda$doDeploy$8(DeploymentManager.java:434)
at io.vertx.core.impl.DeploymentManager$$Lambda$26/1595687022.handle(Unknown Source)
at io.vertx.core.impl.ContextImpl.lambda$wrapTask$2(ContextImpl.java:316)
at io.vertx.core.impl.ContextImpl$$Lambda$27/1369352990.run(Unknown Source)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:418)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:440)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:873)
at java.lang.Thread.run(Unknown Source)
3)启动客户端程序,运行PojoConsumerMain,出现如下异常:
2017-09-04 17:30:24,925 [WARN] Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hello': Invocation of init method failed; nested exception is io.servicecomb.foundation.common.exceptions.ServiceCombException: microserviceName=hello, schemaid=hello,
do not support implicit interface anymore,
because that caused problems:
1.the startup process relies on other microservices
2.cyclic dependent microservices can not be deployed
suggest to use @RpcReference or <cse:rpc-reference id="..." microservice-name="..." schema-id="..." interface="..."></cse:rpc-reference>. org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hello': Invocation of init method failed; nested exception is io.servicecomb.foundation.common.exceptions.ServiceCombException: microserviceName=hello, schemaid=hello,
do not support implicit interface anymore,
because that caused problems:
1.the startup process relies on other microservices
2.cyclic dependent microservices can not be deployed
suggest to use @RpcReference or <cse:rpc-reference id="..." microservice-name="..." schema-id="..." interface="..."></cse:rpc-reference>.
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1583)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:235)
at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:702)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:527)
at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:93)
at io.servicecomb.foundation.common.utils.BeanUtils.init(BeanUtils.java:36)
at io.servicecomb.foundation.common.utils.BeanUtils.init(BeanUtils.java:32)
at io.servicecomb.samples.pojo.consumer.PojoConsumerMain.init(PojoConsumerMain.java:49)
at io.servicecomb.samples.pojo.consumer.PojoConsumerMain.main(PojoConsumerMain.java:38)
Caused by: io.servicecomb.foundation.common.exceptions.ServiceCombException: microserviceName=hello, schemaid=hello,
do not support implicit interface anymore,
because that caused problems:
1.the startup process relies on other microservices
2.cyclic dependent microservices can not be deployed
suggest to use @RpcReference or <cse:rpc-reference id="..." microservice-name="..." schema-id="..." interface="..."></cse:rpc-reference>.
at io.servicecomb.provider.pojo.reference.PojoReferenceMeta.afterPropertiesSet(PojoReferenceMeta.java:75)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1642)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1579)
... 15 more

请问是什么原因造成此现象,谢谢!

运行JaxrsProviderMain没有成功

本机已启动service-center

2017-09-06 16-52-32

运行samples/jaxrsProvider下的demo

修改了microservice.yaml的cse.rest.address: 0.0.0.0:8080为cse.rest.address: 0.0.0.0:8088
2017-09-06 17-02-46

直接run了/jaxrs-provider/src/main/java/io/servicecomb/samples/jaxrs/provider/JaxrsProviderMain.java下的main方法,报出以下错误信息:
2017-09-06 16:19:34,875 [WARN] address /0.0.0.0:8080, auto select a host address to publish 127.0.0.1:8080, maybe not the correct one io.servicecomb.serviceregistry.RegistryUtils.genPublishIpPort(RegistryUtils.java:178) 2017-09-06 16:19:34,884 [INFO] can not listen /0.0.0.0:8080, skip io.servicecomb.transport.rest.vertx.VertxRestTransport. io.servicecomb.transport.rest.vertx.VertxRestTransport.canInit(VertxRestTransport.java:59) 2017-09-06 16:19:34,892 [ERROR] cse init failed, Exception: io.servicecomb.foundation.common.exceptions.ServiceCombException; all transport named rest refused to init. io.servicecomb.foundation.common.exceptions.ServiceCombException: all transport named rest refused to init. at io.servicecomb.core.transport.TransportManager.chooseOneTransport(TransportManager.java:91) at io.servicecomb.core.transport.TransportManager.buildTransportMap(TransportManager.java:73) at io.servicecomb.core.transport.TransportManager.init(TransportManager.java:51) at io.servicecomb.core.CseApplicationListener.onApplicationEvent(CseApplicationListener.java:121) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:166) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:138) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:383) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:337) at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:882) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:545) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93) at io.servicecomb.foundation.common.utils.BeanUtils.init(BeanUtils.java:36) at io.servicecomb.foundation.common.utils.BeanUtils.init(BeanUtils.java:32) at io.servicecomb.samples.jaxrs.provider.JaxrsProviderMain.main(JaxrsProviderMain.java:26) io.servicecomb.core.CseApplicationListener.onApplicationEvent(CseApplicationListener.java:139) 2017-09-06 16:19:43,372 [WARN] address /0.0.0.0:8080, auto select a host address to publish 127.0.0.1:8080, maybe not the correct one io.servicecomb.serviceregistry.RegistryUtils.genPublishIpPort(RegistryUtils.java:178) 2017-09-06 16:19:43,373 [INFO] can not listen /0.0.0.0:8080, skip io.servicecomb.transport.rest.vertx.VertxRestTransport. io.servicecomb.transport.rest.vertx.VertxRestTransport.canInit(VertxRestTransport.java:59) 2017-09-06 16:19:43,374 [ERROR] cse init failed, Exception: io.servicecomb.foundation.common.exceptions.ServiceCombException; all transport named rest refused to init. io.servicecomb.foundation.common.exceptions.ServiceCombException: all transport named rest refused to init. at io.servicecomb.core.transport.TransportManager.chooseOneTransport(TransportManager.java:91) at io.servicecomb.core.transport.TransportManager.buildTransportMap(TransportManager.java:73) at io.servicecomb.core.transport.TransportManager.init(TransportManager.java:51) at io.servicecomb.core.CseApplicationListener.onApplicationEvent(CseApplicationListener.java:121) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:166) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:138) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:383) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:337) at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:882) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:545) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93) at io.servicecomb.foundation.common.utils.BeanUtils.init(BeanUtils.java:36) at io.servicecomb.foundation.common.utils.BeanUtils.init(BeanUtils.java:32) at io.servicecomb.samples.jaxrs.provider.JaxrsProviderMain.main(JaxrsProviderMain.java:26) io.servicecomb.core.CseApplicationListener.onApplicationEvent(CseApplicationListener.java:139) 2017-09-06 16:19:43,383 [WARN] handler chain is shutting down io.servicecomb.core.handler.ShutdownHookHandler.run(ShutdownHookHandler.java:86) 2017-09-06 16:19:43,390 [WARN] handler chain is shut down io.servicecomb.core.handler.ShutdownHookHandler.run(ShutdownHookHandler.java:97)

是不是我做少了哪一步?

做微服务改造时 遇到一些问题

@DragonTeeth 提到了一些有关使用Java-Chassis进行微服务改造遇到的问题:

背景:
原来的工程使用的是原生的 httpclient ,在改造成ServiceStage的restTemplate时遇到了一些问题。麻烦看看这些问题是否可以解决。

uam发布服务接口,目前碰到如下问题:
1、ServletOutputStream不行,必须使用确定的类,接口或抽象类不能使用
2、响应对象中有Object不行,包括Map<String,Object>这种
3、重载方法不行,方法名称必须不重复
4、方法参数名称必须是确定的对象,不能用接口或者抽象类

这个是今天发现的问题
一个controller中提供的接口过多出现如下错误:
Bad Request, description: http: request body too large。
导致启动失败。
测试的controller里大概有10来方法。

另外,遇到个问题,之前写测试方法的时候是通的,
今儿全部不通了,一直是如下错误:
java.lang.Error: not support def type: class io.swagger.models.properties.BaseIntegerProperty
日志上看没到服务端,直接在客户端就出错了。

BMI Loadbalance Sample do not work properly

I followed below, and error occured when registrying the webapp to Service-Center.

BTW, it works in No loadbalance mode.
service-center-0.1.1-windows-amd64, and I run start.bat in windows.

2017-09-18_161852

Error:

2017-09-18 16:22:13,899 [WARN] service center has no available instance io.servicecomb.serviceregistry.client.IpPortManager.nextDefaultIpPort(IpPortManager.java:139)
2017-09-18 16:22:13,900 [ERROR] Registry microservice failed. appId=bmi, name=gateway, version=0.0.1 io.servicecomb.serviceregistry.task.MicroserviceRegisterTask.doRegister(MicroserviceRegisterTask.java:77)
2017-09-18 16:22:13,900 [INFO] read MicroserviceRegisterTask status is READY io.servicecomb.serviceregistry.task.ServiceCenterTask.onRegisterTask(ServiceCenterTask.java:74)
2017-09-18 16:23:13,901 [INFO] running microservice register task. io.servicecomb.serviceregistry.task.MicroserviceRegisterTask.doRegister(MicroserviceRegisterTask.java:57)
2017-09-18 16:23:13,904 [ERROR] GET /registry/v3/existence?appId=bmi&type=microservice&serviceName=gateway&version=0.0.1 fail, endpoint is 127.0.0.1:30100, message: Failed to create SSL connection io.servicecomb.serviceregistry.client.http.RestUtils.lambda$null$1(RestUtils.java:80)
2017-09-18 16:23:13,905 [WARN] service center has no available instance io.servicecomb.serviceregistry.client.IpPortManager.nextDefaultIpPort(IpPortManager.java:139)
2017-09-18 16:23:13,909 [ERROR] POST /registry/v3/microservices fail, endpoint is 127.0.0.1:30100, message: Failed to create SSL connection io.servicecomb.serviceregistry.client.http.RestUtils.lambda$null$1(RestUtils.java:80)
2017-09-18 16:23:13,910 [WARN] service center has no available instance io.servicecomb.serviceregistry.client.IpPortManager.nextDefaultIpPort(IpPortManager.java:139)
2017-09-18 16:23:13,912 [ERROR] Registry microservice failed. appId=bmi, name=gateway, version=0.0.1 io.servicecomb.serviceregistry.task.MicroserviceRegisterTask.doRegister(MicroserviceRegisterTask.java:77)

rest/highway listen address is not configured

这是仿照jaxrs-sample写的一个helloworld。

2017-09-08 18-21-11

jaxrs-server的配置

# 文件:microservice.yaml
APPLICATION_ID: jaxrs-demo
service_description:
  name: jaxrs
  version: 0.0.1
cse:
  service:
    registry:
      address: http://127.0.0.1:30100
  rest:
     address: 0.0.0.0:8088
  highway:
     address: 0.0.0.0:7070
/**
 * HelloServer.java
 */
@RestSchema(schemaId = "jaxrsHello")
@Path("/jaxrshello")
@Produces(MediaType.APPLICATION_JSON)
public class HelloServer implements Hello {
    @Path("/sayhi")
    @POST
    @Override
    public String sayHi(String name) {
        return "Hello, " + name;
    }

    @Path("/sayhello")
    @POST
    @Override
    public String sayHello(Student student) {
        return "Hello, " + student.getName();
    }
}
<!-- pojo.server.bean.xml -->
<context:component-scan base-package="com.hiocs.jaxrs.server" />

jaxrs-service启动成功,日志如下:

2017-09-08 18:08:24,349 [INFO] rest listen success. address=0.0.0.0:8088 io.servicecomb.transport.rest.vertx.RestServerVerticle.lambda$startListen$0(RestServerVerticle.java:97)
2017-09-08 18:08:24,372 [INFO] endpoint to publish: rest://127.0.0.1:8088 io.servicecomb.core.transport.TransportManager.init(TransportManager.java:57)
2017-09-08 18:08:24,378 [WARN] Service center do not support encoded query, so we use unencoded query, this caused not support chinese/space (and maybe other char) in query value. io.servicecomb.core.transport.AbstractTransport.genAddressWithoutSchemaForOldSC(AbstractTransport.java:140)
2017-09-08 18:08:24,387 [WARN] address /0.0.0.0:7070, auto select a host address to publish 127.0.0.1:7070, maybe not the correct one io.servicecomb.serviceregistry.RegistryUtils.genPublishIpPort(RegistryUtils.java:178)
2017-09-08 18:08:24,404 [INFO] highway listen success. address=0.0.0.0:7070 io.servicecomb.transport.highway.HighwayServerVerticle.lambda$startListen$0(HighwayServerVerticle.java:67)
2017-09-08 18:08:24,425 [INFO] endpoint to publish: highway://127.0.0.1:7070?login=true io.servicecomb.core.transport.TransportManager.init(TransportManager.java:57)
2017-09-08 18:08:24,426 [INFO] running microservice register task. io.servicecomb.serviceregistry.task.MicroserviceRegisterTask.doRegister(MicroserviceRegisterTask.java:57)
2017-09-08 18:08:24,685 [INFO] Microservice exists in service center, no need to register. id=5af60a5b947511e7bc2a0242ac110002 appId=jaxrs-demo, name=jaxrs, version=0.0.1 io.servicecomb.serviceregistry.task.MicroserviceRegisterTask.doRegister(MicroserviceRegisterTask.java:64)
2017-09-08 18:08:24,706 [INFO] SchemaIds is equals to service center. id=5af60a5b947511e7bc2a0242ac110002 appId=jaxrs-demo, name=jaxrs, version=0.0.1, schemaIds=[] io.servicecomb.serviceregistry.task.MicroserviceRegisterTask.checkSchemaIdSet(MicroserviceRegisterTask.java:127)
2017-09-08 18:08:24,709 [INFO] read MicroserviceRegisterTask status is FINISHED io.servicecomb.serviceregistry.task.ServiceCenterTask.onRegisterTask(ServiceCenterTask.java:74)
2017-09-08 18:08:24,709 [INFO] running microservice instance register task. io.servicecomb.serviceregistry.task.MicroserviceInstanceRegisterTask.doRegister(MicroserviceInstanceRegisterTask.java:59)
2017-09-08 18:08:24,932 [INFO] Register microservice instance success. microserviceId=5af60a5b947511e7bc2a0242ac110002 instanceId=a6c33ae4947d11e7bc2a0242ac110002 endpoints=[rest://127.0.0.1:8088, highway://127.0.0.1:7070?login=true] lease 120s io.servicecomb.serviceregistry.task.MicroserviceInstanceRegisterTask.doRegister(MicroserviceInstanceRegisterTask.java:77)
2017-09-08 18:08:24,934 [INFO] read MicroserviceInstanceRegisterTask status is FINISHED io.servicecomb.serviceregistry.task.ServiceCenterTask.onRegisterTask(ServiceCenterTask.java:74)
2017-09-08 18:08:24,997 [INFO] Reconnected to service center, clean up the provider's microservice instances cache. io.servicecomb.serviceregistry.registry.AbstractServiceRegistry.onRecovered(AbstractServiceRegistry.java:180)

jaxrs-client的配置

# microservice.yaml
APPLICATION_ID: jaxrs-demo
service_description:
  name: helloClient
  version: 0.0.1
cse:
  service:
    registry:
      address: http://127.0.0.1:30100
  handler:
    chain:
      Consumer:
        default: bizkeeper-consumer,loadbalance
  isolation:
    Consumer:
      enabled: false
  references:
    jaxrs:
      version-rule: 0.0.1
/**
 * HelloClientMain.java
 */
package com.hiocs.jaxrs.client;

import com.hiocs.common.Hello;
import io.servicecomb.foundation.common.utils.BeanUtils;
import io.servicecomb.foundation.common.utils.Log4jUtils;
import io.servicecomb.provider.pojo.RpcReference;
import org.springframework.stereotype.Component;

@Component
public class HelloClientMain {

    @RpcReference(microserviceName = "jaxrs", schemaId = "jaxrsHello")
    private static Hello hello;

    public static void main(String[] args) throws Exception {
        init();
        System.out.println(hello.sayHi("Joe Yee"));
    }

    public static void init() throws Exception {
        Log4jUtils.init();
        BeanUtils.init();
    }
}

jaxrs-client启动日志有报错信息:

2017-09-08 18:08:53,310 [WARN] rest listen address is not configured, will not start. io.servicecomb.transport.rest.vertx.RestServerVerticle.start(RestServerVerticle.java:77)
2017-09-08 18:08:53,585 [WARN] highway listen address is not configured, will not listen. io.servicecomb.transport.highway.HighwayServerVerticle.startListen(HighwayServerVerticle.java:58)
2017-09-08 18:08:53,662 [INFO] running microservice register task. io.servicecomb.serviceregistry.task.MicroserviceRegisterTask.doRegister(MicroserviceRegisterTask.java:57)
2017-09-08 18:08:54,063 [INFO] Microservice exists in service center, no need to register. id=eefd1605947a11e7bc2a0242ac110002 appId=jaxrs-demo, name=helloClient, version=0.0.1 io.servicecomb.serviceregistry.task.MicroserviceRegisterTask.doRegister(MicroserviceRegisterTask.java:64)
2017-09-08 18:08:54,074 [INFO] SchemaIds is equals to service center. id=eefd1605947a11e7bc2a0242ac110002 appId=jaxrs-demo, name=helloClient, version=0.0.1, schemaIds=[] io.servicecomb.serviceregistry.task.MicroserviceRegisterTask.checkSchemaIdSet(MicroserviceRegisterTask.java:127)
2017-09-08 18:08:54,077 [INFO] read MicroserviceRegisterTask status is FINISHED io.servicecomb.serviceregistry.task.ServiceCenterTask.onRegisterTask(ServiceCenterTask.java:74)
2017-09-08 18:08:54,078 [INFO] running microservice instance register task. io.servicecomb.serviceregistry.task.MicroserviceInstanceRegisterTask.doRegister(MicroserviceInstanceRegisterTask.java:59)
2017-09-08 18:08:54,296 [INFO] Register microservice instance success. microserviceId=eefd1605947a11e7bc2a0242ac110002 instanceId=b84234b9947d11e7bc2a0242ac110002 endpoints=[] lease 120s io.servicecomb.serviceregistry.task.MicroserviceInstanceRegisterTask.doRegister(MicroserviceInstanceRegisterTask.java:77)
2017-09-08 18:08:54,298 [INFO] read MicroserviceInstanceRegisterTask status is FINISHED io.servicecomb.serviceregistry.task.ServiceCenterTask.onRegisterTask(ServiceCenterTask.java:74)
Exception in thread "main" java.lang.NullPointerException
	at com.hiocs.jaxrs.client.HelloClientMain.main(HelloClientMain.java:17)
2017-09-08 18:08:54,336 [INFO] Reconnected to service center, clean up the provider's microservice instances cache. io.servicecomb.serviceregistry.registry.AbstractServiceRegistry.onRecovered(AbstractServiceRegistry.java:180)
2017-09-08 18:08:54,336 [INFO] watching microservice eefd1605947a11e7bc2a0242ac110002 successfully, the chosen service center address is 127.0.0.1:30100 io.servicecomb.serviceregistry.client.http.ServiceRegistryClientImpl.lambda$watch$6(ServiceRegistryClientImpl.java:520)

BMI compile error

root@i-wzmhsx68:/home/ubuntu/ServiceComb-Java-Chassis/samples/bmi# mvn compile

[INFO] Scanning for projects...
Downloading: http://maven.aliyun.com/nexus/content/repositories/central/org/springframework/boot/spring-boot-starter-parent/1.4.5.RELEASE/spring-boot-starter-parent-1.4.5.RELEASE.pom
Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/springframework/boot/spring-boot-starter-parent/1.4.5.RELEASE/spring-boot-starter-parent-1.4.5.RELEASE.pom (0 B at 0.0 KB/sec)
Downloading: http://maven.aliyun.com/nexus/content/repositories/central/org/springframework/boot/spring-boot-dependencies/1.4.5.RELEASE/spring-boot-dependencies-1.4.5.RELEASE.pom
Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/springframework/boot/spring-boot-dependencies/1.4.5.RELEASE/spring-boot-dependencies-1.4.5.RELEASE.pom (0 B at 0.0 KB/sec)
Downloading: http://maven.aliyun.com/nexus/content/repositories/central/org/springframework/spring-framework-bom/4.3.7.RELEASE/spring-framework-bom-4.3.7.RELEASE.pom
Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/springframework/spring-framework-bom/4.3.7.RELEASE/spring-framework-bom-4.3.7.RELEASE.pom (0 B at 0.0 KB/sec)
Downloading: http://maven.aliyun.com/nexus/content/repositories/central/org/springframework/data/spring-data-releasetrain/Hopper-SR8/spring-data-releasetrain-Hopper-SR8.pom
Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/springframework/data/spring-data-releasetrain/Hopper-SR8/spring-data-releasetrain-Hopper-SR8.pom (0 B at 0.0 KB/sec)
Downloading: http://maven.aliyun.com/nexus/content/repositories/central/org/springframework/data/build/spring-data-build/1.8.8.RELEASE/spring-data-build-1.8.8.RELEASE.pom
Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/springframework/data/build/spring-data-build/1.8.8.RELEASE/spring-data-build-1.8.8.RELEASE.pom (0 B at 0.0 KB/sec)
Downloading: http://maven.aliyun.com/nexus/content/repositories/central/org/springframework/integration/spring-integration-bom/4.3.8.RELEASE/spring-integration-bom-4.3.8.RELEASE.pom
Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/springframework/integration/spring-integration-bom/4.3.8.RELEASE/spring-integration-bom-4.3.8.RELEASE.pom (0 B at 0.0 KB/sec)
Downloading: http://maven.aliyun.com/nexus/content/repositories/central/org/springframework/security/spring-security-bom/4.1.4.RELEASE/spring-security-bom-4.1.4.RELEASE.pom
Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/org/springframework/security/spring-security-bom/4.1.4.RELEASE/spring-security-bom-4.1.4.RELEASE.pom (0 B at 0.0 KB/sec)
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[ERROR] Non-resolvable import POM: Could not find artifact io.servicecomb:java-chassis-dependencies:pom:0.3.0-SNAPSHOT @ line 50, column 19
@
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]
[ERROR] The project io.servicecomb.samples:bmi:0.3.0-SNAPSHOT (/home/ubuntu/ServiceComb-Java-Chassis/samples/bmi/pom.xml) has 1 error
[ERROR] Non-resolvable import POM: Could not find artifact io.servicecomb:java-chassis-dependencies:pom:0.3.0-SNAPSHOT @ line 50, column 19 -> [Help 2]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException

error log has insufficient information when type not supported

this error is thrown when a certain is not supported in controller

java.lang.Error: not support def type: class io.swagger.models.properties.BaseIntegerProperty

the type BaseIntegerProperty is not what user specified and the user specified type is not shown in log

关于异常抛出问题

在使用华为SC过程中,发现有个情况,就是通过服务中心注册服务后,业务通过服务汇总新调用这个服务的时候,如果被调用服务业务层抛出异常,经过SC后,业务异常被转换成了华为通用InvokationException 的509异常,而业务异常被屏蔽了。请问有什么方法可以将业务异常抛到外边呢?好让前台页面可以得到正确的业务异常`

BMI demo没找着

快速入门,“创建第一个微服务”提到
git clone https://github.com/ServiceComb/ServiceComb-Java-Chassis.git
目前代码还未更新上去

typos need to be fixed

There are some obvious typos in the code that need to be fixed. e.g. resiter -> register, getProcucers -> getProducers.

can not find handler :tracing-provider

在IDEA上面跑bmi的分布式调用链追踪实例,报java.lang.Error: can not find handler :tracing-provider错误。
microservice.yaml文件配置:

APPLICATION_ID: bmi
service_description:
# name of the declaring microservice
  name: calculator
  version: 0.0.1
cse:
  service:
    registry:
      address: http://127.0.0.1:30100
  rest:
    address: 0.0.0.0:7777
  handler:
    chain:
      Provider:
        default: tracing-provider

启动CalculationApplication,启动时报出如下异常:

2017-09-19 11:57:28,586 [ERROR] Application startup failed org.springframework.boot.SpringApplication.reportFailure(SpringApplication.java:840)
java.lang.Error: can not find handler :tracing-provider
	at io.servicecomb.core.handler.AbstractHandlerManager.convertToChainClass(AbstractHandlerManager.java:68) ~[java-chassis-core-0.3.0-SNAPSHOT.jar:?]
	at io.servicecomb.core.handler.AbstractHandlerManager.createHandlerChain(AbstractHandlerManager.java:82) ~[java-chassis-core-0.3.0-SNAPSHOT.jar:?]
	at io.servicecomb.core.handler.AbstractHandlerManager.create(AbstractHandlerManager.java:110) ~[java-chassis-core-0.3.0-SNAPSHOT.jar:?]
	at io.servicecomb.core.handler.AbstractHandlerManager.create(AbstractHandlerManager.java:32) ~[java-chassis-core-0.3.0-SNAPSHOT.jar:?]
	at io.servicecomb.foundation.common.AbstractObjectManager.getOrCreate(AbstractObjectManager.java:36) ~[foundation-common-0.3.0-SNAPSHOT.jar:?]
	at io.servicecomb.core.definition.loader.SchemaLoader.registerSchema(SchemaLoader.java:94) ~[java-chassis-core-0.3.0-SNAPSHOT.jar:?]
	at io.servicecomb.core.definition.schema.ProducerSchemaFactory.createSchema(ProducerSchemaFactory.java:112) ~[java-chassis-core-0.3.0-SNAPSHOT.jar:?]
	at io.servicecomb.core.definition.schema.ProducerSchemaFactory.createSchema(ProducerSchemaFactory.java:42) ~[java-chassis-core-0.3.0-SNAPSHOT.jar:?]
	at io.servicecomb.core.definition.schema.AbstractSchemaFactory.getOrCreateSchema(AbstractSchemaFactory.java:59) ~[java-chassis-core-0.3.0-SNAPSHOT.jar:?]
	at io.servicecomb.core.definition.schema.ProducerSchemaFactory.getOrCreateProducerSchema(ProducerSchemaFactory.java:75) ~[java-chassis-core-0.3.0-SNAPSHOT.jar:?]
	at io.servicecomb.provider.rest.common.RestProducerProvider.init(RestProducerProvider.java:48) ~[provider-rest-common-0.3.0-SNAPSHOT.jar:?]
	at io.servicecomb.core.provider.producer.ProducerProviderManager.init(ProducerProviderManager.java:43) ~[java-chassis-core-0.3.0-SNAPSHOT.jar:?]
	at io.servicecomb.core.CseApplicationListener.onApplicationEvent(CseApplicationListener.java:113) ~[java-chassis-core-0.3.0-SNAPSHOT.jar:?]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:166) ~[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:138) ~[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:383) ~[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:337) ~[spring-context-4.3.4.RELEASE.jar:4.3.4.RELEASE]
	at org.springframework.boot.context.event.EventPublishingRunListener.finished(EventPublishingRunListener.java:99) ~[spring-boot-1.4.5.RELEASE.jar:1.4.5.RELEASE]
	at org.springframework.boot.SpringApplicationRunListeners.callFinishedListener(SpringApplicationRunListeners.java:79) ~[spring-boot-1.4.5.RELEASE.jar:1.4.5.RELEASE]
	at org.springframework.boot.SpringApplicationRunListeners.finished(SpringApplicationRunListeners.java:72) ~[spring-boot-1.4.5.RELEASE.jar:1.4.5.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) [spring-boot-1.4.5.RELEASE.jar:1.4.5.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1187) [spring-boot-1.4.5.RELEASE.jar:1.4.5.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1176) [spring-boot-1.4.5.RELEASE.jar:1.4.5.RELEASE]
	at io.servicecomb.samples.bmi.CalculatorApplication.main(CalculatorApplication.java:29) [classes/:?]

通过@RequestBody byte[] buffer接收字节时,为什么必须是json格式的才行

通过@requestbody byte[] buffer接收字节时,若不是json格式,则直接报参数错误,为什么?

@RequestMapping(value = "/update", method = RequestMethod.PUT)
    public ResponseEntity<String> update(@PathVariable("accountId") Long accountId,
          @RequestHeader("Date") String date,
         @RequestBody byte[] buffer, HttpServletRequest request)
    {
           byte[] data = buffer;   //此处buffer必须是json格式
    }

request.getinputstream获取不到request body

    @RequestMapping(value = "/", method = {RequestMethod.GET})
    public String something(@PathVariable(value = "appId") String appId, Model model,
        HttpServletRequest httpRequest) {
        httpRequest.getInputStream();// 总是返回""

InvokerUtils.syncInvoke类型转换异常

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

方法返回responseEntity类型报错

运行环境:
tomcat 8.5.x
java-chassis 0.4.0
service center 1.0.1

方法返回responseEntity类型,如果responseEntity不包含header和body,则只报错2;否则两个错均报

错误1

[2017-11-22 16:36:39.101][ufm][][ERROR][io.servicecomb.common.rest.AbstractRestInvocation][sendResponseQuietly,131][Failed to send rest response, operation:ufm.api-v2-accounts.setWatermark.][pool-30-thread-3]
java.lang.NullPointerException: null
	at org.apache.coyote.http11.Http11OutputBuffer.commit(Http11OutputBuffer.java:368)
	at org.apache.coyote.http11.Http11Processor.prepareResponse(Http11Processor.java:1300)
	at org.apache.coyote.AbstractProcessor.action(AbstractProcessor.java:254)
	at org.apache.coyote.Response.action(Response.java:174)
	at org.apache.coyote.Response.sendHeaders(Response.java:356)
	at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:303)
	at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:284)
	at org.apache.catalina.connector.Response.flushBuffer(Response.java:541)
	at org.apache.catalina.connector.ResponseFacade.flushBuffer(ResponseFacade.java:312)
	at javax.servlet.ServletResponseWrapper.flushBuffer(ServletResponseWrapper.java:176)
	at io.servicecomb.foundation.vertx.http.StandardHttpServletResponseEx.flushBuffer(StandardHttpServletResponseEx.java:80)
	at io.servicecomb.common.rest.AbstractRestInvocation.sendResponse(AbstractRestInvocation.java:164)
	at io.servicecomb.common.rest.AbstractRestInvocation.sendResponseQuietly(AbstractRestInvocation.java:129)
	at io.servicecomb.common.rest.RestProducerInvocation.lambda$doInvoke$1(RestProducerInvocation.java:121)
	at io.servicecomb.core.handler.ShutdownHookHandler.lambda$handle$0(ShutdownHookHandler.java:70)
	at io.servicecomb.swagger.engine.SwaggerProducerOperation.invoke(SwaggerProducerOperation.java:113)
	at io.servicecomb.core.handler.impl.ProducerOperationHandler.handle(ProducerOperationHandler.java:38)
	at io.servicecomb.core.Invocation.next(Invocation.java:132)
	at io.servicecomb.core.handler.ShutdownHookHandler.handle(ShutdownHookHandler.java:68)
	at io.servicecomb.core.Invocation.next(Invocation.java:132)
	at io.servicecomb.common.rest.RestProducerInvocation.doInvoke(RestProducerInvocation.java:120)
	at io.servicecomb.common.rest.AbstractRestInvocation.invoke(AbstractRestInvocation.java:93)
	at io.servicecomb.common.rest.RestProducerInvocation.runOnExecutor(RestProducerInvocation.java:94)
	at io.servicecomb.common.rest.RestProducerInvocation.lambda$scheduleInvocation$0(RestProducerInvocation.java:80)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

错误2

[2017-11-22 16:36:39.105][ufm][][ERROR][io.servicecomb.common.rest.AbstractRestInvocation][invoke,95][unknown edge exception.][pool-30-thread-3]
java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode (i.e. isAsyncStarted() returns false)
	at org.apache.catalina.connector.Request.getAsyncContext(Request.java:1742)
	at org.apache.catalina.connector.RequestFacade.getAsyncContext(RequestFacade.java:1056)
	at javax.servlet.ServletRequestWrapper.getAsyncContext(ServletRequestWrapper.java:431)
	at io.servicecomb.common.rest.AbstractRestInvocation.sendResponseQuietly(AbstractRestInvocation.java:135)
	at io.servicecomb.common.rest.RestProducerInvocation.lambda$doInvoke$1(RestProducerInvocation.java:121)
	at io.servicecomb.core.handler.ShutdownHookHandler.lambda$handle$0(ShutdownHookHandler.java:70)
	at io.servicecomb.swagger.engine.SwaggerProducerOperation.invoke(SwaggerProducerOperation.java:113)
	at io.servicecomb.core.handler.impl.ProducerOperationHandler.handle(ProducerOperationHandler.java:38)
	at io.servicecomb.core.Invocation.next(Invocation.java:132)
	at io.servicecomb.core.handler.ShutdownHookHandler.handle(ShutdownHookHandler.java:68)
	at io.servicecomb.core.Invocation.next(Invocation.java:132)
	at io.servicecomb.common.rest.RestProducerInvocation.doInvoke(RestProducerInvocation.java:120)
	at io.servicecomb.common.rest.AbstractRestInvocation.invoke(AbstractRestInvocation.java:93)
	at io.servicecomb.common.rest.RestProducerInvocation.runOnExecutor(RestProducerInvocation.java:94)
	at io.servicecomb.common.rest.RestProducerInvocation.lambda$scheduleInvocation$0(RestProducerInvocation.java:80)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

The governance qps provider control provider global dynamic config

Hi, the qps provider control now must choose a microservice name, so it dosn't support global qps dynamic config.
private void initConfig(String key) { if (watchedKeySet.contains(key)) { return; } watchedKeySet.add(key); String configKey = Config.PROVIDER_LIMIT_KEY_PREFIX + key; DynamicProperty property = DynamicProperty.getInstance(configKey); initQpsLimit(key, getIntegerLimitProperty(property)); property.addCallback(() -> { updateQpsLimit(key, getIntegerLimitProperty(property)); QpsController qpsController = findReference(key); objMap.put(key, qpsController); }); }
configKey contains the key.

关于dms的url如何获得

项目中使用华为云的DMS分布式消息服务,创建队列后,准备用客户端连接队列,配置文件的说明是:#DMS kafka 接口地址,例如:dms-kafka.cn-north-1.myhwclouds.com:37000
bootstrap.servers=
请问,这个url如何获得,因为我在控制台里边找不到相关信息,所以不知道用什么地址和端口才能访问到我创建的队列。
这个地址是购买的某个服务器的地址,还是华为有统一的规范。我看例子是子域名,这个子域名是如何获取的,申请吗

关于服务端和客户提供异步调用的能力

请问下ServiceComb有计划提供异步接口能力吗?下面是我的问题,以及我做了一些验证。

背景

异步调用在高性能要求的场景下是必须的。

服务端的异步场景

当前ServiceComb的服务端io和work是分离的,理论上可以通过调大work线程的个数来提高并发和吞吐,但是线程数目肯定不能太大。如果微服务内部又级联调用其他微服务或者数据库操作,并发量会受限。
所以主流的rpc或者微服务框架都具备实现异步服务端的能力。

同上客户端也需要提供异步返回的能力

实现

考虑到基于ServiceComb可以定义Pojo接口,并且定义的接口也会生成契约文件,所以尽量在接口定义中不引入其他开源的代码,Java的CompletableFuture是一个很好的桥接器。例如如下代码

@RequestMapping(path = "/springmvchello", produces = MediaType.APPLICATION_JSON)
public class SpringmvcHelloImpl implements Hello {
  @RequestMapping(path = "/sayhello", method = RequestMethod.POST)
  public String sayHello(@RequestBody String person) {
    .........
  }
}
  /sayhello:
     post:
          operationId: sayHello
          parameters:
            - name: person
              in: body
              required: true
              type: string
          responses:
            200:
              description: 正确返回
              schema:
                type: string

可以支持契约文件不修改,然后服务接口修改成

@RequestMapping(path = "/springmvchello", produces = MediaType.APPLICATION_JSON)
public class SpringmvcHelloImpl implements Hello {
  @RequestMapping(path = "/sayhello", method = RequestMethod.POST)
  public CompletableFuture<String> sayHello(@RequestBody String person) {
    CompletableFuture<String> result = new CompletableFuture<String>();
    .......
   return result;
  }
}

基于如上想法我已经大概修改了下代码并验证,希望ServiceComb近期版本能够提供异步能力。

对ServiceComb中RestSchema的一些诉求

我们现在使用的是iio.servicecomb.provider.rest.common中的RestSchema,
在使用过程中发现它对我们原SpringMVC的兼容不够,希望ServiceComb能兼容一下。
具体的使用场景如下:

  1. 方法的响应类型是object的。启动工程都会报错。io.servicecomb.foundation.common.exceptions.ServiceCombException: java.lang.Object not support. Must be a concrete type
  2. controller 里面有方法重载。即方法名一致但是 参数和RequestMapping 里面的method不一样这个也是兼容不了的,这个在SpringMCV里面很常见。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.