簡體   English   中英

從另一個類調用方法時,DiscoveryClient上的java.lang.NullPointerException

[英]java.lang.NullPointerException on DiscoveryClient when calling the method from another class

當我通過瀏覽器調用方法本身時,它正在工作,並且得到了預期的JSON 因此,該方法有效,並且請求的服務已注冊。

    @RequestMapping("/getArticle/{articleId}")
public String getArticle(@PathVariable("articleId") Integer articleId) {
    // {"articleId":47,"name":"test","price":5.0}
    List<ServiceInstance> instances = 
discoveryClient.getInstances("articlemicroservice");    //null when calling 
    ServiceInstance serviceInstance = instances.get(0);
    String baseUrl = serviceInstance.getUri().toString();

    baseUrl = baseUrl + "/db/find/" + articleId.toString();

    System.out.println("BASEURL: " + baseUrl);

    RestTemplate restTemplate = new RestTemplate();
    ResponseEntity<String> response = null;

    try {
        response = restTemplate.exchange(baseUrl, HttpMethod.GET, 
getHeaders(), String.class);
    } catch (Exception ex) {
        System.out.println(ex);
    }
    // {"articleId":47,"name":"test","price":5.0}
    String articleEntity = response.getBody().toString();
    System.out.println("articleEntity: " + articleEntity);
    return articleEntity;
}

當我從另一個類(位於同一項目中)調用該方法時,我得到了NullPointerException

    @GetMapping(path = "/addCartItemToCart/{cartId}/{articleId}/{quantity}")
public @ResponseBody String addCartItemToCart(@PathVariable("cartId") 
Integer cartId,
        @PathVariable("articleId") Integer articleId, 
@PathVariable("quantity") Integer quantity) {

    ArticleMicroserviceRestConnectorRequester n = new 
ArticleMicroserviceRestConnectorRequester();

    String article = n.getArticle(articleId); //calling the method here
    JSONObject json = new JSONObject(article);
    CartItemEntity cartItemEntity = new CartItemEntity();
    cartItemEntity.setArticleId(json.getInt("articleId"));
    cartItemEntity.setQuantity(quantity);
    cartItemEntity.setCartItemId(cartId);
    CartEntity cartEntity = cartRepository.findById(cartId).get();
    cartEntity.addCartItem(cartItemEntity);
    cartEntity.setNumberOfCartItems(cartEntity.getNumberOfCartItems() + 
 cartItemEntity.getQuantity());
    cartRepository.save(cartEntity);
    return "Saved";     
    }

例外:

java.lang.NullPointerException: null at de.leuphana.jee.connector.jpa.behaviour.ArticleMicroserviceRestConnectorRequester.getArticle(ArticleMicroserviceRestConnectorRequester.java:44) ~[classes/:na] ...

addCartItemToCart您創建的新實例ArticleMicroserviceRestConnectorRequester 它不是由Spring管理的,因此discoveryClient沒有自動連接,它為null。

您必須將ArticleMicroserviceRestConnectorRequester注入其他類。 因此,您將獲得一個由Spring管理的實例,該實例應具有自動接線/注入的discoveryClient

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM