< 이전 | 다음 >

학습 4: OSGi 서비스에 액세스하는 서블릿 작성

이 학습서에서 카운터 서비스에 액세스하고 서비스 결과를 표시하는 서블릿을 포함할 웹 사용 번들을 작성합니다. 서블릿은 JNDI InitialContext를 통해 서비스를 찾아서 OSGi 서비스에 액세스합니다.

OSGi 서비스에 액세스하는 서블릿을 작성하려면 다음을 수행하십시오.
  1. 웹 사용 번들 작성.
  2. 서블릿 작성.
  3. 번들 Manifest에 필수 패키지 추가.
  4. OSGi 서비스를 찾아보기 위한 구현 작성.

웹 사용 번들 작성

서블릿을 포함하는 웹 사용 번들을 작성하려면 다음을 수행하십시오.
  1. 파일 > 새로 작성 > 기타를 클릭하고 OSGi를 펼치십시오.
  2. OSGi 번들 프로젝트를 클릭하고 다음을 클릭하십시오. 새 OSGi 번들 프로젝트가 열립니다.
  3. 프로젝트 이름 필드에서 CounterWebBundle을 입력하십시오.
  4. 대상 런타임 목록에서 다음 서버 중 하나를 선택하십시오.
    • WebSphere Application Server v7.0
    • WebSphere Application Server v8.0
    • WebSphere Application Server v8.5
    • WebSphere Application Server V8.5 Liberty Profile
  5. 구성 섹션에서 웹 지원 추가를 클릭하고 웹 지원 목록에서 웹 2.5를 선택하십시오.
  6. CounterApp가 애플리케이션 프로젝트 필드에 표시되는지 확인하고 완료를 클릭하십시오.

서블릿 작성

카운터 서비스에 액세스하는 서블릿을 작성하려면 다음을 수행하십시오.
  1. 엔터프라이즈 탐색기에서 CounterWebBundle을 마우스 오른쪽 단추로 클릭하고 새로 작성 > 서블릿을 선택하십시오. 서블릿 작성 마법사가 열립니다.
  2. Java 패키지 필드에서 com.ibm.ws.eba.servlet을 입력하십시오.
  3. 클래스 이름 필드에서 CounterServlet을 입력하고 완료를 클릭하십시오. 서블릿이 번들에 작성되고 편집기에서 열립니다.

번들 Manifest에 필수 패키지 추가

번들 Manifest에 필수 패키지를 추가하려면 다음을 수행하십시오.
  1. Manifest: CounterWebBundle을 두 번 클릭하여 이를 편집기에서 여십시오.
  2. 종속 항목 탭으로 전환하십시오.
  3. 가져온 패키지 섹션에서 추가를 클릭하십시오. 패키지 선택사항 대화 상자가 열립니다.
  4. 내보낸 패키지 필드에서 com.ibm.ws.eba.counter를 입력하십시오.
  5. 목록에서 com.ibm.ws.eba.counter를 선택한 후 확인을 클릭하십시오. 가져온 패키지 섹션은 다음 다이어그램과 유사합니다.
    가져온 패키지.
    NoteColonSymbol 대상 런타임 서버가 WebSphere Application Server V8.5 Liberty Profile인 경우, javax.naming 패키지를 가져와야 합니다. javax.naming 패키지를 가져오면 애플리케이션을 실행할 때 ClassNotFoundException 오류를 방지합니다. 다음 단계에서는 javax.naming 패키지를 가져오는 방법에 대해 설명합니다.
    1. 가져온 패키지 섹션에서 추가를 클릭하십시오. 패키지 선택사항 대화 상자가 열립니다.
    2. 내보낸 패키지 필드에서 javax.naming을 입력하십시오.
    3. 목록에서 javax.naming을 선택한 후 확인을 클릭하십시오.
    패키지를 가져오지 않는 경우, WebSphere Application Server with Liberty Profile에서 애플리케이션을 실행할 때 ClassNotFoundException 오류가 발생합니다. 애플리케이션이 사용자 패키지로 제공되는 대신 서버 런타임이 제공할 누락된 클래스를 가진 패키지를 예상하므로 오류가 발생합니다.
  6. 번들 Manifest 파일을 저장하십시오.

OSGi 서비스를 찾아보기 위한 구현 작성

다음 단계에서는 doGet() 메소드에 대한 구현 작성 방법에 대해 설명합니다. 이는 InitialContext를 사용하여 OSGi 서빙을 검색합니다.
  1. 엔터프라이즈 탐색기에서 CounterServlet.java를 두 번 클릭하여 이를 편집기에서 여십시오.
  2. doGet() 메소드를 찾고 다음 구현을 추가하십시오.
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		Counter counter;
    		try {
    			InitialContext ic = new InitialContext();
    			counter = (Counter) ic.lookup("osgi:service/"+Counter.class.getName());
    			response.getOutputStream().println("counter="+counter.getCount());
    		}
    		catch (NamingException e) {
    			e.printStackTrace(System.out);
    		}
    	}
  3. 기본 메뉴에서 소스 > 가져오기 구성을 클릭하십시오. 가져오기 구성 대화 상자가 열립니다.
  4. com.ibm.ws.eba.counter.Counter를 선택한 후 완료를 클릭하십시오.
  5. CounterServlet.java를 저장하십시오.
서블릿 코드는 다음 코드와 유사합니다.
package com.ibm.ws.eba.servlet;

import java.io.IOException;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.ibm.ws.eba.counter.Counter;

/**
 * Servlet implementation class CounterServlet
 */
public class CounterServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

    /**
     * Default constructor.
     */
    public CounterServlet() {
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Counter counter;
		try {
			InitialContext ic = new InitialContext();
			counter = (Counter) ic.lookup("osgi:service/"+Counter.class.getName());
			response.getOutputStream().println("counter="+counter.getCount());
		}
		catch (NamingException e) {
			e.printStackTrace(System.out);
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
	}

}

학습 체크포인트

JNDI InitialContext를 통해 서비스를 검색하여 OSGi 서비스에 액세스하는 서블릿을 작성했습니다.

이 학습에서 다음 주제에 대해 학습했습니다.
  • 웹 사용 OSGi 번들 작성 방법.
  • 서블릿 작성 방법.
  • 가져온 패키지를 사용하여 번들 종속 항목을 가져오는 방법.
  • InitialContext를 사용하여 OSGi 서비스를 검색하는 방법.
< 이전 | 다음 >
주제 유형을 표시하는 아이콘 학습서 학습 주제
Information Center의 이용 약관 | 피드백

시간소인 아이콘 마지막 업데이트 날짜: 2014-05-22

파일 이름: counter_lesson4.html