SpringBootアプリケーションをWARからWebsphere Application Server(WAS)にデプロイしたとします。このWARにはデーモンが含まれているため、WASの起動時に(そして一度だけ)すぐにを開始する必要があります。Springブート:Webshere Application Serverの起動時に自動的にアプリケーションを起動しますか?
しかし、httpリクエストを実行してSpringBootサーブレットをアクティブ化する必要があります。
サーブレットの概念はhttpリクエストに作用することを理解していますが、まだアプリケーションサーバーの起動時に自動起動させたいと思っています。これにより、私のデーモンはスタンドアロンのjar/mainからwar/webappに移植可能になります。
ServletContextListener
を試しましたが、contextInitalized
も最初のhttp要求でのみ呼び出されます。
web.xml(サーブレット3)がありません。
コード:
@SpringBootApplication
@WebListener
public class DemoApplication extends SpringBootServletInitializer implements ServletContextListener {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
System.err.println("ONSTARTUP");
super.onStartup(servletContext);
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DemoApplication.class);
}
@Override
public void contextInitialized(ServletContextEvent sce) {
System.err.println("contextInitialized");
}
@Override
public void contextDestroyed(ServletContextEvent arg0) {
//
}
}
と:私は私が最初にこれを取得WAS開始
@Component
public class DemoRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments arg0) throws Exception {
System.err.println("I AM RUNNING");
}
}
:私の春ブートアプリケーションの開始を取得するには
Launching defaultServer (WebSphere Application Server
16.0.0.2/wlp-1.0.13.cl160220160526-2258) on Java HotSpot(TM) 64-Bit Server VM, version 1.7.0_79-b15 (en_US)
[...]
[AUDIT ] CWWKT0016I: Web application available (default_host): http://localhost:9080/demo/
[AUDIT ] CWWKZ0001I: Application test started in 17,282 seconds.
、Iまずこのリンク(http:/ localhost:9080/demo /)にアクセスする必要があります。その後、ログに表示されるように、起動方法から始めてローリングが開始されます。しかし、どうやってHTTP要求を出さずにこれを始めることができますか?
[err] ONSTARTUP
. ____ _ __ _ _
/\\/___'_ __ _ _(_)_ __ __ _ \ \ \ \
(()\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ))))
' |____| .__|_| |_|_| |_\__, |////
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.4.0.RELEASE)
2016-09-02 10:45:52.670 INFO 23716 --- [dPool-thread-48] com.example.DemoApplication : Starting DemoApplication on [...]
2016-09-02 10:45:58.019 INFO 23716 --- [dPool-thread-48] o.s.c.support.DefaultLifecycleProcessor : Starting beans in phase 0
[...]
[err] I AM RUNNING
[...]
2016-09-02 10:45:58.093 INFO 23716 --- [dPool-thread-48] com.example.DemoApplication : Started DemoApplication in 6.372 seconds (JVM running for 31.549)
[...]
[err] contextInitialized
[err] contextInitialized
でそれを設定できるのspring.mvc.servlet.load・オン・スタートアップ= 1 ' –
者2解決策は機能しません。上記のconfig-codeを使用してreturnの直前にprintlnを置くと、このbeanFactoryPostProcessorが呼び出されます(呼び出されます).HTTPリクエストを作成した後、スプラッシュの直後、およびonstartupの前です。 – robert
@robertをWAS用に使用している場合は、server.xmlの ' 'をWASドキュメントから確認する必要があります。 –