私は耳にパッケージ化されたエンタープライズアプリケーションを開発しています。耳はEnterprise Beanアプリケーション(jar)1つ、JAX-RSアプリケーション(戦争)1つ、Webアプリケーション(戦争)で構成されています。WebSphere Libertyは複数のシングルトンEJBインスタンスを開始します
耳記述子(application.xmlには)次のようになります
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC
"-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN"
"http://java.sun.com/dtd/application_1_3.dtd">
<application>
<display-name>myapp-ear</display-name>
<module>
<web>
<web-uri>myapp-war-1.0.0-SNAPSHOT.war</web-uri>
<context-root>/</context-root>
</web>
</module>
<module>
<web>
<web-uri>myapp-rest-1.0.0-SNAPSHOT.war</web-uri>
<context-root>/api</context-root>
</web>
</module>
<module>
<ejb>myapp-ejb-1.0.0-SNAPSHOT.jar</ejb>
</module>
</application>
EJBアプリケーションは@Schedule方法が含ま@Singleton、@LocalBeanと@Startupで注釈シングルトンEJBを含んでいます。
サーバーがスケジュールされたメソッドの3つのインスタンスを同時に開始したことに気付きました。さらにログを調べると、Beanが3回バインドされることがわかります。
これはドキュメントhttp://docs.oracle.com/javaee/6/tutorial/doc/gipjg.html
しかしに従ってある:私は、この動作を示さない完全なプロファイルWebSphereサーバー上で実行されている同様のアプリケーションを持っています。代わりに、エンタープライズアプリケーション全体で1つのインスタンスしか存在しません。
、これは誤りである場合WLPサーバは、Javaバージョン1.8.0_101
質問があると17.0.0.1を実行している - または私はWLPで、いくつかの重要な設定をしないのですか?
:もっと私はそれについて考え、文書化された機能は、時にあまり意味がありません。アプリケーション全体を耳に入れてパッケージ化しています。あなたは通常、1つのインスタンスだけを必要とします - それ以外はすべて一緒にパッケージし、シングルトンを使用するのはなぜですか? – danishrulez