运行可嵌入容器
使用此任务来运行可嵌入容器。在可嵌入容器中运行的应用程序启动速度更快,并且相对于在完整应用程序服务器中运行,需要的资源占用量更少。这是快速开发和测试应用程序(可能最终在应用程序服务器中运行)的理想环境。
开始之前
运行可嵌入容器之前,必须准备好以下各项:
- <app_server_root>\runtimes\com.ibm.ws.ejb.embeddableContainer_9.0.jar 的副本限制: Enterprise JavaBeans (EJB) 瘦客户机 com.ibm.ws.ejb.thinclient_9.0.jar 和 EJB 可嵌入 Java™ 归档 (JAR) 文件 com.ibm.ws.ejb.embeddableContainer_9.0.jar 不能在同一个类路径中共存。
- <app_server_root>\runtimes\endorsed\endorsed_apis_9.0.jar 文件的副本(如果您将 @Resource 注释与 lookup 属性配合使用)
- JAR 文件或类目录中的一个或多个 EJB 模块
- 创建可嵌入容器的主类
- Java SE Development Kit (JDK) 或者 Java 运行时环境 (JRE) V8.0 或更高版本。
关于此任务
运行可嵌入容器的关键在于类路径。类路径必须包括先前列示的所有工件。例如,如果主类为 my.pkg.MyMainClass 并且它使用存储在 MyEJBModule.jar 文件中的企业 Bean,那么以下行可能会运行用于启动可嵌入容器的主类。此示例假定所有 JAR 文件和类目录位于当前工作目录。
- Windows:
C:\test> java -cp .;com.ibm.ws.ejb.embeddableContainer_9.0.jar my.pkg.MyMainClass
- UNIX:
[test]$ java -cp .:com.ibm.ws.ejb.embeddableContainer_9.0.jar:MyEJBModule.jar my.pkg.MyMainClass
如果您要在当前工作目录中 embeddable.properties 以外的文本文件中指定可嵌入容器属性,那么必须指定 com.ibm.websphere.embeddable.configFileName 系统属性;例如:
- Windows:
C:\test> java -Dcom.ibm.websphere.embeddable.configFileName="C:\test\my-config.properties" -cp .;com.ibm.ws.ejb.embeddableContainer_9.0.jar;MyEJBModule.jar my.pkg.MyMainClass
- UNIX:
[test]$ java -Dcom.ibm.websphere.embeddable.configFileName="/home/myusername/test/my-config.properties" -cp .:com.ibm.ws.ejb.embeddableContainer_9.0.jar:MyEJBModule.jar my.pkg.MyMainClass
当您开发在可嵌入 EJB 容器中使用 JPA 的应用程序时,类路径必须包含 JPA 瘦客户机 com.ibm.ws.jpa-2.1.thinclient_9.0.jar。JPA 瘦客户机位于安装映像的根目录所在的 \runtimes 中。
- Windows:
C:\test> java -cp .;com.ibm.ws.ejb.embeddableContainer_9.0.jar;%WAS_HOME%\runtimes \com.ibm.ws.jpa-2.1.thinclient_9.0.jar;MyEJBModule.jar my.pkg.MyMainClass
- UNIX:
[test]$ java -cp .:com.ibm.ws.ejb.embeddableContainer_9.0.jar:${WAS_HOME}/runtimes /com.ibm.ws.jpa-2.1.thinclient_9.0.jar:MyEJBModule.jar my.pkg.MyMainClass


- Windows:
C:\test> java -javaagent:%WAS_HOME%\runtimes\com.ibm.ws.jpa-2.1.thinclient_9.0.jar -cp .;com.ibm.ws.ejb.embeddableContainer_9.0.jar;MyEJBModule.jar my.pkg.MyMainClass
- UNIX:
[test]$ java -javaagent:${WAS_HOME}/runtimes/com.ibm.ws.jpa-2.1.thinclient_9.0.jar -cp .:com.ibm.ws.ejb.embeddableContainer_9.0.jar:MyEJBModule.jar my.pkg.MyMainClass
要在可嵌入容器中启用跟踪,您可以将 com.ibm.ejs.ras.lite.traceSpecification 系统属性指定为您要对服务器指定的跟踪规范值。
缺省情况下,跟踪将打印到标准输出,但是您可以通过指定 com.ibm.ejs.ras.lite.traceFileName 系统属性来重定向输出。以下示例显示您可以如何同时使用这两个系统属性:
- Windows:
C:\test> java -Dcom.ibm.ejs.ras.lite.traceSpecification=EJBContainer=all:MetaData=all -Dcom.ibm.ejs.ras.lite.traceFileName=trace.log -cp .;com.ibm.ws.ejb.embeddableContainer_9.0.jar;MyEJBModule.jar my.pkg.MyMainClass
- UNIX:
[test]$ java -Dcom.ibm.ejs.ras.lite.traceSpecification=EJBContainer=all:MetaData=all -Dcom.ibm.ejs.ras.lite.traceFileName=trace.log -cp .:com.ibm.ws.ejb.embeddableContainer_9.0.jar:MyEJBModule.jar my.pkg.MyMainClass
如果您的 Bean 将 javax.annotation.Resource 注释与 lookup 属性配合使用,那么还必须使用 Java Endorsed Standards Override Mechanism 来覆盖系统上的 JDK 中提供的 javax.annotation.Resource API。将 app_server_root\runtimes\endorsed\endorsed_apis_9.0.jar 文件复制到您选择的目标目录中。在 Java 命令上使用 java.endorsed.dirs 属性指定包含复制的 JAR 文件的目录。以下示例显示您可以如何指定 java.endorsed.dirs 属性:
- Windows:
C:\test> java -Djava.endorsed.dirs="myTargetDirectory" -cp .;com.ibm.ws.ejb.embeddableContainer_9.0.jar;MyEJBModule.jar my.pkg.MyMainClass
- UNIX:
[test]$ java -Djava.endorsed.dirs="myTargetDirectory" -cp .:com.ibm.ws.ejb.embeddableContainer_9.0.jar:MyEJBModule.jar my.pkg.MyMainClass