2016-08-30 4 views
0

Я использую Glassfish 4.1 для развертывания веб-приложения RESTful с использованием джерси 2.23.2.Метод Glassfish 4.1invoke при запуске сервера?

То, что я пытаюсь сделать, это запустить метод при запуске сервера

мой web.xml

<!DOCTYPE web-app PUBLIC 
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd" > 
<web-app> 
    <display-name>XYZ</display-name> 
    <servlet> 
     <servlet-name>MyApplication</servlet-name> 
     <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
     <init-param> 
      <param-name>javax.ws.rs.Application</param-name> 
      <param-value>MyApplication</param-value> 
     </init-param> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>MyApplication</servlet-name> 
     <url-pattern>/*</url-pattern> 
    </servlet-mapping> 

</web-app> 

и MyApplication.java

import javax.annotation.PostConstruct; 
import org.glassfish.jersey.server.ResourceConfig; 

public class MyApplication extends ResourceConfig { 
    public MyApplication() { 
     packages("services"); 
    } 

    @PostConstruct 
    public void post_construct() { 
     //The method I want to run 
    } 
} 

ответ

0

Я думаю, ваше решение не работает, потому что ваш класс не управляется контейнером, и поэтому @PostConstruct не получает оценку.

Вы можете попробовать следующее:

import javax.annotation.PostConstruct; 
import org.glassfish.jersey.server.ResourceConfig; 

public class MyApplication extends ResourceConfig { 
    public MyApplication() { 
     packages("services"); 
     post_construct(); // <-- here is the call 
    } 

    @PostConstruct 
    public void post_construct() { 
     //The method I want to run 
    } 
} 

Если это не работает здесь является "реальным" решение:

@Singleton 
@Startup 
public class InitializerBean { 

    @PostConstruct 
    public void onStartup() { 
     // do your method-call here 
    } 

} 

Смотрите также: