Я разрабатываю корпоративное приложение, упакованное в ухо. Ухо состоит из одного приложения Enterprise Bean (в банке), одного приложения JAX-RS (в войне) и одного веб-приложения (тоже в войне).
Дескриптор уха (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 содержит одноэлементный компонент EJB, аннотированный @Singleton, @LocalBean и @Startup, который содержит метод @Schedule.
Я заметил в логе, что сервер запускал три экземпляра запланированного метода одновременно, и дальнейшее изучение лога показывает, что бин привязывается три раза — по одному для каждого приложения в ухе.
Это соответствует документации http://docs.oracle.com/javaee/6/tutorial/doc/gipjg.html
НО: у меня есть аналогичное приложение, работающее на сервере WebSphere с полным профилем, которое не показывает такого поведения. Вместо этого для всего приложения Enterprise существует только один экземпляр.
Сервер WLP работает под управлением 17.0.0.1 с версией Java 1.8.0_101.
Вопрос, если это ошибка - или я упускаю какую-то важную настройку в WLP?