«Стандартизированный» способ обработки жизненного цикла приложения Java EE - PullRequest
10 голосов
/ 22 июля 2011

При разработке приложения Java EE я часто сталкивался с «проблемой» делать вещи, когда приложение запускается, останавливается и т. Д. Теперь для Weblogic, например, существует механизм для этого (слушатель жизненного цикла приложения) , Но если вы хотите сохранить свое приложение свободным от вещей, которые есть в приложении. для конкретного сервера, вы должны найти другое решение. Некоторые рекомендуют использовать сервлет, который загружается при запуске, и «злоупотреблять» init() / destroy().

Другие говорят, что используйте ServletContextListener. Для меня последнее звучит лучше всего (согласно документу java для ServletContextListener. К сожалению, сегодня я попробовал JBoss 7, где кажется, что веб-сервисы jax-ws инициализируются раньше, чем любые другие Servlet, таким образом, прежде чем ServletContextListener получит уведомление.

Короче говоря - я просто сталкиваюсь здесь с некоторыми специфическими для сервера приложений проблемами - или есть какой-то "более подходящий", стандартизированный способ Java EE для регистрации вещей, работы перед тем, как инициализировать какой-либо веб-сервис, сервлет или что-либо еще?

1 Ответ

1 голос
/ 22 июля 2011

Если ваши веб-сервисы помечены так

@javax.jws.WebService(...)
public interface YourServiceEndpoint

они еще не настоящие сервлеты, но JBoss (Jax-WS) превратит их в стартап.

Я использую jboss-4.2.3, и я также получаю эти сообщения до того, как мой ServletContextListner будет вызван.

[org.jboss.wsf.framework.management.DefaultEndpointRegistry] register: jboss.ws:context=crm,endpoint=YourService

Но мне интересно, доступен ли этот веб-сервис до запуска всего приложения, потому что почти в конце развертывания я получаю следующие сообщения

[org.jboss.wsf.stack.jbws.WSDLFilePublisher]  WSDL published to: ... YourServlet(..).wsdl

Так что я бы предположил, что это проблема, связанная с jboss. Может быть, нам следует проверить это на другом сервере приложений.

...