アプリケーションを Glassfish 2.2.1 から JBoss AS 6 に移行しました。
以前は、ejbs を検索するためのジェネリック クラスがありました。以下はコードです。
public class BeanUtil {
private static InitialContext ctx;
public static <T> T create(Class<T> type){
try {
ctx = new InitialContext();
return (T)ctx.lookup(type.getName());
} catch (NamingException e) {
e.printStackTrace();
}
return null;
}
}
上記のクラスは、glassfish でのルックアップに問題なく機能します。しかし、コードを JBoss AS 6 に移行した後、常に javax.naming.NameNotFoundException が発生します。
以下は私のejbクラスの1つです。
@Remote
public interface OperationPerformed {
public void addRandomNo(String randomNos);
}
@Stateless
@Remote(OperationPerformed.class)
public class OperationPerformedImpl implements OperationPerformed {
public void addRandomNo(String randomNos) {
}
}
アプリの展開中に jboss が作成した完全な jndi 名を指定すると、同じものを簡単に検索できます。しかし、ルックアップ用の汎用コードが必要です。
以下は、Bean をルックアップするために呼び出すコードです。
OperationPerformed operationPerformed = BeanUtil.create(OperationPerformed.class);
私が何か間違ったことをしている場合は提案してください。