사용자 정의 스케일링 리스너 추가

WebSphere® Application Server Developer Tools for Eclipse를 사용하여 사용자 정의 스케일링 리스너 번들을 작성할 수 있습니다. 사용자 정의 스케일링 리스너는 보류 중인 모든 스케일링 조치에 대한 알림을 받습니다. 그러면 리스너는 스케일링 조치를 허용하거나 거부할 수 있습니다. 또한 조치를 처리하도록 결정할 수 있으므로 스케일링 동작에 대한 전체 사용자 정의를 제공합니다.

시작하기 전에

Liberty 설치에 scalingController-1.0 기능이 있는지 확인하십시오. 스케일링 제어기에 대한 정보는 Liberty 집합체에 대한 자동 스케일링 설정스케일링 제어기를 참조하십시오.

이 태스크 정보

리스너 인터페이스를 구현하고 해당 구현 클래스를 서비스 레지스트리에 등록해야 합니다. 스케일링 리스너는 스케일링 조치를 허용하거나 거부하고 처리할 수 있습니다.

Liberty SPI에 대한 Java API 문서는 ${wlp.install.dir}/dev 디렉토리의 API 문서 서브디렉토리 중 하나에 있는 별도의 압축 파일에서 사용 가능합니다.

프로시저

  1. 파일 > 새로 작성 > 기타를 클릭한 다음 OSGi를 펼치십시오.
  2. OSGi 번들 프로젝트를 클릭하고 다음을 클릭하십시오. 새 OSGi 번들 프로젝트 창이 열립니다.
  3. 프로젝트 이름으로 ScalingSPISampleBundle을 입력하십시오. 대상 런타임 목록에서 WebSphere Application Server Liberty를 선택하십시오. 런타임이 없는 경우에는 새 런타임을 클릭하여 WebSphere Application Server Liberty 런타임을 작성하십시오.
  4. 애플리케이션에 번들 추가 단일 선택 단추를 선택 취소하십시오.
  5. 다음을 두 번 클릭한 다음 OSGi 번들 페이지로 이동하십시오.
  6. OSGi 번들 페이지에서 번들의 라이프사이클을 제어하는 Java 클래스인 활성기 생성을 선택하십시오. 활성기 이름scalingspisamplebundle.Activator로 두고 완료를 클릭하십시오.
  7. 파일 > 새로 작성 > 기타를 클릭한 다음 OSGi를 펼치십시오.
  8. Liberty 기능 프로젝트를 클릭한 후 다음을 클릭하십시오. Liberty 기능 프로젝트 창이 열립니다.
  9. 프로젝트 이름으로 ScalingSPISampleFeature를 지정하십시오.
  10. 대상 런타임 목록에서 WebSphere Application Server Liberty를 선택하고 다음을 클릭하십시오. OSGi 번들 선택 페이지가 열립니다.
  11. OSGi 번들 선택 페이지에서 ScalingSPISampleBundle 1.0.0포함된 번들로 선택하고 완료를 클릭하십시오.
  12. > 환경 설정 > 플러그인 개발 > 대상 플랫폼을 클릭하고 SPI를 포함한 WebSphere Application Server Liberty를 선택하십시오.
  13. 적용을 클릭한 후 확인을 클릭하십시오.
  14. ScalingSPISampleBundle > BundleContent > META-INF를 펼치고 플러그인 Manifest 편집기를 사용하여 MANIFEST.MF 파일을 여십시오.
  15. 종속 항목 탭을 선택하고 com.ibm.wsspi.scaling.action.consumercom.ibm.wsspi.scaling.action.controller 패키지를 가져온 패키지 분할창에 추가하십시오. 변경사항을 저장하려면 Ctrl+S를 눌러야 합니다.
  16. ScalingSPISampleBundle 프로젝트에서 구현 클래스 ScalingSPISamplePlugin을 추가하십시오. 이 새 클래스는 com.ibm.wsspi.scaling.action.consumer.ScalingActionPlugin 인터페이스를 구현합니다.
    package scalingspisamplebundle;
    
    import com.ibm.wsspi.scaling.action.consumer.ScalingActionPlugin;
    import com.ibm.wsspi.scaling.action.controller.ScalingActionContext;
    import com.ibm.wsspi.scaling.action.controller.ScalingActionContext.ActionType;
    import com.ibm.wsspi.scaling.action.controller.ScalingActionContext.ActionDecision;;
    
    /**
     * This a sample Liberty scaling SPI plugin that acts as a template for developing a custom
     * SPI plugin. In this plugin, no actual work is done and the return value to the Liberty Scaling
     * controller is always DEFAULT_ACTION.
     * 
     */
    public class ScalingSPISamplePlugin implements ScalingActionPlugin {
    
        /** {@inheritDoc} */
        @Override
        public ActionDecision actionRequired(ScalingActionContext action) {
    
            ActionDecision returnType = ActionDecision.DEFAULT_ACTION;
    
            if (action.getActionType() == ActionType.START_SERVER) {
                returnType = startServer(action);
            }
            else if (action.getActionType() == ActionType.CREATE_SERVER) {
                returnType = createServer(action);
            }
            else if (action.getActionType() == ActionType.STOP_SERVER) {
                returnType = stopServer(action);
            }
    
            return returnType;
    
        }
    
        private ActionDecision startServer(ScalingActionContext action) {
            // perform some action to start a server
    
            return ActionDecision.DEFAULT_ACTION;
        }
    
        private ActionDecision createServer(ScalingActionContext action) {
            // perform some action to create a server
    
            return ActionDecision.DEFAULT_ACTION;
        }
    
        private ActionDecision stopServer(ScalingActionContext action) {
            // perform some action to stop a server
    
            return ActionDecision.DEFAULT_ACTION;
        }
    }
  17. ScalingSPISampleBundle 프로젝트에서 Activator 클래스를 열고 start(BundleContext) 메소드를 편집하여 새 리스너 서비스를 등록하는 코드를 추가하십시오.
    public void start(BundleContext context) throws Exception {
        final Hashtable<String, Object> properties = new Hashtable<String, Object>();
        ScalingSPISamplePlugin scalingSPISamplePlugin = new ScalingSPISamplePlugin();
        context.registerService(ScalingActionPlugin.class, scalingSPISamplePlugin, properties);
    }

    HashMap을 가져오도록 프롬프트가 표시되면 java.util.HashMap을 가져오도록 선택하십시오.

  18. ScalingSPISampleFeature 프로젝트를 마우스 오른쪽 단추로 클릭하고 기능 설치를 클릭하여 Liberty 런타임에 대해 기능을 설치하십시오.

    기능 설치 메뉴 옵션은 Java EE 퍼스펙티브의 엔터프라이즈 탐색기 보기에 있습니다.

  19. server.xml 파일을 편집하여 ScalingSPISampleFeature를 사용으로 설정하십시오.
    ...
    <featureManager>
      ...
      <feature>scalingController-1.0</feature>
      <feature>usr:ScalingSPISampleFeature</feature>
    </featureManager>...

주제의 유형을 표시하는 아이콘 태스크 주제

파일 이름: twlp_wve_add_scaling_listener.html