使用Oracle WebLogic创建部署计划

创建部署计划

部署计划是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”。

很好,现在切换到管理控制台,然后从“ 部署”菜单中选择更新应用程序。

单击与部署计划路径关联的“ 更改路径”按钮,如下所示:

1个

现在,为新的plan.xml文件选择单选按钮,然后单击“下一步”。 如有必要,请使用“当前位置”字段旁边的超链接导航到<APP_HOME>目录。

2

在下一个屏幕中,选择单选按钮“使用以下部署文件重新部署此应用程序”。 然后单击完成。 现在,应该可以使用新的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>

使用管理控制台生成部署计划

如果您不想使用命令行来生成部署计划,则可以使用管理控制台来执行此步骤。 从“部署”选项导航到您的应用程序:

3

然后单击您的应用程序,然后移至“ 配置”选项卡。 在屏幕的下部,您将能够更改应用程序设置,例如上下文根路径。 将此值更改为新的上下文路径并保存。

4

修改配置的某些值后,部署计划助手将启动,要求您将这些更改保存在部署计划中。 您要做的就是为文件提供一个方便的位置(强烈建议使用名称plan.xml )。

5

最后一步将是自定义plan.xml文件,如我们先前所示,并使用该文件更新您的应用程序。

http://www.itbuzzpress.com/ 此摘录摘自“ 企业应用服务器指南 ”,该实用手册是易于理解的实用指南,讨论了Java EE市场中的三个主要行业应用服务器: Oracle WeblogicJBoss EAPIBM Websphere 。 本书包括600页方便的食谱,有望以令人愉悦的风格教您有关这三种应用服务器的全部知识,并包括它们之间的详细比较。

翻译自: https://www.javacodegeeks.com/2013/10/creating-deployment-plans-with-oracle-weblogic.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367058.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录一个前端架构的想法

前端&#xff0c;真的是让我哭笑不得的职业&#xff0c;从几年前作为打酱油的理想职业到现在的热门职业&#xff0c;无疑在这个过程中&#xff0c;门槛变高了&#xff0c;而且还是非常高。一大堆的框架和库&#xff0c;像什么vue啦、react啦、angular啦、webpack啦等等等等。让…

java 编程原理_Java网络编程 -- 网络编程基础原理

Hello&#xff0c;今天记录下 Java网络编程 --> 网络编程基础原理。一起学习&#xff0c;一起进步。继续沉淀&#xff0c;慢慢强大。希望这文章对您有帮助。若有写的不好的地方&#xff0c;欢迎评论给建议哈&#xff01;初写博客不久&#xff0c;我是杨展浩。这是我的第十五…

JavaScript基础之--- 深拷贝与浅拷贝

理解深拷贝和浅拷贝之前&#xff0c;先来看一下JavaScript的数据类型。 1、基本类型和引用类型 //案例1 var num1 1, num2 num1; console.log(num1) //1 console.log(num2) //1 num2 2; //修改num2 console.log(num1) //1 console.log(num2) //2 //案例2 var obj1 {x: 1, …

vue菜鸟从业记:完成项目最后一公里之真机测试和打包上线

最近我朋友王小闰他们公司的项目开发已经进入收尾阶段&#xff0c;前后端并行开发的差不多了&#xff0c;联调也调过了&#xff0c;上篇文章里也讲到了&#xff0c;所谓联调&#xff0c;就仿佛在说“我也不知道我的接口文档写的对不对&#xff0c;我们验证一下吧&#xff1f;我…

血淋淋的事实告诉你:你为什么不应该在JS文件中保存敏感信息

在JavaScript文件中存储敏感数据&#xff0c;不仅是一种错误的实践方式&#xff0c;而且还是一种非常危险的行为&#xff0c;长期以来大家都知道这一点。 而原因也非常简单&#xff0c;我们可以假设你为你的用户动态生成了一个包含API密钥的JavaScript文件&#xff1a; apiCall…

从零开始搭建一个vue.js的脚手架

在谷歌工作的时候&#xff0c;我们要做很多界面的原型&#xff0c;要求快速上手&#xff0c;灵活运用&#xff0c;当时用的一些现有框架&#xff0c;比如angular&#xff0c;太笨重了——尤雨溪&#xff08;Vue.js 作者&#xff09; vue.js是现在一个很火的前端框架&#xff0c…

更安全的Web通信HTTPS

1. HTTP协议存在的问题 阅读本篇需要对HTTP协议有最基本的了解。 借用《图解密码技术》里的图片&#xff0c;我们以如下一个购物场景开始介绍&#xff1a; 在网购过程中&#xff0c;如果使用纯粹的HTTP协议&#xff0c;那么用户的账号密码&#xff0c;信用卡&#xff0c;银行卡…

CSS入门指南——页面的水平居中

我们经常看到这样的网页&#xff0c;即内容水平居中在屏幕中间&#xff0c;左右留白。我们来给这样的布局起个名字——水平居中布局 其实要实现这样的布局十分简单&#xff0c;即给中间部分一个宽度&#xff0c;设置margin左右值为auto,如&#xff0c;中间部分class"main&…

mysql explain的使用

一、explain返回各列的含义&#xff1a; 1、table&#xff1a;显示这一行的数据是关于那张表的 2、type&#xff1a;重要的列&#xff0c;显示连接使用了何种类型&#xff0c;从最好到最差的连接类型为const、eq_reg、ref、range、index、ALL 3、possible_keys&#xff1a;显示…

使用 Canvas 生成公众号头图

熟悉“前端晚自修”的朋友们应该知道&#xff0c;我们每期的头图除了上面的文字随着每期变动以外&#xff0c;几乎是一模一样的&#xff08;因为太懒了~&#xff09;。这个头图虽然丑了一点&#xff0c;但是也还说的过去&#xff0c;毕竟是我倾尽毕生艺术细胞拼出来的&#xff…

Flask mysql 模版传参_Flask渲染Jinja2模板和传参

### Flask渲染Jinja2模板和传参&#xff1a;1. 如何渲染模板&#xff1a;* 模板放在templates文件夹下* 从flask中导入render_template函数。* 在视图函数中&#xff0c;使用render_template函数&#xff0c;渲染模板。注意&#xff1a;只需要填写模板的名字&#xff0c;不需要…

08 Spring框架 AOP (一)

首先我们先来介绍一下AOP&#xff1a; AOP&#xff08;Aspect Orient Programming&#xff09;&#xff0c;面向切面编程&#xff0c;是面向对象编程OOP的一种补充。 面向对象编程是从静态角度考虑程序的结构&#xff0c;面向切面编程是从动态的角度考虑程序运行过程。 AOP底层…

移动spa商城优化记(一)---首屏优化篇

背景 随着公司业务的不断壮大&#xff0c;最近老是有用户反应公司APP内的商城打开比较慢&#xff0c;这可不行啊&#xff0c;慢了容易流失用户&#xff0c;流失用户减少公司业绩&#xff0c;公司业绩少我的年终奖就少…………&#xff0c;所以为了公司&#xff0c;也为了自己&a…

hprose for java 教程_hprose for java源码分析-4

4.1 疑窦丛生书接上回。上回说到&#xff0c;从HproseClient.java ------------------------- (#0)invokeHandler.handle()开始&#xff0c;将经历一个漫长的调用过程&#xff0c;下面把整个调用链粘出来&#xff0c;先认识下这个庞然大物。( >>> 表示调用到&#xff…

java批量提取文件夹名称_bat 批量提取指定目录下的文件名

bat 批量提取指定目录下的文件名下面是批量获取指定目录下的文件名的核心代码echo offecho text inputset inputset /p input:echo %input% is inputcd %input%rem echo onfor %%a in (*) do (echo %%a is input)cd ..如下是sql server执行对应脚本文件sqlcmd -Spcserver -dmas…

埃及分数The Rotation Game骑士精神——IDA*

IDA*&#xff1a;非常好用的搜索&#xff0c;可以解决很多深度浅&#xff0c;但是规模大的搜索问题。 估价函数设计思路&#xff1a;观察一步最多能向答案靠近多少。 埃及分数 题目大意&#xff1a; 给出一个分数&#xff0c;由分子a 和分母b 构成&#xff0c;现在要你分解成一…

美团扫码付的前端可用性保障实践

开篇 2017年&#xff0c;美团金融前端遇到了很多通用性问题&#xff0c;特别是在保障前端可用性的过程中&#xff0c;我们团队也踩了不少“坑”&#xff0c;在梳理完这些问题以后&#xff0c;我们还专门做了第31期线下沙龙给大家进行了分享。不管是在面试过程中与候选人讨论&a…

Servlet上传文件和下载文件示例

Java Web应用程序中的文件上载和下载以及常见任务。 由于最近我写了很多有关Java servlet的文章 &#xff0c;因此我想提供一个使用servlet上传和下载文件的示例示例。 用例 我们的用例是提供一个简单HTML页面&#xff0c;客户端可以在其中选择要上传到服务器的本地文件。 在提…

java创建异步多线程_Java创建多线程异步执行实现代码解析

实现Runable接口通过实现Runable接口中的run()方法public class ThreadTest implements Runnable {public static void main(String[] args) {Thread thread new Thread(new ThreadTest());thread.start();}Overridepublic void run() {System.out.println("Runable 方式…

hive基本操作与应用

通过hadoop上的hive完成WordCount 启动hadoop Hdfs上创建文件夹 上传文件至hdfs 启动Hive 创建原始文档表 导入文件内容到表docs并查看 用HQL进行词频统计&#xff0c;结果放在表word_count里 查看统计结果 转载于:https://www.cnblogs.com/cairuiqi/p/9048256.html