0

休止状態で struts1.3 アクション レイヤーを使用しています。DAOレイヤーにアクセスするためのヘルパーインスタンスを作成するために、HeperFactoryパターンを介してアクセスしています。ヘルパー ファクトリはシングルトンのようですが、スレッド セーフです。複数の更新を行うと、時間がかかります。私が達成したいのは、マルチスレッドヘルパーアクセスを実現するための設計パターンまたはメカニズムです。すべてのスレッド (リクエスト) は、dao にアクセスするためのリクエストごとに 1 つのヘルパー インスタンスを持つ必要があります。

I have two approaches
1. Using the singleton pattern (creating a single instance of each class and sharing them among threads)...
2. creating instances of the classes in each thread as and when they are needed. 

2点目を達成するには?API はありますか、それともプーリング メカニズムを使用する必要がありますか? 2点目(データ消失)に問題はありますか?

これは私の既存のコードです:

TaskAction.java

パブリッククラスTaskAction{

public void udpateRecord(){
    ......
    TaskHelper taskHelper = (TaskHelper) HelperFactory
            .getHelperInstance(TaskHelper.class);
    taskHelper.updateRecord(daoObj);
    ......
}

}

HelperFactory.java

public final class HelperFactory{
 public static Object getHelperInstance(Class<?> helperClass) {
        try {
            return LookUpFactory.getLookUpFactory().lookUpClass(helperClass);
        } catch (InstantiationException e) {
            throw new RuntimeException(e);
        } catch (IllegalAccessException e) {
            throw new RuntimeException(e);
     }
}

LookUpFactory.java

public Object lookUpClass(String lookupClass)
        throws InstantiationException, IllegalAccessException,
        ClassNotFoundException {
    if (lookupClass == null) {
        throw new IllegalArgumentException(
                "supplied lookupClass to lookup was null");
    }
    Object obj = this.objects.get(lookupClass);
    if (obj == null) {
        obj = Class.forName(lookupClass).newInstance();
        this.objects.put(lookupClass, obj);
    }
    return obj;
}       
4

0 に答える 0