我有两个简单的端点:
在端口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 = "{fromlogon}";
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);
}
@GetMapping("/test")
public String testt() {
return "Accept-message-Page";
}
@PostMapping("/processString")
public String processString(@RequestBody String inputString) {
return "Processed string: " + inputString;
}
}
我还有两个Docker文件:
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY target/LogonPage-0.0.1-SNAPSHOT.jar /app/LogonPageApplication.jar
EXPOSE 8080
CMD ["java", "-jar", "LogonPageApplication.jar"]
它们之间唯一的区别是Jarfile名称--一个是Logon,另一个是AcceptMessage
因此,我使用以下命令运行我的应用程序:
docker network create my_network
docker build -t logon-page-app .
docker run -d -p 8080:8080 --network my_network --name logon-page-container logon-page-app
docker build -t accept-page-app .
docker run -d -p 8081:8080 --network my_network --name accept-page-container accept-page-app
虽然这款应用在控制台上运行并通过postman 发送请求时运行得很好,但每当我进入http://localhost:8080/send.时,我都无法让他们交换消息,因为我将其停靠在Docker上