Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从另一个类调用方法时发现客户端上的java.lang.NullPointerException_Java_Spring_Rest_Netflix Eureka - Fatal编程技术网

从另一个类调用方法时发现客户端上的java.lang.NullPointerException

从另一个类调用方法时发现客户端上的java.lang.NullPointerException,java,spring,rest,netflix-eureka,Java,Spring,Rest,Netflix Eureka,当我通过浏览器调用方法本身时,它正在工作,我得到了预期的JSON。因此,该方法正在工作,请求的服务已注册 @RequestMapping("/getArticle/{articleId}") public String getArticle(@PathVariable("articleId") Integer articleId) { // {"articleId":47,"name":"test","price":5.0} List<ServiceInstance

当我通过浏览器调用方法本身时,它正在工作,我得到了预期的
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;
}
例外情况:

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

添加CartItemToCart
中,您创建了
ArticleMicroserviceRestConnectorRequester
的新实例。它不是由Spring管理的,因此
discoveryClient
不是自动连接的,它是空的


您必须将
ArticleMicroserviceRestConnectorRequester
注入到其他类中。因此,您将获得一个由Spring管理的实例,该实例应具有自动连线/插入的
discoveryClient

addCartItemToCart
中,您将创建
ArticleMicroServiceRestConnectorRequest的新实例。它不是由Spring管理的,因此
discoveryClient
不是自动连接的,它是空的


您必须将
ArticleMicroserviceRestConnectorRequester
注入到其他类中。因此,您将得到一个由Spring管理的实例,该实例应该具有自动连接/注入的
discoveryClient

显然
discoveryClient
null
。它是如何初始化/设置的?
@Autowired private DiscoveryClient DiscoveryClient当从另一个类调用方法时,它可能没有初始化,但是当调用方法本身时它被初始化了?但是如果我不明白原因,等一下。在
addCartItemToCart
中,您创建了
ArticleMicroserviceRestConnectorRequester
的新实例,对吗?它不是由Spring管理的,因此
discoveryClient
不是自动连接的。所以它当然是
null
。您必须将
ArticleMicroserviceRestConnectorRequester
注入到另一个类中,以便它由Spring管理。是的,忘记使用
@Autowired
。我不知道为什么我要用另一种方式初始化它。谢谢你们!显然,
discoveryClient
null
。它是如何初始化/设置的?
@Autowired private DiscoveryClient DiscoveryClient当从另一个类调用方法时,它可能没有初始化,但是当调用方法本身时它被初始化了?但是如果我不明白原因,等一下。在
addCartItemToCart
中,您创建了
ArticleMicroserviceRestConnectorRequester
的新实例,对吗?它不是由Spring管理的,因此
discoveryClient
不是自动连接的。所以它当然是
null
。您必须将
ArticleMicroserviceRestConnectorRequester
注入到另一个类中,以便它由Spring管理。是的,忘记使用
@Autowired
。我不知道为什么我要用另一种方式初始化它。谢谢你们!
    @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";     
    }