애플리케이션에서 Liberty 프로파일 서버 임베드

Liberty 프로파일이 제공하는 SPI(System Programming Interface)를 사용하여 애플리케이션에서 Liberty 프로파일 서버를 구성, 제어 및 모니터할 수 있습니다.

이 태스크 정보

Liberty 프로파일은 Liberty 프로파일 서버를 시작하거나 중지하기 위해 다음 SPI를 제공합니다.
  • com.ibm.wsspi.kernel.embeddable.Server
  • com.ibm.wsspi.kernel.embeddable.ServerBuilder
Future 오브젝트를 사용하여 시작 또는 중지 오퍼레이션의 결과를 저장하십시오. 임베디드 오퍼레이션에서 사용되는 리턴 코드는 server 명령에서 사용되는 리턴 코드와 동일합니다. 리턴 코드, 서버 스크립트에서 사용되는 JVM 옵션 및 서버 스크립트에서 사용되는 프로세스 환경에 대한 자세한 정보는 server 명령 옵션의 내용을 참조하십시오.

또한 com.ibm.wsspi.kernel.embeddable.ServerEventListener 인터페이스를 구현하는 사용자 고유의 클래스를 작성하여 서버가 시작 중이거나 시작되었거나 중지된 경우 비동기 알림을 수신할 수 있습니다.

참고: 사용자의 애플리케이션 내에 임베디드 서버 인스턴스를 작성하려면 다음 단계를 수행해야 합니다.
  • 클래스 경로에 ws-server.jar 파일을 포함시키십시오. ws-server.jar 파일은 Liberty 프로파일 설치의 ${wlp.install.dir}/bin/tools 디렉토리에 있습니다.
  • 대상 서버의 이름을 지정하십시오. 대상 서버가 존재해야 합니다.
  • 선택사항: -javaagent JVM 옵션을 사용하여 ws-javaagent.jar 파일을 구성하십시오. ws-javaagent.jar 파일은 Liberty 프로파일 설치의 ${wlp.install.dir}/bin/tools 디렉토리에 있습니다. ws-javaagent.jar 파일을 구성하도록 조언하지만, 이 기능이 필요한 서버 기능(예: 모니터링 또는 추적)을 사용하지 않는 경우에는 필수가 아닙니다. 일반적으로는 사용하지 않더라도 IBM® 지원 센터에 문의하려면 추적을 제공해야 하므로 ws-javaagent.jar 파일과 함께 서버를 시작해야 합니다.
참고: 임베디드 환경에서:
  • 환경 변수는 확인되지 않고 jvm.optionsserver.env 파일이 읽혀지지 않습니다.
  • JVM과 환경의 관리는 호출자가 관리하는 것으로 가정합니다.

프로시저

  1. SPI를 호출자 클래스로 가져오고 Liberty 프로파일 서버 작동에 필요한 인수를 정의하십시오.
    import com.ibm.wsspi.kernel.embeddable.Server;
    import com.ibm.wsspi.kernel.embeddable.ServerBuilder;
    public class MyEmbeddedServer {
        serverName="defaultServer";
        userDir = new File("usr");
        	File outputDir = new File("usr/servers/");	
        ...
    }
    여기서,
    • serverName은 필수이며, 이전에 작성한 서버의 이름과 일치해야 합니다.
    • userDir은 선택사항이며 사용자 디렉토리의 경로를 설정하는 데 사용됩니다. 기본적으로, 사용자 디렉토리는 ${wlp.user.dir}입니다.
    • outputDir은 선택사항이며 출력 디렉토리의 경로를 설정하는 데 사용됩니다. 기본적으로, 출력 디렉토리는 ${wlp.user.dir}/servers입니다.
  2. ServerBuilder 클래스를 사용하여 서버를 초기화하십시오.
        ServerBuilder sb = new ServerBuilder();
        Server libertyServer = sb.setName(serverName)
                                 .setUserDir(userDir)
                                 .setOutputDir(outputDir)
                                 .build();
  3. Server.start() 메소드를 호출하여 서버를 시작하십시오. 이후에 get()을 호출하여 시작 조작이 완료될 때까지 차단하십시오. 다음 중 하나를 사용하여 서버가 성공적으로 시작되었는지 여부를 판별하십시오.
    • 리턴된 결과 코드 검사
    • successful() 메소드 사용
    • 서버가 시작되면 server.isRunning() 메소드는 true를 리턴합니다.
        Future<Result> startReturnCode = libertyServer.start();    Result result = startReturnCode.get(); // block until operation complete, if necessary
        System.out.println("Start returned: success=" + result.successful() + ", rc=" + result.getReturnCode() + ", ex=" + result.getException());
  4. Server.stop() 메소드를 호출하여 서버를 중지하십시오. 이후에 get()을 호출하여 중지 조작이 완료될 때까지 차단하십시오. 다음 중 하나를 사용하여 서버가 성공적으로 중지되었는지 여부를 판별하십시오.
    • 리턴된 결과 코드 검사
    • successful() 메소드 사용
    • 서버가 중지되면 server.isRunning() 메소드는 false를 리턴합니다.
        		Future<Result> stopReturnCode = libertyServer.stop();
        Result result = stopReturnCode.get(); // block until operation complete, if necessary
        System.out.println("Stop returned: success=" + result.successful() + ", rc=" + result.getReturnCode() + ", ex=" + result.getException());
  5. ServerEventListener 인터페이스를 구현하십시오. ServerEventListener 인터페이스를 구현하면 서버가 시작되거나 중지될 때 알림을 받을 수 있습니다.
    // update the class declaration to indicate that it implements ServerEventListener
    public class MyEmbeddedServer implements ServerEventListener {
        ...
        MyEmbeddedServer() throws ServerException {
            // set the listener via the server builder
            ServerBuilder sb = new ServerBuilder();
            Server libertyServer = sb.setName(serverName)
                                     .setServerEventListener(this)
                                     .build();
        }
    
        ...
        @Override
        	public void serverEvent(ServerEvent event) {
            // provide an implementation of the serverEvent method
            System.out.println("serverEvent: " + event);
        }
    }

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

Information Center 이용 약관 | 피드백


시간소인 아이콘 마지막 업데이트 날짜: Wednesday, 2 September 2015
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=twlp_extend_embed
파일 이름: twlp_extend_embed.html