package net.caiban.utils.aliyun;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import com.aliyun.oss.ClientConfiguration;
import com.aliyun.oss.OSSClient;
import com.google.common.base.Preconditions;
public class OssUtil {
public static enum ENDPOINT{
qingdao("http://oss-cn-qingdao.aliyuncs.com"),
qingdao_internal("oss-cn-qingdao-internal.aliyuncs.com"),
beijing("http://oss-cn-beijing.aliyuncs.com"),
beijing_internal("http://oss-cn-beijing-internal.aliyuncs.com"),
hangzhou("http://oss-cn-hangzhou.aliyuncs.com"),
hangzhou_internal("http://oss-cn-hangzhou-internal.aliyuncs.com"),
hongkong("http://oss-cn-hongkong.aliyuncs.com"),
hongkong_internal("http://oss-cn-hongkong-internal.aliyuncs.com"),
shenzhen("http://oss-cn-shenzhen.aliyuncs.com"),
shenzhen_internal("http://oss-cn-shenzhen-internal.aliyuncs.com"),
shanghai("http://oss-cn-shanghai.aliyuncs.com"),
shanghai_internal("http://oss-cn-shanghai-internal.aliyuncs.com"),
guigu("http://oss-us-west-1.aliyuncs.com"),
guigu_internal("http://oss-cn-west-1-internal.aliyuncs.com"),
yatai("http://oss-ap-southeast-1.aliyuncs.com"),
yatai_internal("http://oss-ap-southeast-1-internal.aliyuncs.com"),
;
String endpoint;
private ENDPOINT(String endpoint){
this.endpoint = endpoint;
}
public String getEndpoint(){
return this.endpoint;
}
}
private static String accessId;
private static String accessKey;
private static Map<String, OSSClient> clientMap = new ConcurrentHashMap<String, OSSClient>();
private static InetAddress ia;
private static String hostName;
public static int TIMEOUT = 60*5; //在浏览器与服务器失去通讯5分钟后清除缓存
private static ClientConfiguration conf;
static{
try{ia = InetAddress.getLocalHost();}catch(UnknownHostException e){}
hostName=ia.getHostName();
//ossClient = new OSSClient(Constants.ossEndpoint, Constants.accessId, Constants.accessKey);
conf = new ClientConfiguration();
//设置HTTP最大连接数(默认为50)
conf.setMaxConnections(100);
//设置TCP连接超时时间(默认为50000毫秒)
conf.setConnectionTimeout(10000);
}
public static String getHostName() {
return hostName;
}
public static void init(String accessId, String accessKey){
OssUtil.accessId = accessId;
OssUtil.accessKey = accessKey;
}
synchronized public static OSSClient getClient(ENDPOINT endpoint) {
Preconditions.checkNotNull(endpoint);
if(clientMap.get(endpoint.name())==null){
clientMap.put(endpoint.name(), new OSSClient(endpoint.getEndpoint(), OssUtil.accessId, OssUtil.accessKey, conf));
}
return clientMap.get(endpoint.name());
}
public static void main(String[] args) {
OssUtil.init("id", "key");
OSSClient client = OssUtil.getClient(ENDPOINT.hangzhou_internal);
System.out.println(client.getEndpoint());
}
}