Хороший вопрос, Ant
Я знаю, что вы хотите бросить исключение базы данных, но когда это происходит применение, в большинстве случаев, не в состоянии восстановить свое первоначальное состояние или его не знает, как оправиться от него. Таким образом, это должно быть обработано как исключение во время выполнения. Некоторые проблемы исключений базы данных включает в себя
- Сбой подключения к базе данных
- запрос неправильно
- таблицы или столбца не существует
Выше вы видите приложение не сможет восстановить свое первоначальное состояние , Если вы считаете возможным восстановить его начальное состояние , вы должны использовать исключение приложения. Клиент получит ту же самую исключение для приложения, созданное вашим бизнес-методом. Если вы хотите, чтобы иметь возможность получить точное исключение брошенного вашего метода бизнеса у вас есть два варианта:
- Использование бизнеса-делегат шаблон для доступа к вашей EJB
Как вы знаете, завернутое исключения во время выполнения по EJBException, так что вы shold использовать что-то вроде
Давайте предположим, что у вас есть этот сессионный компонент
@Stateless
public class BeanImpl implements Bean {
public void doSomething() {
try {
// some code
} catch(SomeException e) {
throw new EJBException(e);
}
}
}
так у НУ обернуть сессионный компонент через бизнес-делегат
public class BeamBusinessDelegate implements Bean {
// your stateless session bean goes here
private Bean bean;
public BeamImpl() {
InitialContext i = new InitialContext();
bean = (Bean) i.lookup(<GLOBAL_JNDI_ADDRESS_OR_RELATIVE_ENVIRONMENT_NAMING_CONTEXT_ADDRESS>);
}
public void doSomething() {
try {
bean.doSomething()
} catch(EJBException e) {
throw e.getCause();
}
}
}
Или вы можете расширяет EJBException в соответствии с вашими потребностями
public class DatabaseException extends EJBException {
}
Так что в вашем методе бизнес
@Stateless
public class BeanImpl implements Bean {
public void doSomething() {
try {
// some code
} catch(SomeException e) {
throw new DatabaseException();
}
}
}
приветом,
У меня такая же проблема, можете ли вы отредактировать свой ответ с помощью образца кода? –