사용자 정의 스케일링 리스너 추가
WebSphere® Application Server Developer Tools for Eclipse를 사용하여 사용자 정의 스케일링 리스너 번들을 작성할 수 있습니다. 사용자 정의 스케일링 리스너는 보류 중인 모든 스케일링 조치에 대한 알림을 받습니다. 그러면 리스너는 스케일링 조치를 허용하거나 거부할 수 있습니다. 또한 조치를 처리하도록 결정할 수 있으므로 스케일링 동작에 대한 전체 사용자 정의를 제공합니다.
시작하기 전에
Liberty 설치에 scalingController-1.0 기능이 있는지 확인하십시오. 스케일링 제어기에 대한 정보는 Liberty 집합체에 대한 자동 스케일링 설정 및 스케일링 제어기를 참조하십시오.
이 태스크 정보
리스너 인터페이스를 구현하고 해당 구현 클래스를 서비스 레지스트리에 등록해야 합니다. 스케일링 리스너는 스케일링 조치를 허용하거나 거부하고 처리할 수 있습니다.
각 Liberty SPI에 대한 Java API 문서는 ${wlp.install.dir}/dev 디렉토리의 API 문서 서브디렉토리 중 하나에 있는 별도의 압축 파일에서 사용 가능합니다.
프로시저
- 파일 > 새로 작성 > 기타를 클릭한 다음 OSGi를 펼치십시오.
- OSGi 번들 프로젝트를 클릭하고 다음을 클릭하십시오. 새 OSGi 번들 프로젝트 창이 열립니다.
- 프로젝트 이름으로 ScalingSPISampleBundle을 입력하십시오. 대상 런타임 목록에서 WebSphere Application Server Liberty를 선택하십시오. 런타임이 없는 경우에는 새 런타임을 클릭하여 WebSphere Application Server Liberty 런타임을 작성하십시오.
- 애플리케이션에 번들 추가 단일 선택 단추를 선택 취소하십시오.
- 다음을 두 번 클릭한 다음 OSGi 번들 페이지로 이동하십시오.
- OSGi 번들 페이지에서 번들의 라이프사이클을 제어하는 Java 클래스인 활성기 생성을 선택하십시오. 활성기 이름은 scalingspisamplebundle.Activator로 두고 완료를 클릭하십시오.
- 파일 > 새로 작성 > 기타를 클릭한 다음 OSGi를 펼치십시오.
- Liberty 기능 프로젝트를 클릭한 후 다음을 클릭하십시오. Liberty 기능 프로젝트 창이 열립니다.
- 프로젝트 이름으로 ScalingSPISampleFeature를 지정하십시오.
- 대상 런타임 목록에서 WebSphere Application Server Liberty를 선택하고 다음을 클릭하십시오. OSGi 번들 선택 페이지가 열립니다.
- OSGi 번들 선택 페이지에서 ScalingSPISampleBundle 1.0.0을 포함된 번들로 선택하고 완료를 클릭하십시오.
- 창 > 환경 설정 > 플러그인 개발 > 대상 플랫폼을 클릭하고 SPI를 포함한 WebSphere Application Server Liberty를 선택하십시오.
- 적용을 클릭한 후 확인을 클릭하십시오.
- ScalingSPISampleBundle > BundleContent > META-INF를 펼치고 플러그인 Manifest 편집기를 사용하여 MANIFEST.MF 파일을 여십시오.
- 종속 항목 탭을 선택하고 com.ibm.wsspi.scaling.action.consumer 및 com.ibm.wsspi.scaling.action.controller 패키지를 가져온 패키지 분할창에 추가하십시오. 변경사항을 저장하려면 Ctrl+S를 눌러야 합니다.
- 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; } }
- 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을 가져오도록 선택하십시오.
- ScalingSPISampleFeature 프로젝트를
마우스 오른쪽 단추로 클릭하고 기능 설치를 클릭하여 Liberty 런타임에 대해 기능을 설치하십시오.
기능 설치 메뉴 옵션은 Java EE 퍼스펙티브의 엔터프라이즈 탐색기 보기에 있습니다.
- server.xml 파일을 편집하여 ScalingSPISampleFeature를 사용으로 설정하십시오.
... <featureManager> ... <feature>scalingController-1.0</feature> <feature>usr:ScalingSPISampleFeature</feature> </featureManager>...
상위 주제: Liberty SPI 유틸리티

파일 이름: twlp_wve_add_scaling_listener.html