아파치 공유 풀을 사용하여 '객체'풀을 생성하려고합니다. 문자열 형식의 인수를 사용하고 올바른 형식의 개체를 만드는 개체 팩토리가 이미 있으므로이 팩토리를 사용하고 싶습니다.apache commons pool - 인수를 사용하는 팩토리 사용 방법
그러나 문제는 일반 풀 객체의 서명으로 인수를 취하는 팩토리를 전달할 수 없다는 점입니다.
//This is a wrapper class that holds an Object pool
Class INService {
private ObjectPool<INConnection> pool_ = null;
/**
* Constructs an instance of INService, given a pool size
* and a class which implements INHandler interface.
* @param poolSize - size of the service pool
* @param c - the class which handles the INHandler service interface.
*/
public INService(int poolSize, String objectType) {
pool_ = new GenericObjectPool<INConnection>(factory, Objecttype); // won't compile.
}
...
}
PoolableObjectfactory 인터페이스는 makeObject, destroyObject, validateObject, activateObject 및 passivateObject와 같은 메소드를 정의합니다. 그러나 매개 변수를 취하는 makeObject() 메소드는 없습니다.
그것은 내가이 작업을 수행 할 수있는 유일한 방법은 각 개체 유형에 대해 여러 팩토리 클래스를 작성하고 같은 경우 - 다른 물건 작성하는 것 같다 : 어떤 우아한 방법이,
public INService(int poolSize, String objectType) {
if (objectType.equals("scap")
pool_ = new GenericObjectPool<INConnection>(scapFactory);
else if (objectType.equals("ucip")
pool_ = new GenericObjectPool<INConnection>(ucipFactory);
...
}
를 또는, 이 복제를 위해서 여러 팩토리 클래스를 복제/생성하는 대신에?
어떻게 keyPool에 대한 매개 변수를 설정 했습니까? 예 : http://commons.apache.org/proper/commons-pool/api-1.2/org/apache/commons/pool/impl/GenericKeyedObjectPoolFactory.html – neoeahit
@neoeahit 사용했는지 기억이 안납니다. [GenericKeyedObjectPoolFactory'의 생성자 중 하나 (http://commons.apache.org/proper/commons-pool/api-1.2/org/apache/commons/pool/impl/GenericKeyedObjectPoolFactory.html#constructor_summary) 또는 [GenericKeyedObjectPool'에 대한 생성자] (http://commons.apache.org/proper/commons-pool/api-1.2/org/apache/commons/pool/impl/GenericKeyedObjectPool.html#constructor_summary), 다음을 수행해야합니다. 시험. 아니면 다른 것을 알고 싶습니까? – JBert