我有以下问题。我将WAR应用程序部署到多个环境。每个环境都有自己的主体名称,我想使用部署计划提供给WAR。 WAR应用程序包含用于将角色映射到主体的默认用户和weblogic.xml,如下所示:
...
<run-as-role-assignment>
<role-name>sampleRole</role-name>
<run-as-principal-name>defaultUser</run-as-principal-name>
</run-as-role-assignment>
...
用于在run-as-principal-name元素中替换值的部署计划如下:
<deployment-plan>
...
<variable-definition>
<variable>
<name>runAsIdentity</name>
<value>someEnvironmentSpecificUser</value>
</variable>
</variable-definition>
<module-override>
<module-descriptor external="false">
<root-element>weblogic-web-app</root-element>
<uri>WEB-INF/weblogic.xml</uri>
...
<variable-assignment>
<name>runAsIdentity</name>
<xpath>/weblogic-web-app/run-as-role-assignment/run-as-principal-name</xpath>
<operation>replace</operation>
</variable-assignment>
</module-descriptor>
</module-override>
</deployment-plan>
Principal defaultUser不存在于我的目标环境中,但someEnvironmentSpecificUser存在。但是,我无法覆盖weblogic.xml中的值,并且在部署期间会出现以下错误:
weblogic.management.DeploymentException: [HTTP:101256]The run-as user: defaultUser for the servlet: spring-ws for Web application: /sampleApp could not be resolved to a valid user in the system. Verify the user exists.
正如我上面所写,用户存在,xpath是正确的,但覆盖不起作用。如果我在weblogic.xml中更正用户并直接将替换someEnvironmentSpecificUser放在那里,一切都运行良好。
有人知道为什么会这样吗?有一些限制,例如我不能覆盖run-as-principal-name元素?看起来用户在实际更换之前已经过验证(如果甚至是部署计划执行了一次)。
感谢任何帮助/建议。 THX。