标签: session-reuse

Java okHttp重用keep-alive连接

如何通过 okHttp 重用 http 保持活动连接?

我的代码示例:

public class MainWithOkHttp {

    static OkHttpClient _client = new OkHttpClient();

    public static void main(String[] args) {
        ...
        query1();
        ...
        // in this request
        Request _request = new Request.Builder()
            .url("...")
            .addHeader("connection", "keep-alive")
            .addHeader("cookie", _cookie)
            .post(postParams)
            .build();
        // in this request my previous session is closed, why?
        // my previous session = session created in query1 method
        Response _response = _client.newCall(_request).execute();
        ...
    }

    ...
    private static void query1() {
        ...
        Request request = new Request.Builder()
            .url("...") …
Run Code Online (Sandbox Code Playgroud)

java session keep-alive okhttp session-reuse

5
推荐指数
1
解决办法
8341
查看次数

如何建立与 FileZilla Server 1.2.0 的 FTPS 数据连接

使用 Apache commons-net 的 Java FTPSClient 进行会话恢复是一个已知问题。会话恢复是 FTPS 服务器数据连接所需的一项安全功能。Apache FTPSClient 不支持会话恢复,并且 JDK API 使得构建自定义实现变得困难。有一些使用反射的解决方法,请参阅此答案和此commons-net bug 条目

我在 JDK 11 中使用了这样的解决方法(请参阅下面的片段),并针对本地 FileZilla 服务器对其进行了测试。它适用于 FileZilla Server 0.9.6,但不适用于 FileZilla Server 1.2.0,这是撰写本文时的最新版本。在该版本中,当尝试建立数据连接时,服务器会响应:

425 Unable to build data connection: TLS session of data connection not resumed.
Run Code Online (Sandbox Code Playgroud)

正如我所说,FileZilla Server 0.9.6 适合我进行会话恢复的方式,并且我确保激活了要求会话恢复的设置。

在 FileZilla Server 1.2.0 中,此类设置现在是隐式设置的,无法通过 GUI 更改,也许根本不能更改。我可以调整一些服务器设置才能使其正常工作吗?或者是我如何实施解决方法的问题?有人遇到类似的问题吗?

这是我正在使用的解决方法:

public class FTPSClientWithSessionResumption extends FTPSClient {

    static {
        System.setProperty("jdk.tls.useExtendedMasterSecret", "false");
        System.setProperty("jdk.tls.client.enableSessionTicketExtension", "false");
    }

    @Override
    protected void _connectAction_() throws IOException {
        super._connectAction_();
        execPBSZ(0);
        execPROT("P"); …
Run Code Online (Sandbox Code Playgroud)

java filezilla ftps apache-commons-net session-reuse

5
推荐指数
1
解决办法
2386
查看次数

如何让 ansible 重用 SSH 会话,而不是为每项任务创建一个新会话?

我的公司防火墙策略仅允许同一源和目标之间每分钟 60 秒 20 个连接。

因此,ansible 播放一段时间后就会挂起。

我希望多个任务使用相同的 ssh 会话而不是创建新会话。为此,我pipelining = True在本地文件夹ansible.cfg和命令行中设置了以下内容。

cat /opt/automation/startservices/ansible.cfg

[defaults]
host_key_checking = False
gathering = smart
[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=600s
control_path = %(directory)s/%%h-%%r
pipelining = True

ANSIBLE_SSH_PIPELINING=0 ansible-playbook -i /opt/automation/startservices/finalallmw.hosts /opt/automation/startservices/va_action.yml -e '{ dest_host: myremotehost7 }' -e dest_user=oracle
Run Code Online (Sandbox Code Playgroud)

该剧本太大,无法在此处共享,但正是该任务循环,并且由于 60 秒内超过 20 个 ssh 连接而挂起。

cat /opt/automation/startservices/ansible.cfg

[defaults]
host_key_checking = False
gathering = smart
[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=600s
control_path = %(directory)s/%%h-%%r
pipelining = True

ANSIBLE_SSH_PIPELINING=0 …
Run Code Online (Sandbox Code Playgroud)

ssh pipeline ansible session-reuse

4
推荐指数
1
解决办法
1万
查看次数