2016-10-24 6 views
1

EJB를 사용하여 인터셉터를 사용하는 것이 좋은지 아닌지 알고 싶습니다.EJB를 인터셉터에만 사용하는 경우

@TransactionAttribute(NEVER)을 사용하여 트랜잭션 관리 기능을 해제 했으므로 필요하지 않은 트랜잭션 관리 기능이 없습니다.

이것이 스프링에서 가능하다는 것을 알고 있습니다. 그러나 나는 여전히 내 생각이 좋은지 알고 싶다.

이것이 잘못된 생각이라면 누구든지 JEE 사양의 일부인 API를 사용하여이 작업을 수행하는 방법을 알려주십시오. JEE API를 사용하여이 작업을 수행 할 수 없다면 Spring을 사용해도 상관 없습니다.

사실 애플리케이션에 로깅 코드가 너무 많아서 요격기가 필요합니다. 요청이 올 때마다 나는 테이블에 레코드를 유지해야하며 거기에는 다른 것들도 있습니다.

P.

저는 EJB가 처음이에요. EJB를 사용하면 트랜잭션 관리 및 인터셉터와 같은 기능을 사용할 수 있습니다.

서비스가 REST 및 SOAP 웹 서비스로 노출되는 애플리케이션이 있습니다. 원격 EJB를 사용하여 원격 서비스로 서비스를 제공 할 계획입니다.

각 서비스에 기록 된 로깅 코드가 있습니다. 로깅 코드는 기본적으로 메서드가 반환되기 전에 테이블에 세부 정보를 기록합니다. 또한 우리는 3pp 웹 서비스를 호출하는 일부 서비스를 제공합니다. 우리는 이러한 세부 사항을 다른 테이블에 기록 할 것입니다. 로깅 코드는 각각의 모든 서비스 메소드에 작성됩니다.

그래서 나는 인터셉터를 도입하고 적절한 인터셉터에 로깅 코드를 옮기는 아이디어를 생각해 냈습니다. 처음에는 두 가지 방법으로 인터셉터를 도입했습니다. 코드가 제대로 작동하고 있으며 이제는 이러한 서비스를 사용하기 위해 모든 서비스를 다시 작성하고 싶습니다.

이제 EJB를 메서드를 가로 채기 위해서만 사용하는 것이 좋은 생각입니다. 인터셉터가 아닌 다른 EJB 기능을 사용하고 싶지 않습니다. 따라서 @TransactionAttribute(NEVER)으로 거래 관리를 사용 중지했습니다. 내 클래스는

@Stateless 
@TransactionAttribute(TransactionAttributeType.NEVER) 
public class StudentServiceBean { 

    @ReportingInterceptor 
    public Student getStudent(String id) { 
    } 
} 

@Stateless 
@TransactionAttribute(TransactionAttributeType.NEVER) 
public class StudentBackendBean { 

    @BackendInterceptor 
    public Student getStudent(String id) { 
    } 
} 

아래는

  1. 내가 트랜잭션 관리의 터닝 옆에 고려해야 할 다른 어떤 일이 있습니까 내 질문입니다 아래 같이 보일 것인가?
  2. EJB를 사용하여 인터셉터를 사용하는 것이 좋은가요?
  3. Google 애플리케이션에 개의 서비스가 100 개 포함되어 있기 때문에 애플리케이션 규모는 어떻게됩니까? (확장 성은 사용 가능한 리소스에 따라 을 기반으로합니다.)

우리는 우리의 서비스를 원격 ejbs로 공개 할 예정이므로 필터를 사용할 수 없습니다. 필터는 원격 ejb 호출을 인터셉트 할 수 없기 때문에 필자는 필터를 사용하고 싶지 않습니다.

+0

누구나 여기 조명을 비출 수 있습니까? –

+0

누군가가 빛을 비출 수 있습니까? –

+0

잘 이해한다면 EJB를 사용하여 로그 레이어를 만들고 싶습니다. AFAIK, 인터셉터는 EJB (예 : 세션 빈 (Session Beans) 및 메시지 구동 콩 (Message-Driven Beans))를 인터셉트 할 수 있으므로 "인터셉터 만 사용하는 ejb"에 대해 이해하지 못합니다. 더 자세한 정보를 제공 할 수 있습니까? – Jaumzera

답변

1

기본적으로 클래스를 @Stateless으로 주석 처리하면 이미 EJB가 만들어졌습니다. 따라서이 경우 인터셉터를 사용하여 언급 한 작업을 수행하는 데 문제가 발생하지 않습니다. 진실을 말하면서 인터셉터는 이러한 종류의 일을하도록 정확하게 만들어졌습니다.귀하의 질문에 대해

:

내가 트랜잭션 관리의 터닝 옆에 고려해야 할 다른 어떤 일이 있습니까?

번호 서비스로 @Stateless 빈을 계속 사용하는 경우. @TransactionAttribute(TransactionAttributeType.NEVER)은 콩이 TX를 지원하지 않는다고 말하면서 트랜잭션을 비활성화하지 않는다는 것을 명심하십시오. 하지만 귀하의 경우에는 괜찮습니다.

인터셉터를 이용하기 위해서만 EJB를 사용하는 것이 좋은 생각입니까?

글쎄,주의하십시오. 자바 EE 플랫폼의 장점을 사용하지 않는다면, 약간의 설정만으로 충분할 것이라고 생각합니다. 이것에보십시오 : http://www.vogella.com/tutorials/REST/article.html.

우리의 응용 프로그램에는 100s의 서비스가 포함되어 있으므로 응용 프로그램의 규모는 어떻게됩니까? (스케일링은 사용 가능한 리소스를 기반으로한다는 것을 알고 있습니다.)

엔터프라이즈 응용 프로그램에서 100 개가 넘는 서비스를 사용하는 데는 아무런 문제가 없습니다. 하지만 별도로 배포 된 일부 미성년자 응용 프로그램에서는이를 고려해야합니다.