public class SftpPooledFactory extends org.apache.commons.pool2.BaseKeyedPooledObjectFactory<String,SftpConnect>
PooledObjectState 枚举中,有以下值
IDLE 在池中,处于空闲状态
ALLOCATED 被使用中
EVICTION 正在被逐出器验证
VALIDATION 正在验证
INVALID 驱逐测试或验证失败并将被销毁
ABANDONED 对象被客户端拿出后,长时间未返回池中,或没有调用 use 方法,即被标记为抛弃的| 构造器和说明 |
|---|
SftpPooledFactory() |
SftpPooledFactory(int size) |
SftpPooledFactory(Map<String,SftpConnConfig> connConfigMap) |
SftpPooledFactory(Map<String,SftpConnConfig> connConfigMap,
SftpPoolConfig sftpPoolConfig) |
SftpPooledFactory(SftpPoolConfig sftpPoolConfig) |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
activateObject(String sftpId,
org.apache.commons.pool2.PooledObject<SftpConnect> p)
激活
当Pool中决定移除一个对象交付给调用者时额外的"激活"操作,
比如可以在 activateObject方法中"重置"参数列表让调用者使用时感觉像一个"新创建"的对象一样;
如果object是一个线程,可以在"激活"操作中重置"线程中断标记",或者让线程从阻塞中唤醒等;
如果object是一个socket,那么可以在"激活操作"中刷新通道,或者对socket进行链接重建(假如socket意外关闭)等.
|
static void |
closeSftp(SftpConnect sftpConnect)
通过sftp连接池工厂关闭 sftp链接
此方法会判断sftp链接是否纳管到了连接池
如果没有则直接关闭
如果有则交还给连接池
|
SftpConnect |
create(String sftpId)
创建 sftpConnect 对象
|
static SftpConnect |
createConnect(String host,
Integer port,
String user,
String password)
创建一个 sftp 链接
注: 此工厂静态方法创建的 sftp 链接不会纳管到链接池中, 注意自行关闭
|
static SftpConnect |
createConnect(String host,
Integer port,
String user,
String password,
String id) |
void |
destroyObject(String sftpId,
org.apache.commons.pool2.PooledObject<SftpConnect> p)
销毁 sftp 链接
如果对象池中检测到某个"对象"idle的时间超时,或者操作者向对象池"归还对象"时检测到"对象"已经无效,那么此时将会导致"对象销毁";
当调用此方法时,"对象"的生命周期必须结束.如果object是线程,那么此时线程必须退出;
如果object是socket操作,那么此时socket必须关闭;
如果object是文件流操作,那么此时"数据flush"且正常关闭.
|
SftpConnConfig |
getSftpConnConf(String sftpId)
根据 id 获取 sftp链接配置
|
SftpPool |
getSftpPool()
单例模式创建 sftp 链接池
如果在创建 工厂的时候已经设置了连接池配置则使用设置的连接池配置
如果没有设置则使用默认值
|
void |
passivateObject(String sftpId,
org.apache.commons.pool2.PooledObject<SftpConnect> p)
"钝化"对象,当调用者"归还对象"时,Pool将会"钝化对象";
钝化的言外之意,就是此"对象"暂且需要"休息"一下.
|
void |
setSftpConnConfig(SftpConnConfig config)
添加一个 sftp 链接配置
|
SftpConnConfig |
setSftpConnConfig(String host,
Integer port,
String user,
String password)
生成一个 sftp 链接配置对象
|
SftpConnConfig |
setSftpConnConfig(String host,
Integer port,
String user,
String password,
String sftpId) |
void |
setSftpConnConfigMap(Map<String,SftpConnConfig> configMap)
批量设置sftp链接配置
|
boolean |
validateObject(String sftpId,
org.apache.commons.pool2.PooledObject<SftpConnect> p)
验证 sftp 链接是否有效
Pool中不能保存无效的"对象",因此"后台检测线程"会周期性的检测 Pool中"对象"的有效性,
如果对象无效则会导致此对象从 Pool中移除,并 destroy;
此外在调用者从Pool获取一个"对象"时,也会检测"对象"的有效性,确保不能将"无效"的对象输出给调用者;
当调用者使用完毕将"对象"归还到 Pool时,仍然会检测对象的有效性.所谓有效性,就是此"对象"的状态是否符合预期,是否可以对调用者直接使用;
如果对象是Socket,那么它的有效性就是socket的通道是否畅通/阻塞是否超时等.
|
org.apache.commons.pool2.PooledObject<SftpConnect> |
wrap(SftpConnect value)
使用
PooledObject 包装 sftp 链接 |
public SftpPooledFactory(int size)
public SftpPooledFactory()
public SftpPooledFactory(SftpPoolConfig sftpPoolConfig)
public SftpPooledFactory(Map<String,SftpConnConfig> connConfigMap)
public SftpPooledFactory(Map<String,SftpConnConfig> connConfigMap, SftpPoolConfig sftpPoolConfig)
public static SftpConnect createConnect(String host, Integer port, String user, String password) throws com.jcraft.jsch.JSchException
host - sftp服务ipport - 端口user - 用户名password - 密码com.jcraft.jsch.JSchExceptionpublic static SftpConnect createConnect(String host, Integer port, String user, String password, String id) throws com.jcraft.jsch.JSchException
com.jcraft.jsch.JSchExceptionpublic static void closeSftp(SftpConnect sftpConnect)
sftpConnect - sftp链接对象public SftpPool getSftpPool()
public SftpConnConfig setSftpConnConfig(String host, Integer port, String user, String password)
host - sftp服务ipport - 端口user - 用户名password - 密码public SftpConnConfig setSftpConnConfig(String host, Integer port, String user, String password, String sftpId)
host - sftp服务ipport - 端口user - 用户名password - 密码sftpId - sftp的唯一idpublic void setSftpConnConfig(SftpConnConfig config)
config - sftp 链接配置public void setSftpConnConfigMap(Map<String,SftpConnConfig> configMap)
configMap - sftp链接配置Map对象public SftpConnConfig getSftpConnConf(String sftpId)
sftpId - 指定sftp的唯一idpublic SftpConnect create(String sftpId) throws Exception
create 在类中 org.apache.commons.pool2.BaseKeyedPooledObjectFactory<String,SftpConnect>sftpId - 指定sftp的唯一idException - 创建失败抛出异常public org.apache.commons.pool2.PooledObject<SftpConnect> wrap(SftpConnect value)
PooledObject 包装 sftp 链接wrap 在类中 org.apache.commons.pool2.BaseKeyedPooledObjectFactory<String,SftpConnect>value - 被包装sftp链接public boolean validateObject(String sftpId, org.apache.commons.pool2.PooledObject<SftpConnect> p)
validateObject 在接口中 org.apache.commons.pool2.KeyedPooledObjectFactory<String,SftpConnect>validateObject 在类中 org.apache.commons.pool2.BaseKeyedPooledObjectFactory<String,SftpConnect>sftpId - 指定sftp的唯一idp - 池化对象public void destroyObject(String sftpId, org.apache.commons.pool2.PooledObject<SftpConnect> p) throws Exception
destroyObject 在接口中 org.apache.commons.pool2.KeyedPooledObjectFactory<String,SftpConnect>destroyObject 在类中 org.apache.commons.pool2.BaseKeyedPooledObjectFactory<String,SftpConnect>sftpId - 指定sftp的唯一idp - 池化对象Exception - 销毁失败时抛出异常public void activateObject(String sftpId, org.apache.commons.pool2.PooledObject<SftpConnect> p) throws Exception
activateObject 在接口中 org.apache.commons.pool2.KeyedPooledObjectFactory<String,SftpConnect>activateObject 在类中 org.apache.commons.pool2.BaseKeyedPooledObjectFactory<String,SftpConnect>sftpId - 指定sftp的唯一idp - 池化对象Exception - 激活失败时抛出异常public void passivateObject(String sftpId, org.apache.commons.pool2.PooledObject<SftpConnect> p) throws Exception
passivateObject 在接口中 org.apache.commons.pool2.KeyedPooledObjectFactory<String,SftpConnect>passivateObject 在类中 org.apache.commons.pool2.BaseKeyedPooledObjectFactory<String,SftpConnect>sftpId - 指定sftp的唯一idp - 池化对象Exception - 钝化失败时抛出异常Copyright © 2021. All rights reserved.