warden容器能否运行交互式的java应用?

大概从13年11月份一直在纠结这个问题,在warden容器里面,其实是无法运行交互式的应用的。

我来举两个非常简单的java例子,一个是每隔1s输出一次时间的循环,另一个是从命令行读取int,并输出。

程序1:

import java.util.Date;

public final class ConsoleTest {
  public static void main(String[] args) throws InterruptedException {
    while(1==1) {
      Date date = new Date();

      System.out.println(date.toString());

      Thread.sleep(1000);
    }    
  }
}

程序2:

import java.util.Scanner;

public class InputTest{
  public static void main(String []args){
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
    System.out.println("n="+n);
  }
}


结果程序1可以成功部署,但是程序2不行。


刚开始,我只是怀疑,可能跟warden容器不支持带有输入等待的进程有关。

但是,没有证据佐证,而且从理论上讲,warden只是一个运行进程的小型linux容器,为啥有这种莫名其妙的限制。再加上老师也是这个意见。

于是我开始各种跑偏,怀疑是我写的buildpack有问题(因为我最终希望部署的是一个tuscany应用,需要自己提供buildpack)

怀疑设置的java环境变量有问题,主要是XMX和XSS,各种调节参数,都没有用。

郁闷的13年结束了,我也没有意识到这可能是warden容器的设计理念的问题。当然,现在我还是不能确信这一点,但是通过上面2个简单的java程序的验证,

我相信这种可能性很大,并且正在发邮件,需求帮助。

最后,我将tuscany部署成功后的一段等待用户输入的代码给注释掉了,终于可以在CF平台上成功部署tuscany应用了。

痛哭流涕啊,由于这个问题,14年的春节都没过好,中间一度想要放弃,还好在导师的帮助下,坚持下来了,总算是有点进步。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值