2011-09-25 2 views
1

프로젝트의 소프트웨어 아키텍처와 관련하여 숙련 된 개발자의 조언이 필요합니다.서블릿 대 콩

고객이 다음을 수행 할 수 있도록 API에 REST 인터페이스를 제공해야합니다. 1) 자체 인증 (계정 생성 처리도 포함) 2) get/add/update/delete() 요청 발행 리소스 (예 : 새로운 서적 설명 [제목 + 작성자 ..] 저장)

WSDL 또는 기타 복잡한 작업을 수행 할 필요는 없습니다. 가능한 경우 WSDL을 피하는 것을 선호한다고 말하고 싶습니다. 확실히 사용하지 않을 것이기 때문입니다. 웹 사이트에는 사용하지 않으며 API 직접 사용 만합니다.

많은 것을 읽었지만 다음 사항에 대한 명확한 상태가 필요합니다. - 서블릿 또는 빈을 사용 하시겠습니까? - 인증을 처리하려면 상태 저장을 사용하는 것이 좋습니다. 세션을 처리하는 가장 좋은 방법은 무엇입니까?

내 J2EE 지식이 현재 매우 낮기 때문에 가장 쉬운 방법을 찾고 있습니다.

시간 내 주셔서 감사합니다.

답변

1

클라이언트가 웹 인터페이스를 사용하여 사이트에 접속하는 경우 세션 기반 시스템이 더 좋은 방법입니다. 프로그램에서 사용하는 서비스 API 일 경우 HTTP 인증을 사용하십시오.

서비스 API를 사용하려는 경우 JAX-RS와 같은 RESTy 프레임 워크 중 하나를 살펴 보는 것이 가장 좋습니다. 실제 웹 사이트에서는이 방법을 사용할 수 있지만 일반적으로 그런 식으로 사용되지는 않습니다 (따라서 예제는 실제로 도메인과 일치하지 않습니다).

웹 사이트를 운영하는 경우 Stripes 또는 Struts 2와 같은 액션 프레임 워크 중 하나를 살펴보십시오. 이렇게하면 RESTy URL에 바인딩 할 수 있지만 웹 사이트에도 유용합니다.

이들 중 어느 것이 든 서블릿, 특히 HTTP, 워크 플로, 리디렉션과 전달 간의 차이점 등을 이해하는 것이 좋습니다.이러한 프레임 워크는 기본 Servlet 모델을 활용하기 때문입니다.

원시 서블릿을 사용하면이 모든 작업을 쉽게 수행 할 수 있으며, 프레임 워크를 사용하면 작업이 훨씬 간편 해지고 JAX-RS와 Stripes/Struts 2는 모두 매우 낮은 영향을 미치게됩니다.

+0

서비스 API를 사용할 예정입니다. 그래서 잘 이해한다면 REST 지향 프레임 워크 (서블릿 기반), HTTP 인증 및 필터, HttpSession 객체를 사용하여 상태 저장 서비스를 피할 수 있을까요? 이것은 좋은 소리! – SCO

+0

확실히 JAX-RS를 살펴보십시오. – BalusC

1

한마디로? 양자 모두. 서블릿과 POJO 인터페이스 기반 빈을 원하지만 동일한 일을하지 않아야한다.

REST를 원할 경우 서블릿을 사용하게됩니다. 이들은 Java EE의 HTTP 리스너이며 REST는 HTTP를 기반으로합니다.

그렇다면 인터페이스 기반 POJO를 사용하여 모든 작업을 수행하는 코드를 구현하는 것이 좋습니다. 코드를 쉽게 테스트하고 변경할 수 있습니다.

REST는 여러 배포 중에서 하나입니다. 인터페이스 기반 POJO를 고수하면 빈에 다른 래핑을 사용하여 배포 전략을 간단하게 변경할 수 있습니다.

REST 계층은 인증 및 권한 부여, 바인딩 및 유효성 검사 외에는 아무 작업도 수행하지 않아야합니다. POJO 빈에 맡겨서 일을 끝내자.

서블릿은 URL 재 작성 또는 쿠키로 세션을 처리합니다. 그들이 당신에게주는 것을 활용하십시오.

그러나 REST 서비스는 stateless이어야합니다. 세션 없음, 통화간에 저장된 상태 없음

필터를 사용하여 전화를 걸기 전에 인증을 확인할 수 있습니다. 그런 식으로 교차 절단입니다. HTTP의 측면으로 필터를 생각해보십시오.

+0

이것은 흥미 롭습니다. 비즈니스 로직을 서블릿에 직접 구현했을 것입니다. 레이어 접근 방식을 사용하면 상당히 똑똑해 보입니다. – SCO

+0

그 방법의 두 가지 문제점은 서비스를 테스트하기 위해 서블릿 컨테이너가 필요하다는 것입니다. 웹 계층이 사라지면 어쨌든 서비스를 다시 작성해야합니다. POJO로 유지하는 것이 더 좋으므로 SOAP 또는 REST 또는 EJB 또는 다른 방식으로 제거 할 수 있습니다. 원격 선택을 비즈니스 논리와 분리하십시오. – duffymo

1

자신을 인증 (이 또한 처리 계정 생성을 포함한다)

서블릿이 내장되어 보안 기능뿐만 아니라 여러 라이브러리 (봄 보안, 아파치 시로).

WSDL 또는 기타 복잡한 작업을 수행 할 필요가 없습니다.

WSDL은 SOAP 웹 서비스를 설명하는 데 가장 일반적으로 사용됩니다.

서블릿이나 콩을 사용 하시겠습니까? - 인증을 처리하려면

엔터프라이즈 자바 빈즈를 의미합니까? 그들은 당신을 도울 것이고, 여전히 서블릿이 작동하는 HTTP 요청을 처리 할 무언가가 필요합니다. 하지만 실제 비즈니스 로직을 구현할 무언가를 갖고 싶어 할 것입니다. 서블릿은 오직 게이트웨이이고, 로직을 구현하지 않습니다.

기술적으로 SOAP를 통해 EJB를 노출 할 수 있지만 REST가 필요하거나 JAX-RS (Java EE 스택의 일부)를 사용할 수 있지만 분명히 아래의 서블릿을 사용합니다.

좋은 생각이 원칙적으로

을 상태 것입니다 - REST가 상태이고, 어떤 대화 상태가 없다. 그러나 모든 요청에 ​​대해 인증하는 것은 너무 많은 비용이 듭니다. 그래서 최소한 JSESSIONID를 저장하기 위해 최종 HTTP 세션 (서블릿으로 쉽게 처리됨)에있게됩니다.

+0

SOAP는 없지만 JAX-RS를 자세히 살펴보십시오! – SCO