Pokazywanie postów oznaczonych etykietą jsf. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą jsf. Pokaż wszystkie posty

niedziela, stycznia 31

'Śmierć' przeglądarek

Google właśnie ogłosiło politykę wparcia przeglądarek dla swoich produktów.

Od dnia 1 marca google będzie wspierać tylko przeglądarki w wersjach:

  • Microsoft Internet Explorer 7.0+,
  • Mozilla Firefox 3.0+,
  • Google Chrome 4.0+,
  • Safari 3.0+.


Informacja nie była by ważna gdyby nie pozycja googla na rynku. Google wyznacza trendy dlatego też za nim pójdą inne firmy i już niedługo na starszych przeglądarkach nie będzie można korzystać z takich technologi jak:


ps. Jestem pewien, że nie wymieniłem wszystkich technologii jakie mogą przestać działać, jeżeli jakaś nowa technologia Czytelniku przychodzi Ci na myśl, proszę umieść to w komentarzu.

poniedziałek, grudnia 28

Java EE 6 'New' or 'Re-Implemented' Features

W najnowsze wersji JavaEE Sun oferuje kilka nowych (nowych oczywiście w Sun) funkcji 'dependency injection', bean validation (JSR 303) w EJB, Servlet 3.0 (JSR 315), JSF i JSP. Post będzie zawierał przegląd funkcji w najnowszych wersjach. Mój tekst sam jest spóźniony o jakieś 3 tygodnie (od premiery JavaEE 6), ale i tak jest to nic w porównaniu ze spóźnianiem chłopaków słońca, o czym będzie można się przekonać w dalszej części postu.


Java EE w wersji 6 wprowadza pojęcie profili(Technology Stack) konfiguracji platformy JavaEE. Profil zawiera pewne technologie platformy JavaEE, oraz technologie pomocne (takie które przeszły proces Java Community Process (JCP)) nie będące częścią platformy JavaEE. Najnowsze wydanie zawiera pierwszy profil WebProfil, jest to lżejsza wersja JavaEE 6 przeznaczona do produkcji aplikacji webowych, zawiera tylko niezbędne technologie.


Oczywiście na stronach Sun'a można przeczytać o wielu innych dodatkowych feater'ach jakie zawiera nowa wersja JavaEE, postaram się wymienić klika z nich, dodano:

adnotacje(np. @WebFilter, @ WebServlet, adnotacje do wstrzykiwania zależności),

asynchroniczne przetwarzanie (servlet nie musi oczekiwać na odpowiedź z zasobu zewnętrznego, kontynuuje prace mimo braku odpowiedzi z zasobu),

JSF 2.0( JSR 314) wprowadza uproszczenia dla autoryzacji poprzez Facelets, wprowadzono Templating, and Composite Components, do JSF zostało wbudowane wsparcie dla Ajax, oraz adnotacje, zawiera JSP 2.2;

wstrzykiwanie zależności, uproszczono używanie EJB, teraz można w prosty sposób zastąpić managed beans JSF'a, bean'em EJB;

walidację danych(Bean Validation specification (JSR 303)), pozwala to na zastosowanie tych samych walidacji przez wszystkie warstwy aplikacji;

po stroenie serwera dodano lub zaktualizowano: EJB 3.1(JSR 318)(między innymi: @Singleton, @ Asynchronous), Java API for RESTful Web Services (JAX-RS) (JSR 311), JPA2.0 (JSR 317) (nowa wersja JPQL, dodanie kryteria API)


Ale nie można tylko ganić za to spóźnienie Sun'a, dzięki ich 'opieszałości' zyskujemy bardzo stabilne, dopracowane api. Każda funkcjonalność jaką ponownie implementują była już gdzieś używana, dlatego też ich rozwiązania bardzo często są wolne od wad poprzedników. Spora rzesza z nas kocha tą stabilizacje i zawsze składania się ku ich rozwiązaniom.

ps. Inaczej było z wprowadzeniem JavaFx, pojawiała się fajna technologia, ale Sun zapomniał o komponentach by nam w pracy pozwolono tą technologia się bawić.

środa, listopada 5

JSF po raz pierwszy

witam; udało się uruchomić aplikację jsf + maven + tomcat; budując aplikacje standalone i pracując z spring i paroma innymi framework'ami nadeszła pora na poznanie technologii webowych;

od czego by ty wystartować...
instalacja frameworków:
  • maven - najlepiej jest to opisane na oficjalnej stronie projektu
  • tomcat - tu podobnie jak wcześniej oficjalna strona jest jednym z najlepszych źródeł informacji

no to startujemy; tworzymy projekt z archetypu softeu-archetype-jsf lekko, modyfikowałem go do postaci:



by uruchomić bardzo prosty przykład należy stworzyć kilka plików; w niniejszym poście opiszę tylko znaczące elementy plików;

web.xml, zwany też plikiem konfiguracyjnym vel deskryptor wdrożenia:

<web-app>
<servlet>
  <servlet-name>Serwlet JavaServer Faces</servlet-name>
  <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
  <servlet-name>Serwlet JavaServer Faces</servlet-name>
  <url-pattern>*.faces</url-pattern>
</servlet-mapping>

<listener>
  <listener-class>com.sun.faces.config.GlassFishConfigureListener</listener-class>
</listener>

<welcome-file-list>
  <welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>


jednym z ciekawszych elementów w pliku jest servlet-mapping, zawiera on informację o mapowaniu adresów, strony JSF są przetwarzane przez specjalny serwlet, aby zapewnić poprawne aktywowanie tego serwletu w momencie żądania strony JSF; tomcat musi wiedzieć które to strony są JSF, w konfigruacji adresy będą się kończyły rozszerzeniem .faces;
parametr welcome-file-list zawiera informacje o tym jaka strona zostanie uruchomiona zaraz po tym jak zostanie wpisany adres projektu do przeglądarki;


plik faces-config.xml zawiera informacje konfiguracyjne dla części związanej z JSF;

<navigation-rule>
  <from-view-id>/index.jsp</from-view-id>
  <navigation-case>
    <from-outcome>login</from-outcome>
    <to-view-id>/login.jsp</to-view-id>
  </navigation-case>
</navigation-rule>

<managed-bean>
  <managed-bean-name>myClass</managed-bean-name>
  <managed-bean-class>pl.arekborek.MyClass</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
</managed-bean>


nic prostszego tag <navigation-rule> zawiera informacje na temat zasad nawigacji, czyli z jakiego widoku po spełnieniu warunku, gdzie zostanie przeniesiony użytkownik;
tag <managed-bean> zawiera informacje na temat beanów jakie będą widoczne w aplikacji; dla każdego trzeba określić zasięg, klasę oraz nazwę pod jaką będzie widziany; w JSF zdefiniowano następujące zasięgi widoczności request, session, application, none

pozostaje jeszcze kilka plików do opisania, ale zawartość ich nie jest zbyt interesująca; jeżeli kogoś interesował by cały działający przykład proszę się odezwać do mnie na mila;

poniedziałek, listopada 3

SEVERE: Error configuring application listener

witam, postanowiłem zgłębić wiedzę na temat aplikacji webowych, dlatego też zabrałem się za budowanie aplikacji w oparciu o Apache Maven + JSF (implementacja od SUN'a) + Seam a to miało się uruchomić na Apache Tomcat w wersji 6.0.18;

na wstępie oczywiście schodki, po zbudowaniu aplikacji i zrobieniu pierwszego deploy'a otrzymałem piękny komunikat:
...
SEVERE: Error configuring application listener of class com.sun.faces.config.GlassFishConfigureListener
java.lang.ClassNotFoundException: com.sun.faces.config.GlassFishConfigureListener
...


oczywiście za googlałem i jest rozwiązanie:

dla JSF 1.1 w web.xml dodajemy:
<listener>
  <listener-class>
    com.sun.faces.config.ConfigureListener
  </listener-class>
</listener>


a dla JSF 1.2:
<listener>
  <listenerclass>
    com.sun.faces.config.GlassFishConfigureListener
  </listener-class>
</listener>


w następnym poście umieszczę bardzo prosty przykład uruchomienia kawałka kodu;