应用迁移中遇到一些有特殊要求的应用,比如需要通过交互生成一些新的config文件,然后启动应用需要依赖于这些文件,这样在构建镜像的时候基本上是没有办法把这些文件固定的,因为他需要根据运行环境去进行动态注册生成,目前的解决方法如下:

1.写一段支持交互的python脚本,生成配置

#!/usr/bin/python

import subprocess
import time
import fcntl
import os p = subprocess.Popen(["java","-jar","a.jar"],stdin=subprocess.PIPE,stdout=subprocess.PIPE) flags = fcntl.fcntl(p.stdout,fcntl.F_GETFL)
fcntl.fcntl(p.stdout,fcntl.F_SETZFL,flags| os.O_NONBLOCK) time.sleep()
print p.stdout.read()
p.stdin.write("1\r\n")

开始调试时屏幕一直处于blocking状态,后来同事高手指导下加入NONBLOCK后才通过。

2.将python脚本放入tomcat运行的catalina.sh,让他在启动容器后,启动脚本一开始就运行

================================================

另外在应用迁移的时候遇到的另一个问题

代码类似

Cookie cookie = new Cookie("testCookie", "test");
cookie.setDomain(".test.com");
cookie.setPath("/");
cookie.setMaxAge();
resp.addCookie(cookie);

在tomcat 8.5的环境下报错

java.lang.IllegalArgumentException: An invalid domain [.test.com] was specified for this cookie
at org.apache.tomcat.util.http.Rfc6265CookieProcessor.validateDomain(Rfc6265CookieProcessor.java:)
at org.apache.tomcat.util.http.Rfc6265CookieProcessor.generateHeader(Rfc6265CookieProcessor.java:)
at org.apache.catalina.connector.Response.generateCookieString(Response.java:)
at org.apache.catalina.connector.Response.addCookie(Response.java:)
at org.apache.catalina.connector.ResponseFacade.addCookie(ResponseFacade.java:)
at com.cml.mvc.controller.HelloWorld.str(HelloWorld.java:)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:)
at java.lang.reflect.Method.invoke(Method.java:)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:

原因是  在tomcat8.5上是使用org.apache.tomcat.util.http.Rfc6265CookieProcessor

在tomcat8.0上使用的是org.apache.tomcat.util.http.LegacyCookieProcessor

解决办法是去掉域名前面的.

Cookie cookie = new Cookie("testCookie", "test");
cookie.setDomain("test.com");
cookie.setPath("/");
cookie.setMaxAge();
resp.addCookie(cookie);

基于Python的交互式访问的更多相关文章

  1. 基于Python的交互式可视化工具 [转]

    前几天发现一个可视化工具Dash,当看到它的交互式效果后突然就觉得眼前一亮.早就想写出来分享给大家,今天利用睡前一点时间发出来,希望能给有需要的朋友带来一点帮助或者多一个参考. Dash介绍 在Pyt ...

  2. scapy - 基于python的数据包操作库

    简介 地址:https://github.com/secdev/scapy scapy是一个基于python的交互式数据包操作程序和库. 它能够伪造或者解码多种协议的数据包,通过使用pcap文件对他们 ...

  3. Python_基于Python同Linux进行交互式操作实现通过堡垒机访问目标机

    基于Python同Linux进行交互式操作实现通过堡垒机访问目标机   by:授客 QQ:1033553122 欢迎加入全国软件测试交流群:7156436 实现功能 1 测试环境 1 代码实践 2 注 ...

  4. 基于python的互联网软件测试开发(自动化测试)-全集合

    基于python的互联网软件测试开发(自动化测试)-全集合 1   关键字 为了便于搜索引擎收录本文,特别将本文的关键字给强调一下: python,互联网,自动化测试,测试开发,接口测试,服务测试,a ...

  5. 推荐——基于python

    资料来源: <集体智慧编程>&网络 一.推荐系统 概述 定义 维基百科定义: 推荐系统属于资讯过滤的一种应用. 推荐系统能够将可能受喜好的资讯或实物(例如:电影.电视节目.音乐.书 ...

  6. 性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据

    基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据   by:授客 QQ:1033553122 实现功能 测试环境 环境搭建 使用前提 使用方法 运行程序 效果展 ...

  7. 基于python的opcode优化和模块按需加载机制研究(学习与个人思路)(原创)

    基于python的opcode优化和模块按需加载机制研究(学习与思考) 姓名:XXX 学校信息:XXX 主用编程语言:python3.5 个人技术博客:http://www.cnblogs.com/M ...

  8. 性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机或Docker容器性能数据

    基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据   by:授客 QQ:1033553122 实现功能 1 测试环境 1 环境搭建 3 使用前提 3 使用方法 ...

  9. 基于Python实现的死链接自动化检测工具

    基于Python实现的死链接自动化检测工具   by:授客 QQ:1033553122 测试环境: win7 python 3.3.2 chardet 2.3.0 脚本作用: 检测系统中访问异常(请求 ...

随机推荐

  1. 《Java编程思想》阅读笔记一

    Java编程思想 这是一个通过对<Java编程思想>(Think in java)第四版进行阅读同时对java内容查漏补缺的系列.一些基础的知识不会被罗列出来,这里只会列出一些程序员经常会 ...

  2. 使用 Visual Studio 部署 .NET Core 应用 ——.Net Core 部署到Ubuntu 16.04

    .Net Core 部署到Ubuntu 16.04 中的步骤 1.安装工具 1.apache 2..Net Core(dotnet-sdk-2.0) 3.Supervisor(进程管理工具,目的是服务 ...

  3. nginx+php7+mysql 在centos7.3下安装

    1.Nginx1.8.1   安装 1)安装 nginx 需要的扩展gcc,pcre-devel,zlib-devel, openssl openssl-devel yum -y install gc ...

  4. Django如何使文件在django自动执行

    1. Django admin源码中 admin.py from django.contrib import admin # Register your models here. 在admin源码中 ...

  5. hdu 3371(kruskal)

    Connect the Cities Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  6. 升级PIP源

    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django

  7. CSS 规范

    不能写得一手好字是一个遗憾.不能写得一手好看的代码更是一种遗憾.——致青春 1. 为选择器分组时,将单独的选择器单独放在一行. 2. 为了代码的易读性,在每个声明块的左花括号前添加一个空格. 3. 声 ...

  8. jquery请求解析xml

    我们使用jque.ajax来做这个实验.其核心实现原理就是将请求回来的xml数据用$()选择器封装,然后进行傻瓜式操作. 代码如下: 需要注意的是请求数据格式要声明成:xml.不然不生效. $.aja ...

  9. Pycharm5注册方式 @LYRE}}(T1[DD[@81IZDU$A

    0x1 ,安装 0x2 , 调整时间到2038年. 0x3 ,申请30天试用 0x4, 退出pycharm 0x5, 时间调整回来. 注册方法2:    在 注册时选择 License server ...

  10. 五十 常用第三方模块 PIL

    PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了.PIL功能非常强大,但API却非常简单易用. 由于PIL仅支持到Python 2.7,加上年久失修 ...