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.>
- Ngôn ngữ chính
- Java
- Star
- 1.9k
- Fork
- 814
- Merge trung bình
- 8 ngày 23 giờ
- Pull request đã merge (30 ngày)
- 1
Mô tả
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?
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Hướng nghiên cứu
Bắt đầu với OAuthServiceMainStandAlone và cấu hình provider, đặc biệt là WebApplicationType.NONE, server.port và servicecomb.rest.address. Tái hiện POST /oauth2/token thông qua gateway, đồng thời so sánh log của provider và gateway về việc đóng kết nối và timeout. Công việc được xem là hoàn tất khi xác định được nguyên nhân cấu hình hoặc tương thích liên quan và ghi lại một bản sửa lỗi đã được xác minh.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- java, spring
- Lĩnh vực
- api, backend
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Cần làm rõ
- Mức phù hợp với người mới
- 25/100