2009-11-30 7 views
6

저는 최근에 Spring에 대해 더 많이 읽고 배우고 있으며 Tomcat과 Hibernate와 같은 다른 오픈 소스 도구와 Spring을 어떻게 사용하는지에 대해 알고 있습니다. 저는 Spring MVC가 WebLogic과 많은 맞춤형 Java EE 코드를 사용하는 제가하는 프로젝트에서 가능한 대체 기술이 될 수 있는지 평가하고 있습니다. 문제는 항상 우리의 솔루션이 과도하게 설계되어 있고 그것이 필요한 것보다 더 복잡한 것으로 의심했습니다. 놀랍게도 2009 년이지만 우리는 자체적 인 트랜잭션 처리 및 스레드 풀링 클래스를 작성하고 있습니다. 그리고 내가 의미하는 바를 아는 경우 아마존, 이베이 또는 Google과 다르지 않습니다. 따라서 "더 간단합니다"옵션을 조사하고 있습니다.Spring + Tomcat은 언제 강력하지 않습니까?

제 질문은 다음과 같습니다. Java EE 애플리케이션 서버가 필요하다는 결정을 내리는 방법에 대한 의견을 듣고 싶습니다. Java EE 앱에서 크기 /로드/수요를 "측정"하는 방법은 무엇입니까? 동시 사용자 수? 총 일일 거래는? "무거운"앱이 당신이 손을 내밀어 "좋아, Tomcat이 그것을 자르지 않고 JBoss/WebLogic/WebSphere가 필요합니다"라고 말할 때까지 기다려야합니까?

답변

9

본격적인 Java EE 서버를 사용할지 여부는 사용자 또는 트랜잭션 수를 기반으로 결정하지 않아야한다고 생각하지 않습니다. 오히려 기능이 필요한지 여부에 따라 결정되어야합니다.

내 현재 프로젝트에서는 기본 서블릿을 뛰어 넘는 Java EE 기능을 사용하지 않는다는 것을 알았 기 때문에 실제로 JBoss에서 바닐라 Tomcat으로 옮겨 가고 있습니다. 그러나 우리는 봄을 사용하고 있습니다. Spring의 기본 객체 관리, 트랜잭션 처리 및 JDBC 기능 간에는 EJB에 대한 강력한 요구가 나타나지 않습니다. 우리는 현재 Spring의 MVC가 아닌 Struts 2를 사용합니다. 그러나 그것에 대해 좋은 소식을 들었습니다. 어쨌든 스프링은 많은 자바 웹 프레임 워크와 잘 통합된다.

+0

서버로드가 아닌 기능에 대해 걱정해야하는 것 같습니다. 그게 많은 도움이됩니다! 우리의 애플 리케이션은 실제로 Session Beans를 사용하고 있으며, 아마도 J2EE 컨테이너 전체를 사용할 수있는 합당한 이유이며 메시징을 지원할 것입니다. 우리가 실제로 그러한 것들을 필요로하는지의 여부는 다른 날을위한 생각 운동입니다. – pbailey19

1

Google 오픈 소스에는 많은 코드가 있습니다. 이미 작성한 코드를 구현하는 대신 저수준의 것을 직접 작성하는 경우 문제를 너무 자주 생각하는 것입니다.

실제 질문으로 돌아가서, Walmart.com, etrade.com, The Weather Channel 및 quite a few others은 Tomcat을 사용합니다. IBM의 마케팅 및 세일즈맨은 아마도 당신과 다를 것이라고 생각하지만 Tomcat에는 상한선이 없습니다.

EJB를 제외하고 Tomcat이 무엇인지 모르겠습니다. EJB에 대한 팬이 아닙니다.

4

Spring은 JMS 및 JTA와 같은 JavaEE 스펙의 특정 고급 부분을 대체하지 않습니다. 대신, "스프링 방식"과 일관성있게 만들고 일반적으로 사용하기 쉽게 만듭니다.

응용 프로그램에서 JMS 및 JTA 등의 기능을 필요로하는 경우 Spring을 통해 쉽게 사용할 수 있습니다. 그게 문제는 아니야.

+2

활성 MQ와 같은 타사 JMS 공급자를 통해 Tomcat에서 JMS를 계속 사용할 수 있습니다. 그러나 지난 번 (약 2 년 전) 오픈 소스를 통한 Tomcat 지원에 대한 JTA 지원은 허용되지 않았습니다. 2 단계 커밋을 수행해야한다면, 완전한 J2EE 서버가 필요합니다. –

+0

그러나 JTA 기반 트랜잭션 관리자를 통합/지원하려면 Tomcat이 필요합니까? 컨테이너 통합에 신경 쓰지 않고 Spring 애플리케이션에서 Atomikos 나 JBoss TM 같은 것을 사용할 수 없습니까? – SteveD

1

Tomcat이 자바 EE의 이국적인 요소와 별도로 제공하지 않는 것은 세션빈 (일명 EJB)입니다. Session Bean을 사용하면 처리를 효율적으로 분리 할 수 ​​있습니다. 따라서 프런트 엔드 용으로 하나의 상자를, 세션빈 (비즈니스 로직) 용으로 하나를, 데이터베이스 용으로 하나의 상자를 가질 수 있습니다.

당신은 적어도 2 가지 이유로이 작업을 수행 할 것입니다 :

  1. 성능; 모든 것을 처리 할 수있는 하나의 상자가 상자를 너무 많이로드하고 있음을 알게됩니다. 서로 다른 레이어를 여러 개의 레이어로 분리하면 수평 확장이 가능합니다. 세션빈은보다 세분화 된 수준에서로드 밸런스를 수행 할 수도 있습니다. 그 ilk의 Tomcat 및 다른 웹 서비스는 상자 밖으로 클러스터되지 않습니다.
  2. 유연성; 이제는 비즈니스 로직을 자체 환경으로 옮겼으므로 동일한 레이어를 사용했지만 대체로 프런트 엔드가 두꺼운 클라이언트 프런트 엔드였던 대체 프런트 엔드를 개발할 수있었습니다. 아니면 다른 컨텍스트에서 세션 빈을 사용하고 싶을 수도 있습니다.

웹 서비스를 사용하여 해당 중간 계층과 통신하는 경우 바람막이가 될 수도 있습니다.

1

에게 만발한 자바 EE 서버를 사용하는 유일한 이유는 당신이 XA 트랜잭션을 분산해야하는 경우에는 필요하지 않은 경우 XA 트랜잭션을 사용하면 Spring + JPA + Tomcat + Bean Validation + JSTL + EL + JSP + Java Mail을 사용할 수 있습니다.

또한 Java EE 서버는 JMS를 구현할 예정이지만 나머지 VM 서버와 동일한 VM에서 JMS 서버를 실행하는 것은 의미가 없으므로 JMS가 필요하면 별도의 JMS 서버가 있어야합니다.

1

여기에 제공된 모든 답변에 동의하지 않습니다. 당신이 원하는 않습니다

모든 등

되는 질문 EJB, CDI, JTA, 콩 검증, JAX-RS를 포함, 톰캣에 추가 할 수 있습니까? 적합한 버전으로 모든 종속성을 모으고 다른 모든 종속성이 이미이 작업을 수행했을 때 함께 작동하는지 테스트하고 싶습니까?

누구나 Tomcat만을 사용합니다. 모두는 항상 웹 프레임 워크, ioc 컨테이너, orm, 트랜잭션 관리자, 웹 서비스 등을 추가합니다.

TomEE와 같은 경량 Java EE 서버는 이미 모든 것을 포함하고 있으며 이러한 모든 것들이 통합되어있는 완전한 스택 경험을 만듭니다. 훨씬 나아 졌어.

관련 문제