dea-warden内部查错

本文介绍了DEA启动应用过程中遇到的问题及解决方法,包括如何避免因端口连接失败导致的应用销毁,以及针对jpetstore部署失败的具体解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

dea启动应用实例后,会异步探测应用访问端口(宿主机上的端口,如:61003),如果多次探测都无法连接,dea会认为应用启动失败,随即会销毁容器,导致现场不能保留。

解决办法:

  1. 注释代码中的destroy
    代码/var/vcap/packages/dea_next/lib/dea/task.rb,在方法:promise_destroy和destroy直接返回return

常用路径

warden.yml中

部署路径:container_depot_path:/var/vcap/data/warden/depot

例如:

java tomcat的路径:/var/vcap/data/warden/depot/186jdkndjf8/tmp/rootfs/home/vcap/app/.java-buildpack/tomcat

186jdkndjf8是部署的编号

进入容器

首先要编译warden

进warden代码目录:

# gem install bundler

# bundle install

连接容器

bundle exec bin/warden -s /var/vcap/data/warden/warden.sock

列出容器

warden> list
handles[0] : 186jdkndjf8

执行命令

warden> run --handle 186jdkndjf8 --script 'ls /home/vcap/logs'

 

jpetstore部署失败,原因:

jpetstore用到了spring-framework,并且用到了mybatis做O/R map,jdbc连接数据库。

dea调用buildpack探测到jpetstore这些特性后,为了实现动态替换数据库服务地址,动态的修改了web.xml,添加了jar包。

该jar包依赖的spring-context.jar包的一个类:ApplicationContextInitializer,

但jpetstore中的spring-context.jar包版本较老,不包该类,导致启动失败,错误:

 

Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContextInitializer
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1293)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1145)

解决办法:替换spring-context.jar为3.1以上的版本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值