2012-03-13 1 views
0

Где я могу встроить код инициализации запуска в веб-приложение Restlet без использования ServletContextListener?Что самое подходящее место для инициализации кода запуска (запуска) в приложении Restlete?

Я хочу иметь прозрачное развертывание моего Restlet на веб-сервере, например JBoss/Tomcat, и хотел бы избавиться от логики инициализации в Listener - чтобы иметь возможность удобно развертывать его за пределами веб-сервера, если это необходимо - определенно не для использования в тяжелых условиях, но, тем не менее, оно ценно.

Вставив его в конструктор org.restlet.Component, убедитесь, что он выполнит только один раз? Правильное ли это место?

public class MyComponent extends org.restlet.Component 
{ 
    public MyComponent() //constructor 
    { 
    //insert initialization code here that should run ONLY ONCE? 

    this.getDefaultHost().attach(new MyApplication()); // MyApplication extends org.restlet.Application 
    } 
} 

Я прошел через документы, а также посмотрел на аналогичной должности: RESTlet startup initialization deprecated?, но я до сих пор не уверен, что это правильный путь. Я хотел бы удалить зависимость от слушателя, если это вообще возможно.

ответ

1

Использование конструктора компонента является хорошим местом для обработки инициализации, и вы можете быть уверены, что такая обработка выполняется только один раз.

Вы можете заметить, что метод start/stop компонента также может использоваться в вашем случае. Не забудьте вызвать в них супер-метод. Эти методы вызывают, когда вы запускаете/останавливаете свой компонент, который обычно выполняется один раз ...

Надеюсь, это поможет вам. Thierry

+0

Я думаю, вам не нужно явно вызывать 'start/stop' при развертывании в контейнере сервлета ... так что я думаю, что конструктор будет лучшим местом. Спасибо за подтверждение! Ценить это. – PhD