#java #constructor #jersey #startup
#java #constructor #джерси #запуск
Вопрос:
Как возможно загрузить что-либо при запуске системы? У меня нет «main», где запускается моя программа !?
Ответ №1:
Вы могли бы использовать одноэлементный объект, определенный в Application#getSingletons()
.
public class MyApp extends Application
{
public Set<Class<?>> getClasses()
{
return null;
}
public Set<Object> getSingletons()
{
Set<Object> set = new HashSet<Object>();
Foo foo = /* init foo somehow */;
set.add(foo);
return set;
}
}
Из RESTful Java (если у вас есть книга, смотрите стр.142):
getSingletons()
Метод возвращает список предварительно выделенных веб-служб JAX-RS и@Provider
аннотированных классов. Вы, как программист приложения, несете ответственность за создание этих объектов. Среда выполнения JAX-RS выполнит итерацию по списку объектов и зарегистрирует их внутри. Когда эти объекты будут зарегистрированы, JAX-RS также введет значения для@Context
аннотированных полей и методов установки.
Ответ №2:
как правило, джерси создается maven. Итак, когда вы выполняете команду maven, создается инициализированный проект.
mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-grizzly2
-DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false
-DgroupId=com.example -DartifactId=simple-service -Dpackage=com.example
-DarchetypeVersion=2.4.1
Более подробную информацию смотрите:
https://jersey.java.net/documentation/latest/index.html
Ответ №3:
Вы могли бы написать класс, который реализует ServletContextListener.
public class MyContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent event) {
//stuff that happens when server is started
}
@Override
public void contextDestroyed(ServletContextEvent event) {
//stuff that happens when server is turned off
}
}
Тогда вы бы просто добавили это в свой web.xml файл как дочерний для элемента веб-приложения.
<listener>
<listener-class>com.mypackage.MyContextListener</listener-class>
</listener>