개요
특정 테이블을 조회하는 페이지 목록 추출하면서 알게된 점 정리
찾는법
.xml
파일 중(ibatis
) A 테이블을 조회하는 쿼리문 id 리스트업(목록 추출)- 해당 쿼리문 id (
ibatis의 id값
) 로 호출하는 java 메서드 리스트업- java ~DAO 파일 체크
- 해당 메서드 호출하는 부분 계속 타고 올라가서 최종
controller
조회- (Eclipse 기준) 메서드명 위에서 우측 마우스클릭 ->
Open Call Hierarchy
선택 - 프로젝트 파일 구조
mapper.xml
->~DAO.java
->~Impl.java
->~Controller.java
- (Eclipse 기준) 메서드명 위에서 우측 마우스클릭 ->
- Controller단에서 매핑되는 jsp(화면) 찾기
알게된 것
ServiceImpl 단 -> 구현은 되어있는데, 호출하는 부분이 없다??
- serviceImpl 단까지 찾아갔는데, 해당 메서드를 호출하는 부분이 없는 것을 발견
- 만들어놓고 사용하지 않는 소스인가? 생각했었는데 그게 아니었다
- API 처럼 req(요청)를 받으면 그에 대해 res(응답)만 해주는 클래스였던 것!
- 즉, 서버처럼 데이터만 return해주고, 따로 화면에 뿌려주지는 않고 있었음
main/resources/spring/context-webservice.xml
- 이 파일을 살펴보면 해당 설정이 정의되어 있는 것을 확인할 수 있다
<jaxws:endpoint id ="AAService" implementor="#AAServiceImpl" address="/AAService"/> <bean id ="AAServiceImpl" class="go.패키지.AAServiceImpl"/>
- 이 파일을 살펴보면 해당 설정이 정의되어 있는 것을 확인할 수 있다
- 이 설정 파일을 해석하면서 알게된 2가지
endpoint
의 개념CXF 웹서비스
개념
1. endpoint의 개념
an endpoint is simply one end of a communication channel
1-1. OAuth 를 예시로 들어 이해
OAuth에는 3개의 엔드포인트가 있다
- Temporary Credential Request URI (Request Token URL)
- 서버에 인증되지 않은 요청 토큰을 얻기 위해 요청을 보낼 URI
- Resource Owner Authorization URI (User Authorization URL)
- 사용자가 Temporary Credential Request URI에서 얻은 토큰을 승인하도록 하는 URI
- Token Request URI (Access Token URL)
- 승인된 요청 토큰을 액세스 토큰으로 교환하기 위해 요청을 보내는 URI, 보호된 자원에 대한 접근을 얻는데 이용할 수 있다
1-2. API를 예시로 들어 이해
API == 프로그램 혹은 시스템 간 통신하는 창구
즉, 응용프로그램에서 사용할 수 있도록, OS나 프로그래밍 언어가 제공하는 기능을 사용/제어할 수 있게 하는 인터페이스
- 자바의 Stream API를 예로 들자면, Stream이라는 기능을 사용하기 위해 제공된 명세를
API
라 할 수 있다- 자바의
Interface
처럼 ! - 해당 API의 기능을 사용하기 위해 API에서 제공하는 메서드를 사용하지만, 그 내부 구현에 대해 알 필요는 없다1-3. 웹 API를 예시로 들어 이해
- 자바의
- 웹 API는 웹 애플리케이션 개발에서 다른 서비스에 요청을 보내고, 응답을 받기 위해 정의된 명세를 일컫는다
- 예를 들어, 우체국의 우편번호 API, 구글과 네이버의 지도 API 등 유용한 API드링 많고, 요즘은 이러한 오픈 API를 적극 가져와 사용하는 추세이다
- 한마디로, API는 서비스 간의 요청과 응답을 위한 명세로 정리할 수 있다
- 그리고, 엔드포인트는 서비스를 사용 가능하도록 하는 서비스에서 제공하는 커뮤니케이션 채널의 한 쪽 끝.
- 즉, 요청을 받아 응답을 제공하는 서비스를 사용할 수 있는 지점을 의미한다!
- 그래서 어느 애플리케이션에서 최단거리를 구하는 서비스를 요청하기 위해 보내는 URI가 바로 엔드포인트가 된다
- 이 웹서비스는 유효한 형태로 엔드포인트에 요청이 전달되었을 경우, 사용자가 알 필요 없는 서비스 내부 로직을 실행하고 응답을 반환한다
- 그래서 어느 애플리케이션에서 최단거리를 구하는 서비스를 요청하기 위해 보내는 URI가 바로 엔드포인트가 된다
2. CXF 웹서비스의 개념
웹 서비스
는분리되어 있는 서비스를 처리하는 부분(Service Provider)
과서비스를 요청하고 처리 결과를 표현하는 부분(Service Consumer/Presenter)
이 Web을 통해 통신하여 실행되는, 시스템의 컴포넌트 묶음을 말한다- 이는 단순히 MVC모델처럼 Model과 View, Controller를 분리한 것이 아닌,
Back-end Side
와Front-end Side
를 컴포넌트 뿐 아니라 개발환경까지 물리적으로 분리된 상태에서 실행되는 시스템 이다
2-1. 웹서비스의 구조
- WSDL(Web Services Description Language)
- 웹서비스를 제공하는 Server와 사용하는 Client를 연결해주는 문서
- 시스템의 요구사항대로 구현된 서비스들의 명세를 WSDL에 담아 명시해두면, 서비스를 요청하는 쪽에서 이 문서를 보고 해당 서버의 서비스에는 어떤 것들이 있고, 각 서비스들의 파라미터와 리턴 객체는 어떤 타입으로 주고 받는지 확인할 수 있다
- 즉, 서비스를 어떤 형태로 요청하고 응답받아 처리할 것인지를 WSDL을 통해 결정할 수 있다
2-2. 웹 서비스 시스템 구성
- 웹서비스의 구현에 있어서, 2-1 그림처럼 논리적인 구조 뿐 아니라, 어떤 기술을 사용할지에 대한 고민도 필요
- 웹 서비스 프레임워크와 OXM을 어떻게 결정하느냐에 따라 성능과 구현 효율이 현저히 달라질 수 있기 때문
OXM
이란? : XML과 자바 오브젝트를 매핑해서 상호변환해주는 기술 (Object-XML Mapping)
- 웹 서비스 프레임워크와 OXM을 어떻게 결정하느냐에 따라 성능과 구현 효율이 현저히 달라질 수 있기 때문
2-4. OXM의 원리
웹서비스는 Consumer
가 WSDL에서 검색한 Service에 요청XML
보내면, Provider
가 이 xml문서를 객체로 변환해서 처리한 후, 다시 Client
에게 응답XML
을 보내는 과정을 가짐
때문에, 서비스 요청을 표준문서인 XML로 Binding(Marshaling 혹은 Serialize)
하고, 그 문서를 다시 시스템에서 처리 가능한 오브젝트로 Binding(Demarshaling 혹은 Deserialize)
하는 과정이 반드시 필요
이러한 맥락에서 OXM은 웹서비스에서 핵심적인 역할을 담당
OXM
에도 Jibx, Castor, JAXB 등 다양한 종류가 있음JAXB
: JAVA 구조에 가장 적합하고 웹서비스 플랫폼인 CXF에 적용하기 편리
참고사이트
'실무기반 공부' 카테고리의 다른 글
페이지이동 구조파악 (1) | 2023.12.21 |
---|