[SCBCD] Quem sabe responder esta questão?

Quem souber, responda a esta pergunta que eu encontrei num mock.

Segundo o software do mock eu errei a resposta desta questão, mas acredito que talvez esta questão esteja errada.

[quote]Consider the bean code shown in Exhibit. Assuming that there is no deployment descriptor given with the bean, which of the following options can be inserted at //1 without causing any exception?

Exhibit:

[code]package com.enthu.ejbplus;

import java.sql.;
import javax.annotation.Resource;
import javax.ejb.
;
import javax.sql.DataSource;

@Stateless
@Remote(com.enthu.ejbplus.TellerRemote.class)
@Resource(name="jdbc/ejbplus", type=DataSource.class)
public class TellerBean {

@Resource
SessionContext sctx;

public TellerBean() {
}

public double getBalance(int acctid){

   // Line 1 : insert code here

}

}[/code]

a) DataSource ds = sctx.lookup(“jdbc/ejbplus”);

b) Principal p = sctx.getCallerPrincipal();

c) RequestDispatcher rd = sctx.getRequestDispatcher();

d) Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup(“jdbc/ejbplus”);

[/quote]

Segundo o software há duas respostas corretas.

Eu acho que as corretas são os itens b e d.

Carneiro, não me leve a mau, eu vou contestar a sua resposta, mas com o sentido de chegarmos ao correto, pode ser que eu esteja errado.

Você diz que a letra D é correta.

Mas para a D ser correta não teria que ser da seguinte forma:

Context ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup("java:/comp/env/jdbc/ejbplus");

??

Oi Dok,

você tem todo o direito de constestar, e outra, eu falei “eu acho”. :slight_smile:

Seguinte, chutei esses dois itens por eliminação, pois:

a) não me lembro se tem o método lookup no objeto SessionContext

c) sem comentários

a,b e c não dão NullPointerException?

sctx não foi inicializado! Ou a inicialização foi omitida?

Qual a resposta do Mock? Tem explicação?

abraço!

O que mock diz é que as respostas corretas são a B e a D.

A A não pode ser pelo fato de não haver cast.

A B está correta e não há dúvidas quanto a isso.

A C está totalmente errada, esse método não existe no SessionContext.

Na D é que está a dúvida. É o que o TriTonE falou, até onde sei o correto seria o colocar o caminho completo (java:comp/env/jdbc/ejbplus) e não o relativo (jdbc/ejbplus).

Nos testes que fiz aqui, isso também se comprova, mas pode ser que eu esteja fazendo algo de errado.