У меня есть два сеанса без состояния. Вызов Иерархия как:Безстоящий EJB, проблема с обработкой исключений, исключение с глотанием контейнера
MyClass-> UserManagerBean -> BookManagerBean
MyClass является получение UserManagerBean дистанционно JNDI смотреть вверх. В свою очередь UserManagerBean получает BookManagerBean удаленно, используя JNDI. BookManagerBean бросает BookException.
Выпуск: Я могу видеть войти, прежде чем выбросить исключение из BookManagerBean, но когда я ловить это исключение в UserManagerBean, нить куда-то идет и никогда не приходит в поймать блок UserManagerBean. Похоже, что контейнер заглатывает это исключение. Это результат в потоке STUCK.
Примечание: Удивительно, но тот же код работает и в 5 других экземплярах WLS, но дает проблемы только на одном сервере. Вы думаете о какой-либо конфигурации веб-журнала по этой проблеме?
public class MyClass {
public void findBook(Long bookId) throws Exception{
try{
UserManagerBean userManager = (UserManager) JNDIServiceLocator.getInstance().getRemoteObject(jndiName, 'UserManager');
userManager.find(bookId);
}catch (Exception e){
Log.log("Exception in MyClass.findBook"); // Thread does not come back to this point. This logger is not getting printed
throw e;
}
UserManagerBean выглядит следующим образом:
@Stateless(mappedName ="UserManager")
@Remote(UserManager.class)
public class UserManagerBean {
public Book findBook(Long bookId) throws Exception{
try{
BookManagerBean bookManager = (BookManagerBean) JNDIServiceLocator.getInstance().getRemoteObject(jndiName, 'BookManager');
bookManager.find(bookId);
}catch (Exception e){
Log.log("Exception in UserManagerBean.findBook"); // **** Thread does not come back to this point. This logger is not getting printed
throw e;
}
}
BookManagerBean класс, как показано ниже:
@Stateless(mappedName ="BookManager")
@Remote(BookManagerBean .class)
public class BookManagerBean {
public Book findBook(Long bookId) throws Exception{
try{
//Logic to find Book
}catch (Exception e){
Log.log("Exception");
throw e;
}
}
}
Это работает: Если я изменить код в UserManagerBean для создания боб с использованием новых оператор, я получаю исключение, брошенное из BookManagerBean.
BookManagerBean bookManager = new BookManagerBean();
bookManager.find(bookId);
Этот код работает как есть на одном экземпляре ВНК в производстве, но не работа над другим. Можете ли вы придумать какую-либо конфигурацию веб-журнала, связанную с этим? –