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

piątek, 26 listopada 2010

News dla programistów Oracle ADF

Stało się. Oracle oficjalnie uruchomiło ścieżkę certyfikacji dla programistów ADF. Wiadomość opublikował wczoraj na swoim blogu Shay Shmeltzer. Egzamin oficjalnie nosi nazwę Oracle Application Development Framework Essentials (1Z1-554) i jak na razie jest w wersji beta – czyli ma służyć głównie wysądowaniu zainteresowania ścieżką certyfikacji z zakresu technologii Oracle Fusion oraz ustaleniu ostatecznego zakresu tematycznego. Dla bywalców forum dyskusyjnego OTN nie jest to zaskoczenie. Temat certyfikatów z ADF jest cyklicznie poruszany od co najmniej trzech lat. Na temat problematyki egzaminu można poczytać tutaj. Moje osobiste wrażenia są takie – sporo tego – nawet dla doświadczonego developera. Wrzucono do jednego worka w zasadzie całość technologii, lekko nawet poza nią wykraczając (ADF + SOA, WebCenter). Zresztą sam Shay napisał:
„...this is not a trivial exam - you should only apply if you actually have practical experience developing with ADF”.
Nie wiem też, jaka będzie forma tego egzaminu. Część pytań jest czysto teoretyczna, niektóre zagadnienia natomiast w zasadzie nie do opisania bez użycia JDeveloper'a. Cóż, wysłałem maila do autora postu i być może wkrótce będę wiedział coś więcej. Postaram się też skonfrontować zakres tematyczny egzaminu z tym, co napisane jest w dostępnej literaturze przedmiotu.

niedziela, 10 października 2010

ADF Business Components i zatwierdzanie transakcji - problem z obsługą wyjątków

W tym tygodniu spędziłem parę godzin na znalezieniu problemu, czemu nagle po wgraniu patch'a na serwer aplikacyjny Oracle'a przestała działać jedna z funkcji. Wyglądała mniej wiecej tak:
public void addDepartment(Number deptno, String dname, String loc){
        
        ViewObject depts = getDeptView();
        Row newDept = depts.createRow();
        newDept.setAttribute("Deptno", deptno);
        newDept.setAttribute("Dname" , dname);
        newDept.setAttribute("Loc"   , loc);
        
        getDBTransaction().commit();
    }
czyli nie robiła nic nadzwyczajnego poza zapisem wiersza do tabeli w bazie. Problem oczywiście odnalazł się w logach serwera. Po zrobieniu upgrade'u z wersji 10.1.3.3 do wersji 10.1.3.5 okazało się, że identyfikator sesji nie ma już 44 znaków tylko 64, a moja funkcja zapisywała ten identyfikator do bazy. Niestety framework nie propagował tego wyjątku do warstwy widoku-controlera i nie dodawał go do kolejki FacesMeassages. Oczywiście prawidłowo napisana funkcja w module aplikacji powinna wyglądać następująco:
public void addDepartment(Number deptno, String dname, String loc){
        
        ViewObject depts = getDeptView();
        Row newDept = depts.createRow();
        newDept.setAttribute("Deptno", deptno);
        newDept.setAttribute("Dname" , dname);
        newDept.setAttribute("Loc"   , loc);
        
        try{
            
            getDBTransaction().commit();
            
        }catch(JboException ex){
            
              getDBTransaction().rollback();
              throw new JboException(ex);
        }
    }
Jak widać, wbrew marketingowi, Oracle ADF nie robi za nas wszystkiego :). Warto o tym pamiętać, szczególnie wywołując procedury PL/SQL.