사용자 정의 서비스 작성

애플리케이션 서버에 대해 하나 이상의 사용자 정의 서비스를 작성할 수 있습니다. 각 사용자 정의 서비스는 서버가 시작되고 종료될 때마다 로드되고 초기화되는 클래스를 정의합니다. 각각의 이들 클래스는 com.ibm.websphere.runtime.CustomService 인터페이스를 구현해야 합니다. 사용자 정의 서비스를 작성한 후 관리 콘솔을 사용하여 애플리케이션 서버에 대해 해당 사용자 정의 서비스를 구성하십시오.

이 태스크 정보

[z/OS]사용자 정의 서비스는 제어기가 아닌 하위(servant)에서 실행합니다. 예를 들어 서버의 주기 동안 하나 이상의 하위(servant)가 시작되었기 때문에, 이러한 하위(servant)는 서버(제어기)가 실행된 지 한참 후에 시작할 수 있으며, WLM에서 필요한대로, 사용자 정의 서비스는 각 하위(servant)를 시작하는 동안 실행합니다.

[z/OS]서버 시작 및 시스템 종료 시 실행하는 연결점을 정의해야 하는 경우, 사용자 정의 서비스 클래스를 작성한 다음 관리 콘솔을 사용하여 사용자 정의 서비스 인스턴스를 구성하십시오. 애플리케이션 서버가 시작할 때 사용자 정의 서비스가 시작하고 초기화합니다.

[AIX Solaris HP-UX Linux Windows][IBM i]서버 또는 노드 에이전트가 시작하고 시스템 종료할 때마다 실행하는 루틴을 정의하기 위해 사용자 정의 서비스 클래스를 개발한 다음 사용자 정의 서비스 인스턴스를 구성합니다. 애플리케이션 서버 또는 노드 에이전트가 시작할 때 사용자 정의 서비스가 시작하고 초기화합니다.

다음은 제품 사용자 정의 서비스 구현에 적용되는 제한사항 목록입니다. 이러한 제한사항의 대부분은 initialize 메소드에만 적용됩니다.
  • initialize 및 shutdown 메소드는 런타임에 제어를 리턴해야 합니다.
  • 모든 사용자 정의 서비스 초기화 메소드가 리턴될 때까지 서버 인스턴스로 작업이 디스패치되지 않습니다.
  • initialize 및 shutdown 메소드는 각 서비스에 한 번, 그리고 서버 인스턴스를 구성하는 각 운영 체제 프로세스에 한 번씩 호출됩니다.
  • 프로세스를 남겨두지 않는 프로세스 레벨 정적 데이터의 초기화가 지원됩니다.
  • JDBC RMLT(자원 관리자 로컬 트랜잭션) 조작만 지원됩니다. 모든 UOW(Unit of Work)는 메소드가 리턴되기 전에 완료되어야 합니다.
  • 스레드 작성은 지원되지 않습니다.
  • I/O 파일 이외의 I/O 및 소켓 작성은 지원되지 않습니다.
  • 표준 Java EE(Java™ Platform, Enterprise Edition) 코드(예: 클라이언트 코드, 서블릿 및 엔터프라이즈 Bean)의 실행은 지원되지 않습니다.
  • JTA(Java Transaction API) 인터페이스를 사용할 수 없습니다.
  • 이 기능은 Java EE 서버 프로세스 및 분배된 일반 서버 프로세스에서만 사용 가능합니다.
  • 런타임에 시스템 종료를 호출하려고 하면 프로세스 종료 이전에 시스템 종료가 호출되는지 보증할 수 없습니다.
  • 자원을 요청하는 JNDI 조작은 제공되지 않습니다.

프로시저

  1. com.ibm.websphere.runtime.CustomService 인터페이스를 구현하도록 사용자 정의한 서비스 클래스를 개발하십시오.
    com.ibm.websphere.runtime.CustomService 인터페이스에 initialize 및 shutdown 메소드가 있습니다. 애플리케이션 서버는 initialize 메소드를 사용하여 사용자 정의 서비스에 특성을 전달합니다. 이들 특성은 다음과 같습니다.
    • 서비스에 대한 구성 정보를 포함하는 외부 파일의 이름을 제공하는 특성. externalConfigURLKey 특성을 사용하여 이 정보를 검색할 수 있습니다.
    • 서비스에 대한 다른 시스템 관리 구성 데이터와 함께 서비스에 대해 저장되는 이름-값 쌍을 포함하는 특성

    initialize와 shutdown 메소드 모두 특정 예외 서브클래스가 정의되지 않음에도 불구하고 예외를 작성할 수 있음을 선언합니다. 이들 중 한 메소드가 예외를 작성하는 경우, 런타임이 예외를 로그에 기록하고 사용자 정의 서비스를 사용 불가능하게 한 후 서버 시작을 계속합니다.

  2. 사용자 정의 서비스를 구성하십시오.

    관리 콘솔에서 서버 > 서버 유형 > WebSphere 애플리케이션 서버 > server_name을 클릭한 후, 서버 인프라에서 사용자 정의 서비스 > 새로 작성을 클릭하십시오. 그런 다음, 사용자 정의 서비스 인스턴스에 대한 설정 페이지에서 구현되는 클래스의 이름을 제공하여 기존 애플리케이션 서버 또는 노드 에이전트의 사용자 정의 서비스 구성을 작성하십시오. 사용자 정의 서비스 클래스가 구성 파일을 필요로 하는 경우, externalConfigURL 필드에 해당 구성 파일에 대한 완전한 경로 이름을 지정하십시오. 이 파일 이름이 사용자의 사용자 정의 서비스에 전달됩니다.

    사용자 정의 서비스에서 기본 라이브러리를 호출하려면 사용자 정의 서비스의 클래스 및 JAR 파일을 찾는 데 사용하는 경로 이름 외에 클래스 경로 필드에 해당 경로 이름을 제공하십시오. 이 프로시저는 확장 클래스 로더에 경로 이름이 추가되어 사용자 정의 서비스가 기본 라이브러리를 찾아서 올바르게 로드할 수 있습니다.

  3. 애플리케이션 서버를 중지한 다음 다시 시작하십시오.

    [AIX Solaris HP-UX Linux Windows][IBM i]애플리케이션 서버에서 사용자 정의 서비스를 개발하는 경우, 애플리케이션 서버를 중지한 다음 서버를 다시 시작하십시오.

    [AIX Solaris HP-UX Linux Windows][IBM i]노드 에이전트에서 사용자 정의 서비스를 개발하는 경우 노드 에이전트의 처리를 중지한 후 다시 시작하십시오. 관리 콘솔에서 시스템 관리 > 노드 에이전트를 클릭하고, 중지시키려는 노드 에이전트를 선택한 후 중지를 클릭하십시오. 노드 에이전트를 다시 시작하려면 다시 시작하려는 노드 에이전트를 선택하고 다시 시작을 클릭하십시오.

    [z/OS]애플리케이션 서버를 중지한 다음 서버를 다시 시작하십시오.

결과

각 사용자 정의 서비스는 서버가 시작되고 종료될 때마다 로드되고 초기화되는 클래스를 정의합니다.

[AIX Solaris HP-UX Linux Windows][IBM i]서버 또는 노드 에이전트가 시작하고 중지할 때마다 사용자 정의 서비스를 로드하고 초기화합니다.

[z/OS]서버가 시작하고 중지할 때마다 사용자 정의 서비스를 로드하고 초기화합니다.

이전에 언급한 것처럼 사용자 정의 서비스 클래스는 com.ibm.websphere.runtime.CustomService 인터페이스를 구현해야 합니다. 또한 사용자 클래스가 initialize 및 shutdown 메소드를 구현해야 합니다. 다음 예제에서는 사용자 정의 서비스를 구현하는 ServerInit 클래스를 선언하는 코드를 보여줍니다. 이 코드는 사용자 정의 서비스 클래스에 구성 파일이 필요하다고 가정합니다. 이 예제에는 외부 구성 파일에 액세스하는 코드도 포함되어 있습니다. 클래스에 구성 파일이 필요하지 않은 경우, 이 코드의 configProperties 부분을 포함할 필요가 없습니다.
public class ServerInit implements com.ibm.websphere.runtime.CustomService
{
/**
* The initialize method is called by the 애플리케이션 서버 runtime when the
* server starts. The Properties object that the 애플리케이션 서버 passes
* to this method must contain all of  the configuration information that this 
* service needs to initialize properly.
*
* @param configProperties java.util.Properties
*/
    static final java.lang.String externalConfigURLKey =
       "com.ibm.websphere.runtime.CustomService.externalConfigURLKey";
          
    static String ConfigFileName="";

    public void initialize(java.util.Properties configProperties) throws Exception
    {
        if (configProperties.getProperty(externalConfigURLKey) != null)
        {
           ConfigFileName = configProperties.getProperty(externalConfigURLKey);
        }

       // Implement rest of initialize method
    }
/**
* The shutdown method is called by the 애플리케이션 서버 runtime when the
* server begins its shutdown processing.
*
    public void shutdown() throws Exception
    {
        // Implement shutdown method
    }

다음에 수행할 작업

[AIX Solaris HP-UX Linux Windows][IBM i]애플리케이션 서버 또는 노드 에이전트를 검사하여 사용자 정의 서비스의 initialize 및 shutdown 메소드가 실행하려는 방법으로 실행했는지 확인하십시오.

[z/OS]애플리케이션 서버를 검사하여 사용자 정의 서비스의 initialize 및 shutdown 메소드가 실행하려는 방법으로 실행했는지 확인하십시오.


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



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=trun_customservice
파일 이름:trun_customservice.html