我正在开发一个打包在耳朵中的企业应用程序。耳朵由一个 Enterprise Bean 应用程序(在一个 jar 中)、一个 JAX-RS 应用程序(在一个战争中)和一个 Web 应用程序(也在一个战争中)组成。
耳朵描述符 (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 方法。
我在日志中注意到服务器同时启动了计划方法的三个实例,对日志的进一步调查显示 bean 被绑定了 3 次——每个应用程序都绑定了 1 次。
这与文档http://docs.oracle.com/javaee/6/tutorial/doc/gipjg.html一致
但是:我在完整配置文件 WebSphere 服务器上运行了一个类似的应用程序,但没有显示此行为。相反,整个企业应用程序只存在一个实例。
WLP 服务器正在运行 17.0.0.1,Java 版本为 1.8.0_101
问题是,如果这是一个错误 - 还是我错过了 WLP 中的一些重要设置?