apache / apache/servicecomb-java-chassis
Help!! Error in consuming Spring boot standalone Application API's Via Gateway <o.a.s.t.rest.vertx.VertxRestDispatcher : http server failed.>
- Langage dominant
- Java
- Étoiles
- 1.9k
- Forks
- 814
- Merge moyen
- 8 j 23 h
- PR mergées (30 j)
- 1
Description
I have built a microservice provider based in Spring boot standalone starter. It listens on port `8116`. The Rest API's provided by this service can be consumed directly on this port `8116` with postman.
However when routed via Gateway, I am getting the below error in the provider.
```
2022-08-02 13:22:45.980 ERROR 44749 --- [ntloop-thread-8] o.a.s.t.rest.vertx.VertxRestDispatcher : http server failed.
io.vertx.core.VertxException: Connection was closed
```
And At the `gateway` the request is getting timedout.
```
2022-08-02 13:22:45.921 INFO 77044 --- [ntloop-thread-5] o.a.s.t.r.c.http.RestClientInvocation : Request timeout, Details: The timeout period of 30000ms has been exceeded while executing POST /oauth2/token for server 192.168.1.2:8116.
2022-08-02 13:22:46.001 INFO 77044 --- [ntloop-thread-5] o.a.s.f.common.utils.SPIServiceUtils : Found SPI service org.apache.servicecomb.swagger.invocation.exception.ExceptionToProducerResponseConverter, count=8.
2022-08-02 13:22:46.002 INFO 77044 --- [ntloop-thread-5] o.a.s.f.common.utils.SPIServiceUtils : 0. org.usb.talech.microservices.runtime.exceptionConverters.ConstraintViolationExceptionToProducerResponseConverter.
2022-08-02 13:22:46.002 INFO 77044 --- [ntloop-thread-5] o.a.s.f.common.utils.SPIServiceUtils : 1. org.usb.talech.microservices.runtime.exceptionConverters.IllegalArgumentExceptionToProducerResponseConverter.
2022-08-02 13:22:46.002 INFO 77044 --- [ntloop-thread-5] o.a.s.f.common.utils.SPIServiceUtils : 2. org.apache.servicecomb.swagger.invocation.validator.ConstraintViolationExceptionToProducerResponseConverter.
2022-08-02 13:22:46.002 INFO 77044 --- [ntloop-thread-5] o.a.s.f.common.utils.SPIServiceUtils : 3. org.usb.talech.microservices.runtime.exceptionConverters.BusinessExceptionToProducerResponseConverter.
2022-08-02 13:22:46.002 INFO 77044 --- [ntloop-thread-5] o.a.s.f.common.utils.SPIServiceUtils : 4. org.apache.servicecomb.swagger.invocation.exception.InvocationExceptionToProducerResponseConverter.
2022-08-02 13:22:46.002 INFO 77044 --- [ntloop-thread-5] o.a.s.f.common.utils.SPIServiceUtils : 5. org.apache.servicecomb.swagger.invocation.exception.DefaultExceptionToProducerResponseConverter.
2022-08-02 13:22:46.003 INFO 77044 --- [ntloop-thread-5] o.a.s.f.common.utils.SPIServiceUtils : 6. org.apache.servicecomb.core.exception.IllegalArgumentExceptionToProducerResponseConverter.
2022-08-02 13:22:46.003 INFO 77044 --- [ntloop-thread-5] o.a.s.f.common.utils.SPIServiceUtils : 7. org.apache.servicecomb.core.exception.ThrowableExceptionToProducerResponseConverter.
2022-08-02 13:22:46.232 ERROR 77044 --- [ntloop-thread-5] i.v.c.http.impl.HttpClientRequestImpl : io.vertx.core.http.impl.NoStackTraceTimeoutException: The timeout period of 30000ms has been exceeded while executing POST /oauth2/token for server 192.168.1.2:8116
```
This is my provider Main application.
```
package com.pos.oauth.app.starter;
import org.apache.servicecomb.springboot2.starter.EnableServiceComb;
import org.apache.servicecomb.tracing.zipkin.EnableZipkinTracing;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ImportResource;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import com.pos.oauth.service.inter.IPOSMFAAuthLoginWebService;
@SpringBootApplication(scanBasePackages= {"com.pos"})
@EnableServiceComb
@EnableAutoConfiguration
@ComponentScan({"com.pos"})
@EntityScan(basePackages ={"com.pos"} )
@EnableZipkinTracing
@EnableJpaRepositories("com.pos")
@ImportResource("classpath:application-context.xml")
public class OAuthServiceMainStandAlone {
public static void main(String[] args) {
new SpringApplicationBuilder().sources(OAuthServiceMainStandAlone.class).web(WebApplicationType.NONE).build().run(args);
}
}
```
ANd this is my provider configuration
```
server:
port: 0
# java-chassis configuration
servicecomb-config-order: 1
APPLICATION_ID: talech-services
service_description:
name: oauth-service
version: 4.0.1
servicecomb:
service:
registry:
address: http://127.0.0.1:30100
rest:
address: 0.0.0.0:8116
highway:
address: 0.0.0.0:7070
handler:
chain:
Provider:
default: bizkeeper-provider
spring:
datasource:
password: pospassword
url: jdbc:mysql://localhost:3306/oauth?jdbcCompliantTruncation=false&connectTimeout=30000&socketTimeout=60000&useUnicode=yes&characterEncoding=UTF-8
username: posuser
dozer:
mapping-files: classpath*:/dozer-mapping.xml
```
What i am doing wrong? Why gateway routed requests are failing at provider?
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
Commencez par OAuthServiceMainStandAlone et la configuration du provider, en particulier WebApplicationType.NONE, server.port et servicecomb.rest.address. Reproduisez POST /oauth2/token via le gateway tout en comparant les logs du provider et du gateway concernant la fermeture de la connexion et le timeout. Le travail est terminé lorsque la cause de configuration ou de compatibilité pertinente est identifiée et qu’un correctif vérifié est documenté.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- java, spring
- Domaine
- api, backend
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 25/100