Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.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代码连接到Azure Cosmos DB时发生未知后异常_Java_Azure_Azure Cosmosdb - Fatal编程技术网

从Java代码连接到Azure Cosmos DB时发生未知后异常

从Java代码连接到Azure Cosmos DB时发生未知后异常,java,azure,azure-cosmosdb,Java,Azure,Azure Cosmosdb,我创建了一个简单的Java项目。并将JARs添加到classpath。在文件BulkImport.java中,我正在尝试连接到Azure Cosmos DB。但是,我遇到了以下错误 警告:[main]警告 com.microsoft.azure.documentdb.GlobalEndpointManager-未能 检索数据库帐户信息。 com.microsoft.azure.documentdb.DocumentClientException: java.net.UnknownHostExce

我创建了一个简单的
Java
项目。并将
JARs
添加到
classpath
。在文件BulkImport.java中,我正在尝试连接到
Azure Cosmos DB
。但是,我遇到了以下错误

警告:[main]警告 com.microsoft.azure.documentdb.GlobalEndpointManager-未能 检索数据库帐户信息。 com.microsoft.azure.documentdb.DocumentClientException: java.net.UnknownHostException:这通常是一个临时错误 主机名解析期间,表示本地服务器没有 从权威服务器接收响应

BulkImport.java

public class BulkImport {

    //public static final Logger LOGGER = LoggerFactory.getLogger(BulkImport.class);
    public static final String ENDPOINT = "https://<xxxx>.documents.azure.com:443/";
    public static final String PRIMARY_KEY = xxxx
    public static final String DATABASE = "xxxx"
    public static final String CONTAINER = "xxxx";
    public static final String PARTITION_KEY = "/id";
    public static final int THROUGHPUT = 10000;
    public static void main(String args[]) throws Exception {

        executeBulkImport();
        System.out.print("Done");
    }

    public static void executeBulkImport() throws Exception
    {
        ConnectionPolicy connectionPolicy = new ConnectionPolicy();
        connectionPolicy.setMaxPoolSize(1000);

        // Below line is giving the error
        DocumentClient client = new DocumentClient(ENDPOINT, PRIMARY_KEY, connectionPolicy, ConsistencyLevel.Session);  

        DocumentCollection collection = Utilities.createEmptyCollectionIfNotExists(client, DATABASE, CONTAINER, PARTITION_KEY, THROUGHPUT);
        ArrayList<String> list = new ArrayList<String>();
        JSONParser jsonParser = new JSONParser();
        try (FileReader reader = new FileReader("C:\\samplejson.json")) {

            Object obj = jsonParser.parse(reader);

            JSONArray jsonArray  = (JSONArray) obj;
            System.out.println(jsonArray);
            if (jsonArray  != null) {
                int len = jsonArray.size();
                for (int i=0;i<len;i++){
                    list.add(jsonArray.get(i).toString());
                }
            }
            System.out.println(list.get(0));

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        }
        client.getConnectionPolicy().getRetryOptions().setMaxRetryWaitTimeInSeconds(30);
        client.getConnectionPolicy().getRetryOptions().setMaxRetryAttemptsOnThrottledRequests(9);

       // Builder pattern
        DocumentBulkExecutor.Builder bulkExecutorBuilder = DocumentBulkExecutor.builder().from(client, DATABASE, CONTAINER,
                collection.getPartitionKey(), 20000);
        try {
            DocumentBulkExecutor bulkExecutor = bulkExecutorBuilder.build();
            client.getConnectionPolicy().getRetryOptions().setMaxRetryWaitTimeInSeconds(0);
            client.getConnectionPolicy().getRetryOptions().setMaxRetryAttemptsOnThrottledRequests(0);
            BulkImportResponse bulkImportResponse = bulkExecutor.importAll(list, false, false, null);
            System.out.println(bulkImportResponse.getNumberOfDocumentsImported());
        } catch (Exception e) {
            e.printStackTrace();
        }
        client.close();
    }
}
公共类导入{
//公共静态最终记录器Logger=LoggerFactory.getLogger(BulkImport.class);
公共静态最终字符串终结点=”https://.documents.azure.com:443/";
公共静态最终字符串主键=xxxx
公共静态最终字符串数据库=“xxxx”
公共静态最终字符串CONTAINER=“xxxx”;
公共静态最终字符串分区_KEY=“/id”;
公共静态最终整数吞吐量=10000;
公共静态void main(字符串args[])引发异常{
executeBulkImport();
系统输出打印(“完成”);
}
public static void executeBulkImport()引发异常
{
ConnectionPolicy ConnectionPolicy=新的ConnectionPolicy();
connectionPolicy.setMaxPoolSize(1000);
//下面的行给出了错误
DocumentClient client=新的DocumentClient(端点、主键、连接策略、一致性级别会话);
DocumentCollection collection=Utilities.createEmptyCollectionIfNotExists(客户端、数据库、容器、分区密钥、吞吐量);
ArrayList=新建ArrayList();
JSONParser JSONParser=新的JSONParser();
试试看(FileReader=newfilereader(“C:\\samplejson.json”)){
objectobj=jsonParser.parse(reader);
JSONArray JSONArray=(JSONArray)obj;
System.out.println(jsonArray);
if(jsonArray!=null){
int len=jsonArray.size();

对于(int i=0;i我遇到了类似的问题,因为我试图从on-prem环境进行连接。设置代理有助于:

 ConnectionPolicy defaultPolicy = ConnectionPolicy.GetDefault();
 HttpHost proxy = HttpHost.create("your-proxy-host:8080");
 defaultPolicy.setProxy(proxy);
 defaultPolicy.setConnectionMode(ConnectionMode.Gateway);
此代码适用于:

<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure-documentdb</artifactId>
    <version>2.4.7</version>
</dependency>

com.microsoft.azure
azure文档数据库
2.4.7

如果你有其他版本的azure java sdk,你需要找到类似的解决方案来设置你的代理。

显然java无法解析主机名。你尝试过其他方法吗?比如
dig.documents.azure.com
?你可能需要通过代理吗?在公司环境中经常会遇到这种情况。我如何使用dig?还有,是的ht关于代理。但是我尝试了使用/不使用代理,结果是相同的。
dig检查您是否可以手动解析连接到的地址。我在windows上,所以我执行了
nslookup
。它正在返回IP地址!到目前为止,我刚刚更改了环境。我正在从虚拟机以及eclipse版本进行尝试是Neon,而我切换到了其他版本。但是,如果我切换回以前的环境,这可能会有所帮助。将检查,谢谢!