現在、次のコードを使用して、通常の POJO クラスの EJB3 ステートレス セッション Bean を検索しています。(私たちは JEE5 を使用しているため、ルックアップを使用する必要がある通常の POJO クラスにステートレス セッション Bean を注入することはできません)
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.apache.log4j.Logger;
public Object getEJB(String jndiName) {
logger.debug("WEBSPHERE EJB Lookup : " + jndiName);
String modifiedJndiName = "";
Hashtable<Object, Object> properties = new Hashtable<Object, Object>();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
properties.put(Context.PROVIDER_URL, "iiop://localhost:2809");
try {
Context context = new InitialContext(properties);
logger.debug("WEBSPHERE EJB Lookup Modified JNDI Name: " + modifiedJndiName);
return context.lookup("ejblocal:"+modifiedJndiName);
}catch (NamingException ne) {
logger.debug("Naming Exception occurred :"+jndiName +">>>"+ne.getMessage());
logger.error(ne.getMessage(), ne);
}
return null;
}
ContextオブジェクトはThredSafeですか?[このコード スニペットに示すように] 呼び出しごとに Context オブジェクトを作成する必要がありますか?それとも、すべてのスレッドで Context を再利用できますか?