能否通过WebLogic部署计划修改weblogic.xml中的library-ref描述符?
可以通过部署计划修改weblogic.xml的库描述符,你的问题出在plan.xml的配置错误
完全可以用WebLogic部署计划(plan.xml)修改weblogic.xml中的library-ref配置,你遇到的部署错误是因为plan.xml里的XPath表达式和操作配置有误,导致替换未生效,WebLogic仍在尝试引用原库。
问题分析
- XPath语法错误:你写的
/weblogic-web-app/library-ref/[library-name="lib_framework"]不符合XPath规范,无法正确定位到目标节点。 - 命名空间缺失:weblogic.xml中使用了
wls命名空间,XPath必须带上对应前缀才能匹配到节点。 - 操作定位偏差:如果只是替换库名称,需要定位到
library-name元素而非整个library-ref节点。
修正后的plan.xml配置方案
方案一:仅替换库名称
<deployment-plan xmlns="http://xmlns.oracle.com/weblogic/deployment-plan" xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <variable> <name>var_lib_framework_name</name> <value>lib_framework_replace</value> </variable> <module-descriptor external="false"> <root-element>weblogic-web-app</root-element> <uri>WEB-INF/weblogic.xml</uri> <variable-assignment> <name>var_lib_framework_name</name> <!-- 正确定位到原library-name元素,带上命名空间前缀 --> <xpath>/weblogic-web-app/library-ref[wls:library-name="lib_framework"]/wls:library-name</xpath> <operation>replace</operation> </variable-assignment> </module-descriptor> </deployment-plan>
方案二:替换整个library-ref节点(如需修改版本号等其他属性)
<deployment-plan xmlns="http://xmlns.oracle.com/weblogic/deployment-plan" xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <variable> <name>var_full_lib_ref</name> <value><![CDATA[ <wls:library-ref> <wls:library-name>lib_framework_replace</wls:library-name> <wls:specification-version>1.0.0</wls:specification-version> <wls:implementation-version>1.0.0</wls:implementation-version> <wls:exact-match>false</wls:exact-match> </wls:library-ref> ]]></value> </variable> <module-descriptor external="false"> <root-element>weblogic-web-app</root-element> <uri>WEB-INF/weblogic.xml</uri> <variable-assignment> <name>var_full_lib_ref</name> <xpath>/weblogic-web-app/library-ref[wls:library-name="lib_framework"]</xpath> <operation>replace</operation> </variable-assignment> </module-descriptor> </deployment-plan>
额外注意事项
- 确保目标库
lib_framework_replace已经正确部署到WebLogic服务器,版本与引用要求匹配,否则仍会出现未解析引用错误。 - 部署时必须指定使用该计划文件:
java weblogic.Deployer -adminurl t3://localhost:7001 -user weblogic -password password -deploy -name myapp -source ./myapp.war -plan ./plan.xml
内容的提问来源于stack exchange,提问作者Brian Jm
相关产品推荐
相关产品推荐

