我有两个Java Spring Boot应用程序: 在端口8080上:
@SpringBootApplication
@RestController
public class LogonPageApplication {
private static final String PROCESS_STRING_URL = "http://localhost:8081/processString";
public static void main(String[] args) {
SpringApplication.run(LogonPageApplication.class, args);
}
@GetMapping("/send")
public String test() {
String responseBody = "";
try {
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
String requestBody = "{testttgfvrdf}";
HttpEntity<String> httpEntity = new HttpEntity<>(requestBody, headers);
ResponseEntity<String> response = restTemplate.exchange(PROCESS_STRING_URL, HttpMethod.POST, httpEntity, String.class);
responseBody = response.getBody();
} catch (Exception e) {
return e.getMessage();
}
return "Main Page\n" + "Response from /processString: " + responseBody;
}
}
在端口8081上:
@SpringBootApplication
@RestController
public class AcceptMessageApplication {
public static void main(String[] args) {
SpringApplication.run(AcceptMessageApplication.class, args);
}
@PostMapping("/processString")
public String processString(@RequestBody String inputString) {
return "Processed string: " + inputString;
}
}
我有两个Docker文件:
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY target/AcceptMessage-0.0.1-SNAPSHOT.jar /app/AcceptMessage-0.0.1-SNAPSHOT.jar
EXPOSE 8080
CMD ["java", "-jar", "AcceptMessage-0.0.1-SNAPSHOT.jar"]
唯一不同的是文件名
和一个由docker组成的文件:
version: '3'
services:
appacc:
build:
context: AcceptMessage
dockerfile: Dockerfile
ports:
- "8081:8080"
networks:
- my-network
applog:
build:
context: LogonPage
dockerfile: Dockerfile
ports:
- "8080:8080"
networks:
- my-network
networks:
my-network:
# docker-compose build
# docker-compose up
当我从控制台运行这个应用程序时,它可以正常工作,当我通过postman 发送请求时,端点也可以工作,但是我无法让他们交换消息,因为每当我进入http://localhost:8080/send时,它都会停靠,从而导致:
I/O error on POST request for "http://localhost:8081/processString": Connection refused.个