Coldfusion Amazon DynamoDB Java SDK赢得';不要使用代理设置

Coldfusion Amazon DynamoDB Java SDK赢得';不要使用代理设置,coldfusion,amazon-dynamodb,aws-sdk,coldfusion-11,Coldfusion,Amazon Dynamodb,Aws Sdk,Coldfusion 11,我正试图在ColdFusion 11中,在一个带有NTLM代理的公司网络上实现与AWS的DynamoDB的接口。我从BDCraven的实现开始,并根据扩展了它,以包括我的代理设置 下面是组件结构和init函数getProxyParameters.cfm从数据库中提取我的代理设置,并初始化strProxyServer、strProxyPort等。这些代理设置和凭据已在其他ColdFusion代码中测试过(使用cfhttp),并且绝对有效 component accessors="true" ali

我正试图在ColdFusion 11中,在一个带有NTLM代理的公司网络上实现与AWS的DynamoDB的接口。我从BDCraven的实现开始,并根据扩展了它,以包括我的代理设置

下面是组件结构和init函数
getProxyParameters.cfm
从数据库中提取我的代理设置,并初始化
strProxyServer
strProxyPort
等。这些代理设置和凭据已在其他ColdFusion代码中测试过(使用
cfhttp
),并且绝对有效

component accessors="true" alias="cfc.DynamoClient" displayname="DynamoClient" hint="I handle interactions with an Amazon DynamoDB instance"{
    property name="aws_key" type="string" hint="The AWS Key";
    property name="aws_secret" type="string" hint="The AWS Secret";
    property name="aws_creds" type="object";
    property name="aws_dynamodb" type="object";

    include "/getProxyParameters.cfm";

    variables.aws_key = "";
    variables.aws_secret = "";

    public cfc.DynamoClient function init(required string aws_key, required string aws_secret){
        variables.aws_key = trim(arguments.aws_key);
        variables.aws_secret = trim(arguments.aws_secret);
        variables.aws_creds =  createObject("java","com.amazonaws.auth.BasicAWSCredentials").init(variables.aws_key, variables.aws_secret);
        aws_clientconfig = createObject("java","com.amazonaws.ClientConfiguration").init();

        aws_clientconfig.setProtocol(createObject("java","com.amazonaws.Protocol").HTTPS);
        aws_clientconfig.setProxyHost(strProxyServer);
        aws_clientconfig.setProxyPort(strProxyPort);
        aws_clientconfig.setProxyUsername(strProxyUsername);
        aws_clientconfig.setProxyPassword(strProxyPassword);
        aws_clientconfig.setProxyDomain(strProxyDomain);

        variables.aws_dynamodb = createObject("java","com.amazonaws.services.dynamodb.AmazonDynamoDBClient").init(aws_creds, aws_clientconfig);
        variables.aws_dynamodb.setEndpoint('dynamodb.ap-southeast-2.amazonaws.com');
        variables.aws_dynamodb.setConfiguration(aws_clientconfig);

        return this;
    }

[...etc]
init
函数返回时不会出错,并且
变量.aws_dynamodb
是类型为
com.amazonaws.services.dynamodb.AmazonDynamoDBClient
的对象

问题是,当我尝试使用它时,代理设置被忽略:

public array function list_tables(string start_table, numeric limit=1){
    var table_request = createObject("java","com.amazonaws.services.dynamodb.model.ListTablesRequest").init();  
    table_request.setLimit(arguments.limit);
    if(structKeyExists(arguments,"start_table")){
        table_request.setExcusiveStartTableName(trim(arguments.start_table));
    }
    return variables.aws_dynamodb.listTables(table_request).getTableNames();
}
list\u tables
函数等待很长时间,然后返回ColdFusion错误:

我已尝试在服务器上运行
netstat-a
,而此请求正在发生,唯一的连接是此SYN_SENT:


…而且该IP看起来像AWS的服务器之一,而不是我的代理。我错过了什么明显的东西吗?有没有人让这种技术组合正常工作?

您是否尝试过使用当前的AWS Java SDK连接到Dynamo?您所引用的GitHub repo已经4年没有更新了,AWS大约在两年前完全修改了DynamoDB API,放弃了对原始API中许多方法的支持。我有一个在GitHub repo中使用较新的DynamoDB API的非常简单的例子:没有设置代理设置的例子,但是尝试较新的、受支持的API可能是值得的。谢谢@Brian-我以为我是(d/led 1.10.45取代了BDCraven的1.3.xx),但在类路径地狱中迷失了方向。看起来,
dynamodbv2
确实尊重代理设置-如果你想草草回答这个问题,我将插入一些工作代码。