使用Java SDK的通用Aws客户端生成器
我正在做一个项目,现在我们有一个请求,让所有实例(Ec2、S3等)都可以选择将coll作为代理服务器。 例如,我有:使用Java SDK的通用Aws客户端生成器,java,amazon-web-services,aws-sdk,Java,Amazon Web Services,Aws Sdk,我正在做一个项目,现在我们有一个请求,让所有实例(Ec2、S3等)都可以选择将coll作为代理服务器。 例如,我有: AmazonElasticLoadBalancing elbClient = AmazonElasticLoadBalancingClientBuilder.standard() .withRegion(region.getName()).withCredentials(credentials).build(); AmazonEC2 ec2Client = Amaz
AmazonElasticLoadBalancing elbClient = AmazonElasticLoadBalancingClientBuilder.standard() .withRegion(region.getName()).withCredentials(credentials).build();
AmazonEC2 ec2Client = AmazonEC2ClientBuilder.standard().withRegion(region).withCredentials(getCredentials()).build();
在我项目的很多地方
检查完AWS Java SDK文档后,我发现在使用build()
之前,我需要使用ClientConfiguration(someMethodToGetProxyConfig())添加
我对java还是一个新手,我很难创建一个足够通用的函数来为所有这些类型的客户机实现这一点。
我试过:
public static AwsClientBuilder clientBuilder(AwsClientBuilder client) throws ServiceWareException {
final String PROXY = "proxy_host_port";
String hasProxy = Configuration.getConfigurationParameter(PROXY);
client = client.withRegion(getRegion()).withCredentials(getCredentials());
if (!hasProxy.isEmpty() && hasProxy != null)
client = client.withClientConfiguration(getProxyConfig());
return (AwsClientBuilder) client.build();
}
但它失败了,因为我无法将AmazonEC2ClientBuilder转换为AwsClientBuilder。
是否有人可以分享一些如何操作的技巧,或者有过类似的操作经验?在最后一行中,您调用了.build()
,它返回的是一个客户机而不是客户机生成器。如果您删除对.build()
的调用,那么我想代码将正常工作
公共静态AwsClientBuilder客户端生成器(AwsClientBuilder客户端)引发ServiceWareException{
最后一个字符串PROXY=“PROXY\u host\u port”;
字符串hasProxy=Configuration.getConfigurationParameter(代理);
client=client.withRegion(getRegion()).withCredentials(getCredentials());
如果(!hasProxy.isEmpty()&&hasProxy!=null)
client=client.withClientConfiguration(getProxyConfig());
返回客户;
}
如果要使用此功能,需要对结果调用.build
。为了更好地进行类型检查,您可能还希望向签名添加泛型类型参数(因此.build
返回正确类型的值)
公共静态AwsClientBuilder客户端生成器(AwsClientBuilder客户端)引发ServiceWareException{
...
}
如果希望此方法实际生成客户机,可以在该方法中调用.build
,但它需要返回客户机,而不是客户机生成器。因为这是一种不同的行为,所以我更改了方法的名称以反映这一点
public static T buildClient(AwsClientBuilder客户端)抛出ServiceWareException{
最后一个字符串PROXY=“PROXY\u host\u port”;
字符串hasProxy=Configuration.getConfigurationParameter(代理);
client=client.withRegion(getRegion()).withCredentials(getCredentials());
如果(!hasProxy.isEmpty()&&hasProxy!=null)
client=client.withClientConfiguration(getProxyConfig());
返回client.build();
}
我希望我能多做一次投票,非常感谢,这对我帮助很大,也帮助我更多地理解泛型:)