/
セッションプールの構築方法 - バックエンド認証なし

セッションプールの構築方法 - バックエンド認証なし

コネクションプールは、データベースへの今後のリクエストが必要になったときに接続(コネクション)を再利用できるように維持される接続(コネクション)のキャッシュです。 コネクションプールは、バックエンドでコマンドを実行するパフォーマンスを向上させるために使用されます。

この例では、バックエンド認証が必要ないコネクションプールの確立について説明します。 

OpenLegacy Connection Poolの有効化:

  1. 新規のサービスを作成します。

     

  2. Create pool チェックボックスをチェックします。

     

  3. エディタを利用し、コネクションPoolプロパティを編集します: (service editor → backend tab).

    コードでは以下です: (/src/main/java/com/{yourApiProjectName}/openlegacy/services/actions/{serviceNameSdkName}SessionFactoryConfiguration.java)

    @Configuration public class ItemTsSdkSessionFactoryConfiguration {           @Value("${ol.cics.project.tsSdk.user:#{null}}")     private String user;     @Value("${ol.cics.project.tsSdk.password:#{null}}")     private String password;     @Value("${ol.session-pool.config.item-ts-sdk.max-connections:2}")     private Integer maxConnections;     @Value("${ol.session-pool.config.item-ts-sdk.keep-alive-interval:60000}")     private Integer keepAliveInterval;           @Bean     public RpcAction itemTsSdkInitAction() {         ItemTsSdkInitAction action = new ItemTsSdkInitAction();         action.setUser(user);         action.setPassword(password);         return action;     }           @SuppressWarnings("unchecked")     @Bean     public SimpleRpcSessionPoolFactory itemTsSdkRpcSessionFactory(RpcAction itemTsSdkInitAction) {         SimpleRpcSessionPoolFactory sessionPoolFactory = new SimpleRpcSessionPoolFactory();         sessionPoolFactory.setMaxConnections(maxConnections);         sessionPoolFactory.setKeepAliveInterval(keepAliveInterval);         sessionPoolFactory.setOrchestrationKey("tsSdk");                   sessionPoolFactory.setInitAction(itemTsSdkInitAction);                   RpcAction action = new ItemTsSdkKeepAliveAction();         Class<RpcAction> actionClass = (Class<RpcAction>) action.getClass();         sessionPoolFactory.setKeepAliveAction(actionClass);                   action = new ItemTsSdkCleanupAction();         actionClass = (Class<RpcAction>) action.getClass();         sessionPoolFactory.setCleanupAction(actionClass);                   return sessionPoolFactory;     }   }         

     

注意: バックエンドでログイン資格情報を使用していない場合は、ログイン関連のすべてのフィールドをアクションパッケージから削除する必要があります。

Pool Cleanup

プールを常に準備しておくと、特にピーク時に1つのリクエストのパフォーマンスが向上します。 ただし、ピークに達していないときは、大きなプールを維持することにはオーバーヘッドがあります。 したがって、クリーニングアクションを使用してプールサイズを縮小できます。

注意: プロジェクトに複数のプールがある場合、クリーンアッププロパティはすべてのプールで共有されます。

Pool プロパティ:
  • Max Connections: 許可されるオープンセッションの最大量をバックエンドに設定します。 (注意: 最大値をライセンス制限を超えて設定することはできません)

  • Keep Alive Interval: KeepAliveAction呼び出し間の時間をミリ秒単位で設定します。

  • Init Action: 初期化アクションは、セッションを使用する準備が整う前に実行する必要のあるアクションを処理する関数です。 これは、接続プールに空きセッションがない場合に発生します。 デフォルトでは、新しいセッションが開始されると、バックエンドへの初期ログインが実行されます。

  • Keep Alive Action: KeepAliveアクションは、(KeepAliveIntervalプロパティに基づき)x時間ごとに発生します。 プール内のセッションが接続されたままになるようにします。

  • Cleanup Action: クリーンアップアクションは、セッションが接続プールに返される直前に実行され、セッションがプールに返される前に新しいビジネスロジックを実行する準備ができていることを確認します。

Pool Cleanup プロパティ:

Cleanup プロパティプレフィックス ol: session-pool : auto-cleanup 

  • enabled - 自動クリーンアップが有効になっているかどうか (デフォルト: true

  • minimum-sessions - プール内のセッションの数がこの数以下の場合、セッションをクリーンアップしません (デフォルト: 0)

  • idle-timeout - セッションをクリーンアップするための間隔(秒) (デフォルト: 360 秒)



プールセッションの処理の例

@Service(name = "Items") @OpenlegacyDesigntime(editor = "WebServiceEditor") @Component public class ItemsServiceImpl implements ItemsService { ...           // Get Session From Connection Pool          RpcSession tsSdkSession = itemTsSdkRpcSessionFactory.getSession();         /* autogenerated - sessions block end */           try { ...         } finally {             /* autogenerated - disconnect block start */             // Return Session To Connection Pool              itemTsSdkRpcSessionFactory.returnSession(tsSdkSession);             /* autogenerated - disconnect block end */         }     }   }