1. bae 百度云
使用了java tomcat。
目前没遇到什么问题。
有几点需要称赞一下:
A. 发布的时候,bae提供了一个预览版本,可以在不影响上一个版本的情况下使用。这样就方便了测试,测试通过了,再正式发布。
这一点貌似sae没有提供
B. svn发布代码比较方便。
我使用sae的时候,没感觉这么方便。(也可能是我使用问题)
2. 腾讯云
用起来没遇到什么问题。
3. sae 新浪云
本地文件读写需要修改代码,比较麻烦。
java sae环境调试。
我本地测试使用jetty9.0,sae移植遇到的问题:
容器使用的是jetty 9.2,不是tomcat。略微有点差异。
mysql 连接器 5.1.39不能用。只能使用5.1.8.
hibernate最新的5.x不能用。换用3.6,ok。
hibernate使用的日志组件,本地与sae环境有点不一样,需要添加一个slf4j-log4j12-1.7.21.jar。
sae的文件处理比较麻烦。在http线程中,还算友好。在其他线程无法读取,要使用专门的api,就算使用专门的kpi,也会有各种各样的坑,比登天还难。这一点开发成本较高。
3. 华为云
多个端口被封掉,不能使用。可能是我的配置问题,比较坑,有些东西我也没搞懂。总之配置成本有点高。
ftp只能用主动模式。
附sae文件处理实验代码
在servlet中调用下面的代码:
public static void newFile(){
try{
File file = new File(FILE);
InputStream i = new FileInputStream(file);
Scanner s = new Scanner(i);
String string = s.nextLine();
System.out.println(string + System.currentTimeMillis());
s.close();
}catch(Exception e){
System.out.println("newFile");
e.printStackTrace();
}
System.out.println("newFile end");
}
public static void newFileInputStream(){
try{
FileInputStream i = new FileInputStream(FILE);
Scanner s = new Scanner(i);
String string = s.nextLine();
System.out.println(string + System.currentTimeMillis());
s.close();
}catch(Exception e){
System.out.println("newFileInputStream");
e.printStackTrace();
}
System.out.println("newFileInputStream end");
}
public static void newInThread(){
new Thread(new Runnable(){
@Override
public void run() {
FileTest.newFile();
System.out.println("newFile run end");
FileTest.newFileInputStream();
System.out.println("newFileInputStream run end");
}}).start();
System.out.println("newInThread end");
}
第一个行数和第二个函数可以正常运行,读出文件内容。
第三个函数报错,无法读取。