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

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

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

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

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 ItemsAs400RpcSdkSessionFactoryConfiguration {           @Value("${ol.jt400.project.as400RpcSdk.user:@null}")     private String user;     @Value("${ol.jt400.project.as400RpcSdk.password:@null}")     private String password;           @Bean     public RpcAction itemsAs400RpcSdkInitAction() {         ItemsAs400RpcSdkInitAction action = new ItemsAs400RpcSdkInitAction();         action.setUser(user);         action.setPassword(password);         return action;     }           @SuppressWarnings("unchecked")     @Bean     public SimpleRpcSessionPoolFactory itemsAs400RpcSdkRpcSessionFactory(RpcAction itemsAs400RpcSdkInitAction) {         SimpleRpcSessionPoolFactory sessionPoolFactory = new SimpleRpcSessionPoolFactory();         sessionPoolFactory.setMaxConnections(2);         sessionPoolFactory.setKeepAliveInterval(600000);         sessionPoolFactory.setOrchestrationKey("as400RpcSdk");                   sessionPoolFactory.setInitAction(itemsAs400RpcSdkInitAction);                   RpcAction action = new ItemsAs400RpcSdkKeepAliveAction();         Class<RpcAction> actionClass = (Class<RpcAction>) action.getClass();         sessionPoolFactory.setKeepAliveAction(actionClass);                   action = new ItemsAs400RpcSdkCleanupAction();         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 as400RpcSdkRpcSession = itemsAs400RpcSdkRpcSessionFactory.getSession();         /* autogenerated - sessions block end */           try { ...         } finally {             /* autogenerated - disconnect block start */             // Return Session To Connection Pool             itemsAs400RpcSdkRpcSessionFactory.returnSession(as400RpcSdkRpcSession);             /* autogenerated - disconnect block end */         }     }   }

 

Related content