bettermanzzy opened a new issue #1085: Try to support spring-cloud-gateway
URL: https://github.com/apache/servicecomb-java-chassis/issues/1085
 
 
   I have try to support spring-cloud-gateway in ServiceComb-java-chassis.
   
   I  have used spring-cloud-gateway to run demo program in java-chassis. The 
result is correct and  forwarding function of gateway is OK. 
   
   but when I use use gateway-webflux to write the following code , some errors 
have occurred.
   
   ```java
   @RestSchema(schemaId="gatewaySampleController ")
   @RequestMapping("/")
   public class GatewaySampleController {
       @Value("${remote.home}")
       private URI home;
       @GetMapping("/test")
       public Mono<ResponseEntity<byte[]>> proxy(ProxyExchange<byte[]> proxy) 
throws Exception {
         return proxy.uri(home.toString() + "/image/png").get();
       }
   }
   ```
   The error message is as follows :
   ```java
   java.lang.IllegalStateException: ServiceComb init failed.
        at org.apache.servicecomb.core.SCBEngine.init(SCBEngine.java:220) 
~[classes/:na]
        at 
org.apache.servicecomb.core.CseApplicationListener.onApplicationEvent(CseApplicationListener.java:81)
 ~[classes/:na]
        at 
org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
 ~[spring-context-5.0.6.RELEASE.jar:5.0.6.RELEASE]
        at 
org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
 ~[spring-context-5.0.6.RELEASE.jar:5.0.6.RELEASE]
        at 
org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
 ~[spring-context-5.0.6.RELEASE.jar:5.0.6.RELEASE]
        at 
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:400)
 ~[spring-context-5.0.6.RELEASE.jar:5.0.6.RELEASE]
        at 
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:354)
 ~[spring-context-5.0.6.RELEASE.jar:5.0.6.RELEASE]
        at 
org.springframework.boot.context.event.EventPublishingRunListener.running(EventPublishingRunListener.java:103)
 ~[spring-boot-2.0.2.RELEASE.jar:2.0.2.RELEASE]
        at 
org.springframework.boot.SpringApplicationRunListeners.running(SpringApplicationRunListeners.java:78)
 ~[spring-boot-2.0.2.RELEASE.jar:2.0.2.RELEASE]
        at 
org.springframework.boot.SpringApplication.run(SpringApplication.java:343) 
[spring-boot-2.0.2.RELEASE.jar:2.0.2.RELEASE]
        at 
org.springframework.boot.SpringApplication.run(SpringApplication.java:1255) 
[spring-boot-2.0.2.RELEASE.jar:2.0.2.RELEASE]
        at 
org.springframework.boot.SpringApplication.run(SpringApplication.java:1243) 
[spring-boot-2.0.2.RELEASE.jar:2.0.2.RELEASE]
        at 
gateway.GatewaySampleApplication.main(GatewaySampleApplication.java:21) 
[classes/:na]
   Caused by: java.lang.Error: generate operation swagger failed, 
gateway.GatewaySampleController:proxy
        at 
org.apache.servicecomb.swagger.generator.core.SwaggerGenerator.scanMethods(SwaggerGenerator.java:276)
 ~[classes/:na]
        at 
org.apache.servicecomb.swagger.generator.core.SwaggerGenerator.generate(SwaggerGenerator.java:140)
 ~[classes/:na]
        at 
org.apache.servicecomb.core.definition.schema.AbstractSchemaFactory.generateSwagger(AbstractSchemaFactory.java:102)
 ~[classes/:na]
        at 
org.apache.servicecomb.core.definition.schema.ProducerSchemaFactory.createSchema(ProducerSchemaFactory.java:115)
 ~[classes/:na]
        at 
org.apache.servicecomb.core.definition.schema.ProducerSchemaFactory.createSchema(ProducerSchemaFactory.java:54)
 ~[classes/:na]
        at 
org.apache.servicecomb.core.definition.schema.AbstractSchemaFactory.getOrCreateSchema(AbstractSchemaFactory.java:58)
 ~[classes/:na]
        at 
org.apache.servicecomb.core.definition.schema.ProducerSchemaFactory.getOrCreateProducerSchema(ProducerSchemaFactory.java:76)
 ~[classes/:na]
        at 
org.apache.servicecomb.provider.rest.common.RestProducerProvider.init(RestProducerProvider.java:45)
 ~[classes/:na]
        at 
org.apache.servicecomb.core.provider.producer.ProducerProviderManager.init(ProducerProviderManager.java:51)
 ~[classes/:na]
        at org.apache.servicecomb.core.SCBEngine.doInit(SCBEngine.java:238) 
~[classes/:na]
        at org.apache.servicecomb.core.SCBEngine.init(SCBEngine.java:209) 
~[classes/:na]
        ... 12 common frames omitted
   Caused by: 
org.apache.servicecomb.foundation.common.exceptions.ServiceCombException: 
[simple type, class reactor.core.publisher.Mono] is abstract class. Must be a 
concrete type.
        at 
org.apache.servicecomb.swagger.extend.ModelResolverExt.checkType(ModelResolverExt.java:114)
 ~[classes/:na]
        at 
org.apache.servicecomb.swagger.extend.ModelResolverExt.resolve(ModelResolverExt.java:130)
 ~[classes/:na]
        at io.swagger.jackson.ModelResolver.resolve(ModelResolver.java:183) 
~[swagger-core-1.5.12.jar:1.5.12]
        at 
io.swagger.converter.ModelConverterContextImpl.resolve(ModelConverterContextImpl.java:100)
 ~[swagger-core-1.5.12.jar:1.5.12]
        at io.swagger.jackson.ModelResolver.resolve(ModelResolver.java:234) 
~[swagger-core-1.5.12.jar:1.5.12]
        at 
org.apache.servicecomb.swagger.extend.ModelResolverExt.resolve(ModelResolverExt.java:125)
 ~[classes/:na]
        at io.swagger.jackson.ModelResolver.resolve(ModelResolver.java:183) 
~[swagger-core-1.5.12.jar:1.5.12]
        at 
io.swagger.converter.ModelConverterContextImpl.resolve(ModelConverterContextImpl.java:100)
 ~[swagger-core-1.5.12.jar:1.5.12]
        at 
io.swagger.converter.ModelConverters.readAll(ModelConverters.java:83) 
~[swagger-core-1.5.12.jar:1.5.12]
        at 
org.apache.servicecomb.swagger.generator.core.utils.ParamUtils.addDefinitions(ParamUtils.java:116)
 ~[classes/:na]
        at 
org.apache.servicecomb.swagger.generator.core.processor.response.DefaultResponseTypeProcessor.process(DefaultResponseTypeProcessor.java:39)
 ~[classes/:na]
        at 
org.apache.servicecomb.swagger.generator.core.OperationGenerator.createResponseProperty(OperationGenerator.java:426)
 ~[classes/:na]
        at 
org.apache.servicecomb.swagger.generator.core.OperationGenerator.scanResponse(OperationGenerator.java:413)
 ~[classes/:na]
        at 
org.apache.servicecomb.swagger.generator.core.OperationGenerator.generate(OperationGenerator.java:181)
 ~[classes/:na]
        at 
org.apache.servicecomb.swagger.generator.core.SwaggerGenerator.scanMethods(SwaggerGenerator.java:272)
 ~[classes/:na]
        ... 22 common frames omitted
   
   ```
   To my opinion  , the question occurs between gateway-webflux and swagger . 
According to error message, servicecomb swagger seem can not resolve abstract 
class. But the type used by webflux is Flux and Mono related to reaction time 
programming, and they are abstract classes.  So, How to solve it?
   
   What about other's opinion?please feel free to let me know.
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to