0

我正在使用 Azure Functions 连接到 Java 中的数据库。要重用连接,需要静态连接。但我得到: 令牌上的语法错误,应改为 AnnotationName
如何在 java 中获得静态连接?这是我的代码:

import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;

import org.json.JSONObject;
private static MongoClient mongoClient = MongoClients.create(<Connection-String>);

public class DBClass{
...
}

4

1 回答 1

0

根据我的测试,您的代码运行良好。

package com.mongofunction;

import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoIterable;

import java.util.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.*;

public class Function {

    private static String connectionString = "mongodb://jackmongo:euGe2******Lg==@jackmongo.documents.azure.com:10255/?ssl=true&replicaSet=globaldb";
    private static final MongoClient client = MongoClients.create(connectionString);

    @FunctionName("HttpTrigger-Java")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req", methods = {HttpMethod.GET}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,
            final ExecutionContext context) {
        context.getLogger().info("Java HTTP trigger processed a request.");

        String result = "";

        result += client.toString() + " : " + client.hashCode() + '\n';

        MongoIterable<String> dbList = client.listDatabaseNames();

        for(String db : dbList){
            context.getLogger().info(db);
            result += db + '\n';
        }
        return request.createResponseBuilder(HttpStatus.OK).body(result).build();
    }
}

我的函数应用网址:https ://jackjavafunction.azurewebsites.net/api/HttpTrigger-Java

响应:

在此处输入图像描述

您能否检查一下您的 mongo-java-driver 版本?这是我的:

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.11.0</version>
</dependency>

更新

DBClass.java

public class DBClass{
    private static String connectionString = "mongodb://jackmongo:euGe****g==@jackmongo.documents.azure.com:10255/?ssl=true&replicaSet=globaldb";
    private static final MongoClient client = MongoClients.create(connectionString);

    public static String GetDBs(){
        String result = "";

        result += client.toString() + " : " + client.hashCode() + '\n';

        MongoIterable<String> dbList = client.listDatabaseNames();

        for(String db : dbList){
            result += db + '\n';
        }

        return result;
    } 

}

函数.java

public class Function {

    @FunctionName("HttpTrigger-Java")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req", methods = {HttpMethod.GET}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,
            final ExecutionContext context) {
        context.getLogger().info("Java HTTP trigger processed a request.");
        return request.createResponseBuilder(HttpStatus.OK).body(DBClass.GetDBs()).build();
    }
}

于 2019-09-25T09:18:57.107 回答