2016-05-26 13 views
1

У меня есть два сеанса без состояния. Вызов Иерархия как:Безстоящий 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); 
+0

Этот код работает как есть на одном экземпляре ВНК в производстве, но не работа над другим. Можете ли вы придумать какую-либо конфигурацию веб-журнала, связанную с этим? –

ответ