Olá pessoal. Já tem bastante tempo que não tenho participado aqui do fórum (prometo voltar a ativa algum dia), mas hoje venho aqui dar o meu relato. Ontem (31/05) fiz a SCBCD.
O meu primeiro contato com o EJB 3.0 e com o JPA foi a mais ou menos uns 3 anos atrás.
No entanto, desde então, eu tive pouco contato com o EJB, apenas algumas coisinhas pequenas e simples. Quanto ao JPA, eu estava mais confortável pois o uso com frequência.
Há dois anos atrás, comprei o livro “Enterprise Java Beans 3.0”, 5ª edição, de Bill Burke e Richard Monson-Haefel, e vinha usando-o para estudar de vez em quando para esta certificação, mas a passo de tartaruga. Também trabalhei um pouco com o EJB 2.1 em um projeto que participei no final de 2008 e início de 2009.
O livro aborda quase tudo que é necessário na prova. No entanto, ele não aborda questões de compatibilidade entre o EJB 2.1 e o EJB 3.0, e também não aborda alguns pequenos detalhes intrincados que podem se tornar pegadinhas, em especial quando você começa a combinar vários aspectos do EJB.
Em algum dia no final de abril, eu peguei o meu voucher (com retake) e vi que ele venceria em 01/06 (hoje). Com o voucher vencendo, eu decidi começar a estudar “pra valer” neste último mês, mas mesmo assim, devido ao mestrado, ao trabalho e a outras atividades que eu faço, sobrava pouco tempo.
Eu poderia usar o retake se fizesse a primeira prova até 18/05. No entanto, lá pelo dia 12, eu senti que não estava nem um pouco preparado, e que se fizesse a prova, ou eu reprovaria ou passaria com um score medíocre. Portanto, decidi perder o retake e só fazer uma única tentativa, acabei marcando a prova para ontem a noite.
Há uma semana atrás, fiz o primeiro simulado, e reprovei com 55%. Revi conceitos que eu pouco havia botado em prática ou nunca havia botado em prática. Revi o funcionamento da injeção de dependências, JNDI, MDBs, transações, BMT vs CMT, escopos de persistência de transação e extendido, timer service, session beans (não tinha muita noção sobre o funcionamento do stateful), retornos de chamadas de entities, funções agregadas em JPQL, segurança e interceptors.
Ontem, no dia da prova, foi o dia que eu mais estudei (óbvio, esta é a lei que governa todos os estudantes :lol: ). Comecei a fazer simulados lá pelas 08:30 da manhã e só parei às 17:40, quando saí para fazer a prova. Foram umas 250 questões de simulados em um único dia (e mais a prova propriamente dita, portanto cerca de 310 questões em um só dia). No penúltimo destes simulados eu fiz 77%. O último simulado eu nem sei quanto eu fiz porque estava com pressa e tinha estipulado um minuto para cada questão (caso contrário não iria dar tempo).
Estes simulados são importantes, pois eles abordam coisas que você não imaginaria ver na prova e que não estão no livro do Bill Burke. Por exemplo: qual é o resultado de utilizar o equals para comparar duas instâncias de uma mesma classe de session bean injetado via annotation? Resposta: Se forem stateful são diferentes e se forem stateless são iguais. O motivo disso é que todas as instâncias stateless de uma mesma classe devem ser consideradas equivalentes, mas cada instância stateful é um contexto conversacional diferente.
Tanto nos simulados quanto na prova, as questões abordam vários conceitos ao mesmo tempo, de forma que torna-se difícil saber qual é o conceito exato que está em foco. Pelo menos metade das questões aborda alguma coisa sobre transações ou contextos de persistência. No entanto, o contexto de persistência extendido é pouco abordado, quase sempre o contexto de persistência pedido é de transação.
Existem algumas poucas questões com pegadinhas, como por exemplo, uma que dava alguns requisitos de um sistema a ser implantado, entre eles mostrar os resultados em uma JPanel. A questão pedia se os requisitos podiam ser atendidos “A. apenas com session beans”, “B. apenas com MDBs”, “C. com session beans e MDBs”, “D. não podia ser atendidos”, “E. apenas alguns podiam ser atendidos”. No entanto, o texto das alternativas era escrito de uma forma que dava a entender que a resposta certa seria a D, mas era a E.
Outro caso aonde havia pegadinha, era no uso do operador IN ou MEMBER OF na JPQL, que são parecidos. Uma outra com pegadinha era uma questão de um MDB que fazia um processamento bem esquisito e pedia qual que era o resultado, quando na verdade não era um MDB válido. Tinha outra com pegadinha de um interceptor e uma outra que usava o entity manager várias vezes e pedia o resultado no final, mas na verdade ele lançava uma exceção.
Deixo aqui também uma dica: É importante diferenciar bem os papéis definidos no EJB: “bean provider”, “application assembler”, “deployer”, “system administrator”, “EJB server provider”, “EJB container provider” e “persistence provider”. Havia algumas questões sobre esses papéis, e algumas delas se misturavam com gerenciamento de segurança.
Não é necessário decorar a estrutura do XML ejb-jar.xml. Há dezenas de questões aonde ele é cobrado. No entanto, em todos os casos, era dado um pedaço do XML válido e perguntava o que ele fazia ou como interferia em alguma outra coisa. Não há questões (ao menos para mim não tinha) aonde apareçam trechos inválidos de XML, ou que cobrem o conhecimento sobre detalhes do XML.
Não houve questões de drag-and-drop.
O tempo da prova, de 2 horas e 15 minutos é suficiente. Terminei as 61 questões com pouco mais de uma hora sobrando, o que me deu tempo para revisar todas elas. Houve 8 questões mais complicadas que deixei para uma segunda revisão, e duas que acabei chutando (embora tenha conseguido eliminar algumas alternativas). Com isso, terminei a prova sobrando uns 10 minutos.
Quando terminei a prova, eu não tinha a menor dúvida que tinha passado e que tinha passado bem, pois respondi as questões com muita confiança. Enfim recebi a confirmação:
E agora, está na hora de descongelar a SCJD e a SCDJWS, e a começar a estudar para a SCEA.
Quem quiser os simulados, pode me mandar uma mensagem privada.