2015-06-12 4 views
3

Избавляя исключение в методе, отмеченном @PostConstruct в отмеченном bean-компоненте @Startup, в настоящее время я могу дать предупреждение при развертывании приложения на сервере Glassfish 3.1. Тем не менее, он остается развернутым (поэтому он входит в список приложений), и сообщение об ошибке является довольно расплывчатым, а не сообщение, указанное с исключением.Сделать неудачу развертывания с настраиваемой ошибкой в ​​Glassfish 3.1

Я хочу, чтобы развертывание завершилось неудачно и дайте соответствующее сообщение, чтобы точно указать, что пошло не так. Является ли это выполнимым из стандартного Java EE без настройки сервера Glassfish? И если да, то как?

Текущая настройка - одна с сервером приложений домена и двумя экземплярами.

В настоящее время данное сообщение является следующая

Warning Command succeeded with Warning 
"http://localhost:4848/management/domain/applications/application/applicationname" created successfully. WARNING: Command _deploy did not complete successfully on server instance instance1: remote failure: Failed to load the application on instance instance1. The application will not run properly. Please fix your application and redeploy. Exception while shutting down application container : java.lang.NullPointerException. Please see server.log for more details. WARNING: Command _deploy did not complete successfully on server instance instance1: remote failure: Failed to load the application on instance instance1. The application will not run properly. Please fix your application and redeploy. Exception while shutting down application container : java.lang.NullPointerException. Please see server.log for more details. 

Пример кода, используемый в @PostConstruct

@PostConstruct 
public void init() throws ExceptionInInitializerError { 
    throw new ExceptionInInitializerError("Don't deploy!"); 
} 

также для

@PostConstruct 
public void init() throws Exception { 
    throw new Exception("Don't deploy!"); 
} 

То же самое происходит в случае RuntimeException

@PostConstruct 
public void init() { 
    throw new RuntimeException("Don't deploy!"); 
} 
+1

Вы уверены, что это бросать пользовательских исключений, а не 'NullPointerException' где-то еще? Не могли бы вы разместить важные части вашего метода @PostConstruct? –

+0

Я добавил два примера. – Kristof

+0

В документации указано * «Метод НЕ ДОЛЖЕН выдавать проверенное исключение». *. Что произойдет, если вы выбросите «RuntimeException»? –

ответ

2

Я думаю, что способ «разбить» развертывание и исключить исключение - использовать расширение JavaEE SPI.

ее простой учебник, как это сделать:

http://blog.eisele.net/2010/01/jsr-299-cdi-portable-extensions.html

я использовал этот один, но его для glassfish4

http://www.byteslounge.com/tutorials/java-ee-cdi-extension-example

+0

Это учебные пособия для инъекций CDI, но я не вижу, как они могут взаимодействовать с развертыванием и @PostConstruct? – Kristof

Смежные вопросы