创建部署计划
部署计划是JSR-88部署标准的一部分,尽管在该标准中未明确说明。 部署计划是一个XML文档,用于定义自定义WebLogic Server部署环境。 此配置可用于覆盖在应用程序归档文件中定义的特定设置。
有许多原因可能导致您不希望修改应用程序存档的原因,其中之一就是测试。 例如,如果您已经成功完成了对特定版本应用程序的测试,则希望在环境之间保持应用程序存档不变,这样您就可以更有信心地确定应用程序在多个环境中的行为与所推广的相同。 另一个原因可能是可移植性。 您可以拥有一个不带专有部署描述符的通用JEE应用程序存档,并将所有这些专有部署描述符值放在该存档之外。
创建部署计划有几种选择:首先,将环境设置为包括WLS类路径:
C:\wls1211_dev\user_projects\domains\base_domain\bin>setDomainEnv.cmd
然后,您可以使用PlanGenerator实用程序为您的应用程序创建部署计划
java weblogic.PlanGenerator -all WLSDemo.earGenerating plan for application WLSDemo.ear
Export option is: all
Exporting properties...
Saving plan to C:\wls1211_dev\user_projects\domains\base_domain\bin\plan.xml...
<8-ago-2012 11.52.48 CEST> <Info> <J2EE Deployment SPI> <BEA-260072> <Saved configuration for application, WLSDemo.ear>
让我们检查文件plan.xml ,其中包含所有应用程序特定的设置。 我们不会在此处包含整个plan.xml文件,这非常冗长; 但是,我们将作为示例介绍如何自定义其中包含的一些参数。
部署计划是一个XML文件,该文件基本上使用唯一名称定义一些变量,并将变量值分配给自定义部署描述符的特定元素。 使用XPath表达式来引用特定的XML元素。
示例:定制Web应用程序根上下文
打开文件plan.xml文件,并使用文本编辑器进行编辑。 接下来,找到以下<variable>元素:
<variable><name>WeblogicWebApp_ContextRoots_xxxxxxxxxxxxxx</name><value xsi:nil="true"></value>
</variable>
请注意,xxxxxxxxxxxxxx实际上将是计划生成器创建的唯一标识符,以便为变量定义唯一名称。 在下面的示例中,我们将其替换为有意义的名称,该名称将通过文件进行引用。
现在,编辑上面的代码段部分,使其如下所示:
<variable><name>WeblogicWebApp_CustomContext</name><value>/newcontext</value>
</variable>
在文件的下方,找到<variable-assignment>元素,该元素指向“ weblogic-web-app / context-root” XPath表达式,并将变量名称更改为:“ WeblogicWebApp_CustomContext”,以使其与您的变量匹配:
<variable-assignment><name>WeblogicWebApp_CustomContext</name><xpath>weblogic-web-app/context-root</xpath><origin>planbased</origin><operation>replace</operation>
</variable-assignment>
还要注意,我们在其中包括了一个附加的“替换”操作,该操作显然将用新的替换默认上下文(“ / newcontext”)。
保存plan.xml文件。 我们刚刚所做的是重写WebLogic Server Web应用程序部署描述符weblogic.xml中的context-root元素。 新的上下文根是“ newcontext”。
很好,现在切换到管理控制台,然后从“ 部署”菜单中选择更新应用程序。
单击与部署计划路径关联的“ 更改路径”按钮,如下所示:
现在,为新的plan.xml文件选择单选按钮,然后单击“下一步”。 如有必要,请使用“当前位置”字段旁边的超链接导航到<APP_HOME>目录。
在下一个屏幕中,选择单选按钮“使用以下部署文件重新部署此应用程序”。 然后单击完成。 现在,应该可以使用新的Web上下文(newcontext)访问您的应用程序。
示例:定制JDBC模块
我们介绍的第一个示例是创建更多自定义项的良好起点。 一个实际的示例可能是提供一个部署计划,该计划将更新应用程序一部分JDBC模块中包含的信息。 您的应用程序可能会分布在使用不同数据库的不同环境(开发/生产/测试)中。 例如:
<wls:resource-description><wls:res-ref-name>JDBCOracleModule</wls:res-ref-name><wls:jndi-name>jdbc/OracleModule</wls:jndi-name>
</wls:resource-description>
在此示例中,如果要更改绑定JDBC模块的JNDI名称,则需要修改定义JNDI名称的XML描述符。
通过使用部署计划,您可以简单地在plan.xml中修改JDBC资源的值并相应地更新应用程序。 假设我们要在将应用程序移植到生产环境中时,通过将其从“ jdbc / OracleModule ”更改为“ jdbc / ProductionOracleModule”来更改示例TestEJB的JNDI绑定。
首先使用PlanGenerator实用程序生成plan.xml部署计划。 现在打开您的plan.xml并在变量中为数据源设置value元素:
<variable> <name>MyDataSource_binding</name> <value>jdbc/ProductionOracleModule</value>
</variable>
需要在相应的变量分配节中引用上述变量名(“ MyDataSource_binding”),该节为您的资源设置正确的JNDI绑定:
<module-override><module-name>TestEJB.jar</module-name>. . . . .<uri>META-INF/weblogic-ejb-jar.xml</uri><variable-assignment><name>MyDataSource_binding</name><xpath>/weblogic-ejb-jar/weblogic-enterprise-bean/[ejb-name="TestEJB"]/resource-description/[res-ref-name="MyDataSource"]/jndi-name</xpath></variable-assignment></module-descriptor>
</module-override>
如果在Web应用程序中也引用了数据源,比如说将其注入到Servlet中,该怎么办? 别担心! 您还可以为Web模块提供模块替代 ; 在这种情况下,我们将覆盖weblogic.xml:
<module-override><module-name>wls.war</module-name>. . . .<uri>WEB-INF/weblogic.xml</uri><variable-assignment><name>MyDataSource_binding</name><xpath>/weblogic-web-app/resource-description/[res-ref-name="jdbc/ ProductionOracleModule "]/res-ref-name</xpath><origin>planbased</origin></variable-assignment></module-descriptor>
</module-override>
使用管理控制台生成部署计划
如果您不想使用命令行来生成部署计划,则可以使用管理控制台来执行此步骤。 从“部署”选项导航到您的应用程序:
然后单击您的应用程序,然后移至“ 配置”选项卡。 在屏幕的下部,您将能够更改应用程序设置,例如上下文根路径。 将此值更改为新的上下文路径并保存。
修改配置的某些值后,部署计划助手将启动,要求您将这些更改保存在部署计划中。 您要做的就是为文件提供一个方便的位置(强烈建议使用名称plan.xml )。
最后一步将是自定义plan.xml文件,如我们先前所示,并使用该文件更新您的应用程序。
此摘录摘自“ 企业应用服务器指南 ”,该实用手册是易于理解的实用指南,讨论了Java EE市场中的三个主要行业应用服务器: Oracle Weblogic , JBoss EAP和IBM Websphere 。 本书包括600页方便的食谱,有望以令人愉悦的风格教您有关这三种应用服务器的全部知识,并包括它们之间的详细比较。
翻译自: https://www.javacodegeeks.com/2013/10/creating-deployment-plans-with-oracle-weblogic.html