logging in or signing up Spring 2.5 i JavaEnterprise Edition lukasz.budnik Download Post to : URL : Related Presentations : Share Add to Flag Embed Email Send to Blogs and Networks Add to Channel Uploaded from authorPOINT lite Insert YouTube videos in PowerPont slides with aS Desktop Copy embed code: (To copy code, click on the text box) Embed: URL: Thumbnail: WordPress Embed Customize Embed The presentation is successfully added In Your Favorites. Views: 382 Category: Science & Tech.. License: All Rights Reserved Like it (0) Dislike it (0) Added: December 04, 2008 This Presentation is Public Favorites: 0 Presentation Description No description available. Comments Posting comment... Premium member Presentation Transcript Spring 2.5 z punktu widzenia programisty JavaEnterprise Edition : Spring 2.5 z punktu widzenia programisty JavaEnterprise Edition Łukasz Budnik 20/11/2008 Agenda : Agenda Przegląd nowości Spring 2.5 Budowa przykładowej aplikacji JEE 5.0 2.1. Wykorzystanie JSR 250 do definiowania metod typu callback oraz wstrzykiwania zasobów 2.2. Wykorzystanie Java Persistance API jako warstwy danych JEE 5.0 2.3. Wykorzystanie JSR 220 do definiowania komponentów JEE 5.0 Podsumowanie 1. Przegląd nowości w Spring 2.5 : 1. Przegląd nowości w Spring 2.5 Nowe mechanizmy Spring 2.5 : Nowe mechanizmy Spring 2.5 @Autowire, @Qualifier AspectJ Load time weaving Nowe namespace’y (np. context, jms) Spring TestContext Framework (np. wstrzykiwanie zależności do testów JUnit) Pełne wsparcie JDK 1.6 : Pełne wsparcie JDK 1.6 JDBC 4.0 JMX MXBeans ServiceLoader API JTA 1.1 JAX-WS 2.0 Wsparcie JEE 5.0 : Wsparcie JEE 5.0 Servlet 2.5 JSP 2.1 JSF 1.2 JCA 1.5 częściowa implementacja JSR 250Common Annotations for the Java™ Platform częściowa implementacja JSR 220Enterprise JavaBeans™ 2. Budowa przykładowej aplikacji JEE : 2. Budowa przykładowej aplikacji JEE 2.1. Wykorzystanie JSR 250 : 2.1. Wykorzystanie JSR 250 JSR 250 : JSR 250 <context:component-scan base-package="org.xh.studies.spring" /> @PostConstructprivate void init() { log.info("ctx injected? ==> " + (ctx != null));} @PreDestroyprivate void clean() { log.info("Some clean up here...");} @Resource(name = "helperServiceNewImpl")private HelperService helperService; JSR 250 & JNDI : JSR 250 & JNDI <bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"> <property name="alwaysUseJndiLookup" value="true" /></bean> @Resource(name = "jdbc/MyDataSource")private DataSource dataSource; 2.2. Wykorzystanie JPA jako warstwy danych : 2.2. Wykorzystanie JPA jako warstwy danych Wsparcie dla JPA : Wsparcie dla JPA @PersistenceContext/@PersistenceUnit - już od Spring 2.0 @Transactional – Spring specific @TransactionAttribute - EJB 3.0, dostępne od Spring 2.5 JPA – AppContext.xml : JPA – AppContext.xml <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean" /><bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory" /></bean> <context:component-scan base-package="org.xh.studies.spring.jpa" /><tx:annotation-driven /> JPA - Java : JPA - Java @Repositorypublic class UserJPADAOImpl { Log log = LogFactory.getLog(UserJPADAOImpl.class); @PersistenceContext private EntityManager em; @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) public void create(User user) { em.persist(user); }} 2.3. Wykorzystanie JSR 220 do definiowania komponentów : 2.3. Wykorzystanie JSR 220 do definiowania komponentów JSR 220 wspierane anotacje : JSR 220 wspierane anotacje @Stateless/@Stateful @TransactionAttribute @EJB @Stateless/@Stateful : @Stateless/@Stateful <context:component-scan base-package="org.xh.studies.spring.jpa"> <context:include-filter type="annotation" expression="javax.ejb.Stateless"/></context:component-scan> @Statelesspublic class UserJPADAOImpl implements UserJPADAO { /* kod tutaj */} @EJB : @EJB @Stateless public class XImpl implements X { Log log = LogFactory.getLog(XImpl.class); @EJB private UserJPADAO userJPADAO; @PostConstruct private void init() { log.info("Spring EJB userJPADAO injected successfuly? ==> " + (userJPADAO != null)); } } 3. Podsumowanie : 3. Podsumowanie Wady : Wady Programista nie może używać Springowych anotacji (po przeniesieniu aplikacji na serwer aplikacji nie będą one domyślnie interpretowane) Programista musi pamiętać, że niektóre anotacje działają inaczej na serwerze aplikacji a inaczej gdy aplikacja uruchamiana jest w Springowym kontenetrze (przykład @Resource) Zalety : Zalety Aplikacja napisana z użyciem JSR 250, JPA, JSR 220 może być uruchamiana zarówno na serwerze aplikacji jak i zwykła aplikacja Springowa typu standalone Stworzylismy aplikację w JEE 5.0, wszystko działa poprawnie, ale czujemy, że trochę przesadziliśmy z infrastrukturą i technologią dla tak małej aplikacji (np. zasobożerny serwer aplikacji).Wystarczy jedynie skonfigurować poprawnie Springa i przenieść aplikację na zwykłego TomcataDo ciągnięcia przyczepki wystarczy osobowy samochód, nie potrzebujemy do niej 6 osiowej ciężarówki. W drugą stronę, napisaliśmy aplikację Springową dla której Tomcat to już za mało, potrzebujemy kontenera JEE w oparciu o który możemy przekształcić istniejącą aplikację w prawdziwy rozproszony system Więcej o Spring 2.5 i JEE : Więcej o Spring 2.5 i JEE http://jee-bpel-soa.blogspot.com/2008/11/spring-for-jee-developers-jsr-250.html http://jee-bpel-soa.blogspot.com/2008/11/spring-for-jee-developers-jpa.html http://jee-bpel-soa.blogspot.com/2008/11/spring-for-jee-developers-stateless-ejb.html http://jee-bpel-soa.blogspot.com/ Pytania? : Pytania? Dzięx! : Dzięx! You do not have the permission to view this presentation. In order to view it, please contact the author of the presentation.
Spring 2.5 i JavaEnterprise Edition lukasz.budnik Download Post to : URL : Related Presentations : Share Add to Flag Embed Email Send to Blogs and Networks Add to Channel Uploaded from authorPOINT lite Insert YouTube videos in PowerPont slides with aS Desktop Copy embed code: (To copy code, click on the text box) Embed: URL: Thumbnail: WordPress Embed Customize Embed The presentation is successfully added In Your Favorites. Views: 382 Category: Science & Tech.. License: All Rights Reserved Like it (0) Dislike it (0) Added: December 04, 2008 This Presentation is Public Favorites: 0 Presentation Description No description available. Comments Posting comment... Premium member Presentation Transcript Spring 2.5 z punktu widzenia programisty JavaEnterprise Edition : Spring 2.5 z punktu widzenia programisty JavaEnterprise Edition Łukasz Budnik 20/11/2008 Agenda : Agenda Przegląd nowości Spring 2.5 Budowa przykładowej aplikacji JEE 5.0 2.1. Wykorzystanie JSR 250 do definiowania metod typu callback oraz wstrzykiwania zasobów 2.2. Wykorzystanie Java Persistance API jako warstwy danych JEE 5.0 2.3. Wykorzystanie JSR 220 do definiowania komponentów JEE 5.0 Podsumowanie 1. Przegląd nowości w Spring 2.5 : 1. Przegląd nowości w Spring 2.5 Nowe mechanizmy Spring 2.5 : Nowe mechanizmy Spring 2.5 @Autowire, @Qualifier AspectJ Load time weaving Nowe namespace’y (np. context, jms) Spring TestContext Framework (np. wstrzykiwanie zależności do testów JUnit) Pełne wsparcie JDK 1.6 : Pełne wsparcie JDK 1.6 JDBC 4.0 JMX MXBeans ServiceLoader API JTA 1.1 JAX-WS 2.0 Wsparcie JEE 5.0 : Wsparcie JEE 5.0 Servlet 2.5 JSP 2.1 JSF 1.2 JCA 1.5 częściowa implementacja JSR 250Common Annotations for the Java™ Platform częściowa implementacja JSR 220Enterprise JavaBeans™ 2. Budowa przykładowej aplikacji JEE : 2. Budowa przykładowej aplikacji JEE 2.1. Wykorzystanie JSR 250 : 2.1. Wykorzystanie JSR 250 JSR 250 : JSR 250 <context:component-scan base-package="org.xh.studies.spring" /> @PostConstructprivate void init() { log.info("ctx injected? ==> " + (ctx != null));} @PreDestroyprivate void clean() { log.info("Some clean up here...");} @Resource(name = "helperServiceNewImpl")private HelperService helperService; JSR 250 & JNDI : JSR 250 & JNDI <bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"> <property name="alwaysUseJndiLookup" value="true" /></bean> @Resource(name = "jdbc/MyDataSource")private DataSource dataSource; 2.2. Wykorzystanie JPA jako warstwy danych : 2.2. Wykorzystanie JPA jako warstwy danych Wsparcie dla JPA : Wsparcie dla JPA @PersistenceContext/@PersistenceUnit - już od Spring 2.0 @Transactional – Spring specific @TransactionAttribute - EJB 3.0, dostępne od Spring 2.5 JPA – AppContext.xml : JPA – AppContext.xml <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean" /><bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory" /></bean> <context:component-scan base-package="org.xh.studies.spring.jpa" /><tx:annotation-driven /> JPA - Java : JPA - Java @Repositorypublic class UserJPADAOImpl { Log log = LogFactory.getLog(UserJPADAOImpl.class); @PersistenceContext private EntityManager em; @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) public void create(User user) { em.persist(user); }} 2.3. Wykorzystanie JSR 220 do definiowania komponentów : 2.3. Wykorzystanie JSR 220 do definiowania komponentów JSR 220 wspierane anotacje : JSR 220 wspierane anotacje @Stateless/@Stateful @TransactionAttribute @EJB @Stateless/@Stateful : @Stateless/@Stateful <context:component-scan base-package="org.xh.studies.spring.jpa"> <context:include-filter type="annotation" expression="javax.ejb.Stateless"/></context:component-scan> @Statelesspublic class UserJPADAOImpl implements UserJPADAO { /* kod tutaj */} @EJB : @EJB @Stateless public class XImpl implements X { Log log = LogFactory.getLog(XImpl.class); @EJB private UserJPADAO userJPADAO; @PostConstruct private void init() { log.info("Spring EJB userJPADAO injected successfuly? ==> " + (userJPADAO != null)); } } 3. Podsumowanie : 3. Podsumowanie Wady : Wady Programista nie może używać Springowych anotacji (po przeniesieniu aplikacji na serwer aplikacji nie będą one domyślnie interpretowane) Programista musi pamiętać, że niektóre anotacje działają inaczej na serwerze aplikacji a inaczej gdy aplikacja uruchamiana jest w Springowym kontenetrze (przykład @Resource) Zalety : Zalety Aplikacja napisana z użyciem JSR 250, JPA, JSR 220 może być uruchamiana zarówno na serwerze aplikacji jak i zwykła aplikacja Springowa typu standalone Stworzylismy aplikację w JEE 5.0, wszystko działa poprawnie, ale czujemy, że trochę przesadziliśmy z infrastrukturą i technologią dla tak małej aplikacji (np. zasobożerny serwer aplikacji).Wystarczy jedynie skonfigurować poprawnie Springa i przenieść aplikację na zwykłego TomcataDo ciągnięcia przyczepki wystarczy osobowy samochód, nie potrzebujemy do niej 6 osiowej ciężarówki. W drugą stronę, napisaliśmy aplikację Springową dla której Tomcat to już za mało, potrzebujemy kontenera JEE w oparciu o który możemy przekształcić istniejącą aplikację w prawdziwy rozproszony system Więcej o Spring 2.5 i JEE : Więcej o Spring 2.5 i JEE http://jee-bpel-soa.blogspot.com/2008/11/spring-for-jee-developers-jsr-250.html http://jee-bpel-soa.blogspot.com/2008/11/spring-for-jee-developers-jpa.html http://jee-bpel-soa.blogspot.com/2008/11/spring-for-jee-developers-stateless-ejb.html http://jee-bpel-soa.blogspot.com/ Pytania? : Pytania? Dzięx! : Dzięx!