两个带有两个端口的spring boot应用程序安装程序在使用resttemplate进行post时抛出500个错误

9rnv2umw  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(311)

好的,我有sts4和构建spring引导应用程序。我想要一个处理的图形用户界面使用vaadin和它的工作良好。我有另一个选择activemq主题并创建到第一个主题的帖子。如果我使用postman来做文章,那么在第一个应用程序的rest界面上就可以正常工作了。但是,当我运行第二个,检测到一个主题,它试图发布到第一个apprest接口时,我得到。。。

org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 : [<!doctype html><html lang="en"><head><title>HTTP Status 500 – Internal Server Error</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-colo... (6083 bytes)]

进一步的测试表明,它之所以抱怨是因为它与第一个端口在同一个端口(8080)上侦听。
在我设置的第一个应用程序的application.properties中

server.port=${PORT:8080}
vaadin.compatibilityMode = false
logging.level.org.atmosphere = warn
spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.user=admin
spring.activemq.password=admin
spring.jms.pub-sub-domain=true

在我设置的第二个应用程序中

server.port=${PORT:8081}
spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.user=admin
spring.activemq.password=admin
spring.jms.pub-sub-domain=true
active-mq.topic=personQBE

试图发布的有问题的代码是。。。

public void postResponses(Person person) {
    System.out.println("postResponses(Person person)");
    RestTemplate restTemplate = new RestTemplate();

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
    headers.add("Accept", MediaType.APPLICATION_JSON.toString()); //Optional in case server sends back JSON data

    MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
    map.add("firstName", person.getFirstName());
    map.add("lastName", person.getLastName());
    map.add("alias", person.getAlias());
    map.add("dataSource", "BI");

    HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<>(map, headers);

    ResponseEntity<String> response = null;
    try {
        response = restTemplate.exchange("http://localhost:8080/person/add",
                                  HttpMethod.POST,
                                  entity,
                                  String.class);
    } catch (RestClientException e) {
        // TODO Log.error later
        e.printStackTrace();
    }
    System.out.println("response:" + response);

}

我已经阅读了博客文章microservices with spring,但不确定是否需要这样做来解决我的问题,接下来,第二个应用程序将成为代理从外部api获取数据的模板,每当第一个应用程序发布该主题时,因此如果第二个应用程序在某个地方单独运行,端口争用将不会成为问题。

0ejtzxu1

0ejtzxu11#

为使用随机端口号运行应用程序添加以下值。

server.port=0

希望您已配置 Eureka 以及 Zuul .

相关问题