簡體   English   中英

azure 中的 Spring Cloud 函數拋出空指針異常

[英]Spring cloud function in azure throws null pointer exception

我已將 Spring Cloud 功能部署到 azure 功能應用程序。API 在本地開發人員機器上運行良好。 而當部署到天藍色時,從郵遞員/客戶端調用時會引發空指針異常。 Java 運行時版本:11 功能擴展版本:~3

2022-02-25T10:14:10.644 [Information] 2022-02-25 10:14:10.629 ERROR 2880 --- [pool-2-thread-1]       : Error null
2022-02-25T10:14:10.645 [Information] java.lang.NullPointerException
2022-02-25T10:14:10.645 [Information] at org.springframework.cloud.function.adapter.azure.FunctionInvoker.handleRequest(FunctionInvoker.java:129)
2022-02-25T10:14:10.645 [Information] at ProductController.getProduct(ProductController.java:53)

下面是引發異常的產品控制器的片段。

@FunctionName("getProduct")
    public HttpResponseMessage getProduct(@HttpTrigger(name = "getRequest", methods = {
            HttpMethod.GET }, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<String> getProductRequest,
                                                        ExecutionContext context) {
        ProductRequestDTO productRequestDTO = new ProductRequestDTO();
        try {
             String id = getProductRequest.getQueryParameters().get("id");

            if (id != null) {
                log.info("Request Received for id: " + id);
                productRequestDTO.setId(id);
            }
            return getProductRequest.createResponseBuilder(HttpStatus.OK).body(handleRequest(productRequestDTO,context)).build();
        } 
catch (NullPointerException e) {
            l
log.error("Error " + e.getMessage());
        
            return getProductRequest.createResponseBuilder(HttpStatus.INTERNAL_SERVER_ERROR).build();
        }

    }

pom.xml

=============
<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <azure.functions.maven.plugin.version>1.14.2</azure.functions.maven.plugin.version>
        <azure.functions.java.library.version>1.4.2</azure.functions.java.library.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-function-adapter-azur
e</artifactId>
            <version>3.2.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-function-webflux</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>
  • 因為對象沒有被實例化而是被使用,所以會發生java.lang.NullPointerException
  • 實例化的目的是將實例的地址分配給對象,由於獲取到的對象的實例不存在,所以經常拋出NullPointerException異常,因此返回的地址為null。 如果您在沒有首先確定問題情況的情況下引用這個不存在的實例地址,則會引發此異常。
  • 您收到 NullPointerException,因為您嘗試創建 AzureSpringBootRequestHandler 的實例失敗。 配置可能有問題。
  • 您輸入的空值不應該是造成這種情況的原因。 官方文件也傳了null。 拋出的異常意味着您尚未成功完成創建實例。
  • 如果您嘗試擴展 AzureSpringBootRequestHandler 並獲得 NullPointException,則問題可能是您的 AzureSpringBootRequestHandler 版本缺少 Azure 所需的重要功能。

請參閱這些鏈接以獲取更多信息。

  1. Azure 中的 Spring Cloud 功能
  2. AzureSpringBootRequestHandler.java 的版本
  3. Azure 函數、azureFunctionsPackage 任務失敗並出現 java.lang.NullPointerException
  4. Java空指針異常

我們遇到了類似的問題,並通過更新 Function Extension Version: ~4 和一些其他依賴版本來解決它,如下所示

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-function-dependencies</artifactId>
            <version>3.2.3</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>com.microsoft.azure.functions</groupId>
            <artifactId>azure-functions-java-library</artifactId>
            <version>${azure.functions.java.library.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<pluginManagement>
    <plugins>
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>azure-functions-maven-plugin</artifactId>
            <version>${azure.functions.maven.plugin.version}</version>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.2.0</version>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.3.0</version>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-clean-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>io.gatling</groupId>
            <artifactId>gatling-maven-plugin</artifactId>
            <version>4.1.5</version>
        </plugin>
    </plugins>
</pluginManagement>

暫無
暫無

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

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