可以使用 addCompUnit 命令添加包含先前导入的企业捆绑软件归档 (EBA) 资产和配置信息的组合单元。 如果 EBA 资产包含组合捆绑软件,那么命令语法略有不同。
有关此任务
OSGi 组合单元由一个 EBA 资产和下列某些或全部配置信息组成:
- 从组合单元到目标应用程序服务器、Web 服务器或集群的映射。
- 应用程序的会话管理器、上下文根或虚拟主机的配置。
- 从企业 bean 到 JNDI 名称的映射。
- 至任何相关联的 Web 应用程序或蓝图资源引用的绑定。
- 从安全角色到特定用户或组的映射。
对于某些元素,您指定的值包含捆绑软件标识。 如果 EBA 资产包含或引用组合捆绑软件,那么命令语法略有不同。 在以下步骤中说明了组合捆绑软件的不同之处。
过程
- 映射组合捆绑软件中 Web 模块的上下文根。
该命令的此方面的 Jython 语法如下:
AdminTask.addCompUnit('[
...
-ContextRootStep [
[bundle_symbolic_name_1 bundle_version_1 context_root_1]
[bundle_symbolic_name_2 bundle_version_2 context_root_2]]
...
]')
对于组合捆绑软件,捆绑软件符号名称具有以下语法:CBA.symbolic.name_CBA.bundle.version/WAB.symbolic.name
例如,对于包含两个 WAB (com.ibm.ws.eba.helloWorldService.web 版本为 1.0.0,将映射到 /hello/web; com.ibm.ws.eba.helloWorldService.withContextRoot 版本为 0.9.0,将映射到 /hello/service) 的版本为 1.0.0 的组合捆绑软件 com.ibm.ws.eba.helloWorldCBA ,此命令的这一方面如下所示:AdminTask.addCompUnit('[
...
-ContextRootStep [
[com.ibm.ws.eba.helloWorldCBA_1.0.0/com.ibm.ws.eba.helloWorldService.web 1.0.0
"/hello/web"]
[com.ibm.ws.eba.helloWorldCBA_1.0.0/com.ibm.ws.eba.helloWorldService.withContextRoot 0.9.0
"/hello/service"]]
...
]')
- 绑定组合捆绑软件中消息驱动的 bean 的侦听器
此命令方面的 Jython 语法如下所示。
AdminTask.addCompUnit('[
...
-MDBBindingsStep [
[bundle_symbolic_name_1 bundle_version_1 uri_1
activation_spec_1 destination_jndi_name_1 authentication_alias_1]
[bundle_symbolic_name_2 bundle_version_2 uri_2
activation_spec_2 destination_jndi_name_2 authentication_alias_2]]
...
]')
对于组合捆绑软件,捆绑软件符号名称具有以下语法:CBA.symbolic.name_CBA.bundle.version/EJBbundle.symbolic.name
在以下示例中,版本为 1.0.0的组合捆绑软件 com.ibm.ws.eba.financeCBA包含两个 EJB 捆绑软件: com.ibm.ws.eba.currencyService 版本为 1.0.0, com.ibm.ws.eba.accountService 版本为 0.9.0。 currencyService 捆绑软件包含名为 ExchangeRateMDB 的消息驱动的 bean(绑定至 JNDI 名称为 eis/ExchangeRate_Act_Spec 的激活规范);激活规范中定义的目标 JNDI 名称被 JNDI 名称为 jms/ExchangeRateQueue 的目标覆盖,而激活规范中定义的认证别名被名为 ExchangeRate_Auth_Alias 的认证别名覆盖。 accountService 捆绑软件包含名为 CustomerDetailsMDB的 MDB ,该 MDB 与 JNDI 名称为 eis/CustomerDetails_Act_Spec的激活规范绑定; 在激活规范中定义的目标 JNDI 名称将被其 JNDI 名称为 jms/CustomerDetailsQueue的目标覆盖,而在激活规范中定义的认证别名将被名为 CustomerDetails_Auth_Alias的认证别名覆盖。AdminTask.addCompUnit('[
...
-MDBBindingsStep [
[com.ibm.ws.eba.financeCBA_1.0.0/com.ibm.ws.eba.currencyService 1.0.0
META-INF/ejb-jar.xml/ExchangeRateMDB eis/ExchangeRate_Act_Spec
jms/ExchangeRateQueue ExchangeRate_Auth_Alias]
[com.ibm.ws.eba.financeCBA_1.0.0/com.ibm.ws.eba.accountService 0.9.0
META-INF/ejb-jar.xml/CustomerDetailsMDB eis/CustomerDetails_Act_Spec
jms/CustomerDetailsQueue CustomerDetails_Auth_Alias]]
...
]')
- 在组合捆绑软件中提供 EJB JNDI 名称
此命令方面的 Jython 语法如下所示。
AdminTask.addCompUnit('[
...
-EJBMappingsStep [
[bundle_symbolic_name_1 bundle_version_1 ejb_name_1
ejb_interface_1 ejb_interface_type_1 jndi_name_1]
[bundle_symbolic_name_2 bundle_version_2 ejb_name_2
ejb_interface_2 ejb_interface_type_2 jndi_name_2]]
...
]')
对于组合捆绑软件,捆绑软件符号名称具有以下语法:CBA.symbolic.name_CBA.bundle.version/EJBbundle.symbolic.name
在以下示例中,版本为 1.0.0的组合捆绑软件 com.ibm.ws.eba.financeCBA包含两个 EJB 捆绑软件: com.ibm.ws.eba.currencyService 版本为 1.0.0, com.ibm.ws.eba.accountService 版本为 0.9.0。 currencyService 捆绑软件包含名为 ExchangeRate_ejb 的企业 bean(具有名为 com.ibm.ws.eba.ejb.ExchangeRate 的本地接口),该 EJB 被映射至 JNDI 名称 ejb/ExchangeRate。 accountService 捆绑软件包含名为 CustomerDetails_ejb的企业 Bean 以及名为 com.ibm.ws.eba.ejb.CustomerDetails的远程接口,该接口映射到 JNDI 名称 ejb/CustomerDetails。AdminTask.addCompUnit('[
...
-EJBMappingsStep [
[com.ibm.ws.eba.financeCBA_1.0.0/com.ibm.ws.eba.currencyService 1.0.0 ExchangeRate_ejb
com.ibm.ws.eba.ejb.ExchangeRate Local ejb/ExchangeRate]
[com.ibm.ws.eba.financeCBA_1.0.0/com.ibm.ws.eba.accountService 0.9.0 CustomerDetails_ejb
com.ibm.ws.eba.ejb.CustomerDetails Remote ejb/CustomerDetails]]
...
]')
- 映射组合捆绑软件中的 EJB 引用
此命令方面的 Jython 语法如下所示。
AdminTask.addCompUnit('[
...
-EJBRefStep [
[bundle_symbolic_name_1 bundle_version_1 uri_1
ejb_reference_name_1 business_interface_1 jndi_name_1]
[bundle_symbolic_name_2 bundle_version_2 uri_2
ejb_reference_name_2 business_interface_2 jndi_name_2]]
...
]')
uri 参数指定定义 EJB 引用的位置。
对于组合捆绑软件,捆绑软件符号名称具有以下语法:CBA.symbolic.name_CBA.bundle.version/EJBbundle.symbolic.name
在以下示例中,版本为 1.0.0的组合捆绑软件 com.ibm.ws.eba.financeCBA包含两个捆绑软件: com.ibm.ws.eba.currencyService 版本为 1.0.0, com.ibm.ws.eba.accountService 版本为 0.9.0。 currencyService 捆绑软件包含名为 ExchangeRate 的 EJB 引用(从 META-INF/ejb-jar.xml 中定义的 CurrencyExchange 企业 bean 映射至 JNDI 名称 ejb:ExchangeRate)。 accountService 捆绑软件包含名为 CustomerDetails的 EJB 引用 (在 web.xml中定义) ,该 EJB 引用映射到 JNDI 名称 ejb:CustomerDetails。AdminTask.addCompUnit('[
...
-EJBRefStep [
[com.ibm.ws.eba.financeCBA_1.0.0/com.ibm.ws.eba.currencyService 1.0.0
META-INF/ejb-jar.xml/CurrencyExchange ExchangeRate com.ibm.ws.eba.ejb.ExchangeRate
ejb:ExchangeRate]
[com.ibm.ws.eba.financeCBA_1.0.0/com.ibm.ws.eba.accountService 0.9.0
WEB-INF/web.xml CustomerDetails com.ibm.ws.eba.ejb.CustomerDetails ejb:CustomerDetails]]
...
]')
- 将 EJB 资源引用映射到组合捆绑软件中的资源
该命令在此情况下的 Jython 语法如下所示AdminTask.addCompUnit('[
...
-EJBResourceRefs [
[
bundle_symbolic_name
bundle_version
ejb_name
resource_reference_id
resource_type
target_jndi_name
resource_authentication_method
mapping_properties
extended_properties
]]
...
]')
mapping_properties 参数采用以下格式(一个连续字符串)定义扩展数据源属性的任意名称/值对:
WebSphere:name=property_name1,value=property_value1,description=property_description1
+WebSphere:name=property_name2,value=property_value2,description=property_description2
+ ...
extended_properties 参数采用以下格式(一个连续字符串)定义扩展数据源定制属性:
property_name1=property_value1+property_name2=property_value2+ ...
对于组合捆绑软件,捆绑软件符号名称具有以下语法:CBA.symbolic.name_CBA.bundle.version/EJBBundle.symbolic.name
例如:
AdminTask.addCompUnit('[
...
-EJBResourceRefs [
[com.ibm.ws.eba.financeCBA_1.0.0/com.ibm.ws.eba.currencyService 1.0.0
ExchangeRate dataSource1 javax.sql.DataSource ref/ds1 ClientContainer
"WebSphere:name=mprop1,value=val1,description=desc1"
"exprop1=expropval1+exprop2=expropval2"]
[com.ibm.ws.eba.financeCBA_1.0.0/com.ibm.ws.eba.accountService 0.9.0
CustomerDetails dataSource2 javax.sql.DataSource ref/ds2 WSLogin "" ""]]
...
]')
- 将 EJB 消息目标引用绑定到组合捆绑软件中的受管对象。
该命令在此情况下的 Jython 语法如下所示AdminTask.addCompUnit('[
...
-EJBMsgDestRefs [
[
bundle_symbolic_name
bundle_version
ejb_name
resource_reference_id
resource_type
target_jndi_name
]]
...
]')
对于组合捆绑软件,捆绑软件符号名称具有以下语法:CBA.symbolic.name_CBA.bundle.version/EJBBundle.symbolic.name
例如:
AdminTask.addCompUnit('[
...
-EJBMsgDestRefs [
[com.ibm.ws.eba.financeCBA_1.0.0/com.ibm.ws.eba.currencyService 1.0.0
ExchangeRate jms/myQ javax.jms.Queue jms/workQ]
[com.ibm.ws.eba.financeCBA_1.0.0/com.ibm.ws.eba.accountService 0.9.0
CustomerDetails jms/myT javax.jms.Topic jms/notificationTopic]]
...
]')
- 映射组合捆绑软件中的 EJB 环境条目。
该命令在此情况下的 Jython 语法如下所示AdminTask.addCompUnit('[
...
-EJBEnvEntryStep [
[
bundle_symbolic_name
bundle_version
ejb_name
env_entry_name
env_entry_type
env_entry_description
env_entry_value
]]
...
]')
对于组合捆绑软件,捆绑软件符号名称具有以下语法:CBA.symbolic.name_CBA.bundle.version/EJBBundle.symbolic.name
例如:
AdminTask.addCompUnit('[
...
-EJBEnvEntryStep [
[com.ibm.ws.eba.financeCBA_1.0.0/com.ibm.ws.eba.currencyService 1.0.0
ExchangeRate CommissionRate java.lang.Double
"Commission rate applied to currency exchange transactions." 5.75]]
...
]')
- 映射组合捆绑软件中 Web 模块的虚拟主机。
该命令的此方面的 Jython 语法如下:
AdminTask.addCompUnit('[
...
-VirtualHostMappingStep [
[bundle_symbolic_name_1 bundle_version_1
web_module_name_1 virtual_host_1]
[bundle_symbolic_name_2 bundle_version_2
web_module_name_2 virtual_host_2]]
...
]')
对于组合捆绑软件,捆绑软件符号名称具有以下语法:CBA.symbolic.name_CBA.bundle.version/WAB.symbolic.name
例如,对于包含两个 WAB (com.ibm.ws.eba.helloWorldService.web 版本为 1.0.0,将映射到 default_host; com.ibm.ws.eba.helloWorldService.withContextRoot 版本为 0.9.0,将映射到 test_host) 的版本为 1.0.0 的组合捆绑软件 com.ibm.ws.eba.helloWorldCBA ,此命令的这一方面如下所示:AdminTask.addCompUnit('[
...
-VirtualHostMappingStep [
[com.ibm.ws.eba.helloWorldCBA_1.0.0/com.ibm.ws.eba.helloWorldService.web
1.0.0 "HelloWorld service" default_host]
[com.ibm.ws.eba.helloWorldCBA_1.0.0/com.ibm.ws.eba.helloWorldService.withContextRoot
0.9.0 "HelloWorld second service" test_host]]
...
]')
- 将认证别名添加到组合捆绑软件中的 "蓝图" 资源引用。
此命令方面的 Jython 语法如下所示。
AdminTask.addCompUnit('[
...
-BlueprintResourceRefBindingStep [
[
bundle_symbolic_name
bundle_version
blueprint_resource_reference_id
interface_name
jndi_name
authentication_type
sharing_setting
authentication_alias_name
]]
...
]')
例如,对于版本为 1.0.0 的组合捆绑软件 com.ibm.ws.eba.helloWorldCBA ,其中包含要与认证别名 alias1绑定的版本为 1.0.0的捆绑软件 com.ibm.ws.eba.helloWorldService.properties.bundle.jar ,命令如下所示:AdminTask.addCompUnit('[
...
-BlueprintResourceRefBindingStep[
[com.ibm.ws.eba.helloWorldCBA_1.0.0/com.ibm.ws.eba.helloWorldService.properties.bundle
1.0.0 resourceRef javax.sql.DataSource jdbc/Account Container Shareable alias1]]
...
]')
- 将 Web 模块消息目标引用绑定到组合捆绑软件中的受管对象。
该命令在此情况下的 Jython 语法如下所示AdminTask.addCompUnit('[
...
-WebModuleMsgDestRefs [
[
bundle_symbolic_name
bundle_version
resource_reference_id
resource_type
target_jndi_name
]]
...
]')
对于组合捆绑软件,捆绑软件符号名称具有以下语法:CBA.symbolic.name_CBA.bundle.version/WAB.symbolic.name
例如:
AdminTask.addCompUnit('[
...
-WebModuleMsgDestRefs [
[com.ibm.ws.eba.helloWorldCBA_1.0.0/com.ibm.ws.eba.helloWorldService.web
1.0.0
jms/myQ javax.jms.Queue
jms/workQ]
[com.ibm.ws.eba.helloWorldCBA_1.0.0/com.ibm.ws.eba.helloWorldService.web
1.0.0
jms/myT javax.jms.Topic
jms/notificationTopic]]
...
]')
- 将 Web 模块资源引用映射到组合捆绑软件中的资源。
此命令方面的 Jython 语法如下所示。
AdminTask.addCompUnit('[
...
-WebModuleResourceRefs [
[
bundle_symbolic_name
bundle_version
resource_reference_id
resource_type
target_jndi_name
login_configuration
login_properties
extended_properties
]]
...
]')
对于组合捆绑软件,捆绑软件符号名称具有以下语法:CBA.symbolic.name_CBA.bundle.version/WAB.symbolic.name
例如:
AdminTask.addCompUnit('[
...
-WebModuleResourceRefs [
[com.ibm.ws.eba.helloWorldCBA_1.0.0/com.ibm.ws.eba.helloWorldService.web
1.0.0
jdbc/jtaDs javax.sql.DataSource
jdbc/helloDs "" "" ""]
[com.ibm.ws.eba.helloWorldCBA_1.0.0/com.ibm.ws.eba.helloWorldService.web
1.0.0
jdbc/nonJtaDs javax.sql.DataSource
jdbc/helloDsNonJta "" "" "extprop1=extval1"]]
...
]')
注:
- 如果使用多个扩展属性,那么 jython 语法为
"extprop1=extval1,extprop2=extval2"。
- 对于组合捆绑软件之外的捆绑软件,语法略有不同。 请参阅 步骤: 将 Web 模块资源引用映射到资源。
示例
在以下示例中,先前步骤中的 jython 语法与
使用 wsadmin 命令将 EBA 资产添加到组合单元 中描述的其他步骤组合在一起,以便通过仅运行一次
addCompUnit 命令,创建组合单元并将其添加到业务级应用程序。 在该示例中,EBA 文件
com.ibm.ws.eba.helloWorldService.eba 包含符号名称为
com.ibm.ws.eba.helloWorldCBA 且版本为
1.0.0 的组合捆绑软件。 此组合捆绑软件包含两个 WAB:
com.ibm.ws.eba.helloWorldService.web (V1.0.0)
com.ibm.ws.eba.helloWorldService.withContextRoot (V0.9.0)
该组合捆绑软件还包含符号名称为
com.ibm.ws.eba.helloWorldService.properties.bundle 且版本为 1.0.0 的捆绑软件。
AdminTask.addCompUnit('[
-blaID WebSphere:blaname=helloWorldService
-cuSourceID WebSphere:assetname=com.ibm.ws.eba.helloWorldService.eba
-CUOptions [
[WebSphere:blaname=helloWorldService.eba
WebSphere:assetname=com.ibm.ws.eba.helloWorldService.eba
com.ibm.ws.eba.helloWorldService_0001.eba "" 1 false DEFAULT]]
-MapTargets [[ebaDeploymentUnit WebSphere:cluster=cluster1]]
-ActivationPlanOptions [[default ""]]
-ContextRootStep [
[com.ibm.ws.eba.helloWorldCBA_1.0.0/com.ibm.ws.eba.helloWorldService.web 1.0.0
"/hello/web"]
[com.ibm.ws.eba.helloWorldCBA_1.0.0/com.ibm.ws.eba.helloWorldService.withContextRoot 0.9.0
"/hello/service"]]
-EJBMappingsStep [
[com.ibm.ws.eba.financeCBA_1.0.0/com.ibm.ws.eba.currencyService 1.0.0 ExchangeRate_ejb
com.ibm.ws.eba.ejb.ExchangeRate Local ejb/ExchangeRate]
[com.ibm.ws.eba.financeCBA_1.0.0/com.ibm.ws.eba.accountService 0.9.0 CustomerDetails_ejb
com.ibm.ws.eba.ejb.CustomerDetails Remote ejb/CustomerDetails]]
-EJBRefStep [
[com.ibm.ws.eba.financeCBA_1.0.0/com.ibm.ws.eba.currencyService 1.0.0
META-INF/ejb-jar.xml/CurrencyExchange ExchangeRate com.ibm.ws.eba.ejb.ExchangeRate
ejb:ExchangeRate]
[com.ibm.ws.eba.financeCBA_1.0.0/com.ibm.ws.eba.accountService 0.9.0
WEB-INF/web.xml CustomerDetails com.ibm.ws.eba.ejb.CustomerDetails ejb:CustomerDetails]]
-EJBResourceRefs [
[com.ibm.ws.eba.financeCBA_1.0.0/com.ibm.ws.eba.currencyService 1.0.0
ExchangeRate dataSource1 javax.sql.DataSource ref/ds1 ClientContainer
"WebSphere:name=mprop1,value=val1,description=desc1"
"exprop1=expropval1+exprop2=expropval2"]
[com.ibm.ws.eba.financeCBA_1.0.0/com.ibm.ws.eba.accountService 0.9.0
CustomerDetails dataSource2 javax.sql.DataSource ref/ds2 WSLogin "" ""]]
-EJBMsgDestRefs [
[com.ibm.ws.eba.financeCBA_1.0.0/com.ibm.ws.eba.currencyService 1.0.0
ExchangeRate jms/myQ javax.jms.Queue jms/workQ]
[com.ibm.ws.eba.financeCBA_1.0.0/com.ibm.ws.eba.accountService 0.9.0
CustomerDetails jms/myT javax.jms.Topic jms/notificationTopic]]
-VirtualHostMappingStep [
[com.ibm.ws.eba.helloWorldCBA_1.0.0/com.ibm.ws.eba.helloWorldService.web
1.0.0 "HelloWorld service" default_host]
[com.ibm.ws.eba.helloWorldCBA_1.0.0/com.ibm.ws.eba.helloWorldService.withContextRoot
0.9.0 "HelloWorld second service" test_host]]
-MapRolesToUsersStep [
[ROLE1 No Yes "" ""]
[ROLE2 No No WABTestUser1 ""]
[ROLE3 No No "" WABTestGroup1]
[ROLE4 Yes No "" ""]]
-MapRunAsRolesToUsersStep [
[Role1 User1 password1]
[AdminRole User3 password3]]
-BlueprintResourceRefBindingStep[
[com.ibm.ws.eba.helloWorldCBA_1.0.0/com.ibm.ws.eba.helloWorldService.properties.bundle
1.0.0 resourceRef javax.sql.DataSource jdbc/Account Container Shareable alias1]]
-WebModuleMsgDestRefs [
[com.ibm.ws.eba.helloWorldCBA_1.0.0/com.ibm.ws.eba.helloWorldService.web
1.0.0
jms/myQ javax.jms.Queue
jms/workQ]
[com.ibm.ws.eba.helloWorldCBA_1.0.0/com.ibm.ws.eba.helloWorldService.web
1.0.0
jms/myT javax.jms.Topic
jms/notificationTopic]]
-WebModuleResourceRefs [
[com.ibm.ws.eba.helloWorldCBA_1.0.0/com.ibm.ws.eba.helloWorldService.web
1.0.0
jdbc/jtaDs javax.sql.DataSource
jdbc/helloDs "" "" ""]
[com.ibm.ws.eba.helloWorldCBA_1.0.0/com.ibm.ws.eba.helloWorldService.web
1.0.0
jdbc/nonJtaDs javax.sql.DataSource
jdbc/helloDsNonJta "" "" "extprop1=extval1"]]
]')