




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用用 WLST 监控监控 WEBLOGIC 服务器服务器 脚本语言近来受到一些关注 随着 Groovy 和 Jython 的到来 编写与 Java 合并的脚本比 Ant 更简单自然 一直以来使用 XML 来调用 Java 方法都是被迫的 这主要是因为在标记语言中解释流 条件表达式和自定义代 码比较困难 虽然自 Ant 1 5 之后这一点有了较大的改进 为什么用脚本语言呢 是这样的 如果我有完整的 Java 编程 IDE 用 Jython 或是 Groovy 看起来就显得 有些落伍了 虽然可以用较少行来编码 虽然不是少很多 但是我希望输入的编写能够自动化 我希望编译 器在编码时告警 而且我需要分解 这需要 Java IDE 以外的插件 但有时候没有完整的 IDE 配置 想一下要自动敏捷的工作 或者想一下服务器管理员 这些人没有任何像 Eclipse 之类的东西 而且他们的工作不可能事先完成 不可能为系统管理而编码 这就是像 WLST 这类工具 产生的来由 它们使得世界更美好 WebLogic 脚本工具 WLST WebLogic Scripting Tool 是一个帮助编写远程管理和修改服务器安装 脚本的 Jython 模块 它有两个版本 离线 它可以配置尚不存在的服务器实例 以及在线 它需要连接到一个 WebLogic 服务器 这两个版本都是 Beta 版而且文档很少 但是它们保证会改进并在将来的某个 WebLogic 版本中包含 这里我们将专注于在线版本 因为它的功能比离线版本更为完整 使服务器配置自动化 使服务器配置自动化 让我们从难以对付的 WebLogic 服务器配置开始吧 典型的开发团队在几台主机上复制同样的配置 仅仅 改变少量参数 如 IP 主机名和 TCP 端口 在相对典型的项目中 必须对每个开发人员的 PC 集成测试主机 和生产主机 都要执行一遍这个过程 Ant 任务对这个问题有很大帮助 但是它还没有准备好处理像定制 JMX bean 这类的事务 我们将创建并装载服务器 配置它 然后关机 混合使用 Ant 和 WLST 首先 让我们创建清单 1 中的服 务器 为了简化 我们将在这里使用 Ant 任务 因为结合使用 WLST 离线和在线会使事情复杂化 清单清单 1 build properties server weblogic weblogic server name myserver weblogic domain name mydomain weblogic admin username weblogic weblogic admin password weblogic weblogic home C bea weblogic lib dir weblogic81 server lib weblogic mbeantypes dir mbeantypes server project root dir user projects domains server deploy dir applications 我检查了属性 因为在多于一个品牌的应用服务器上部署时 很容易使用错误的 build properties 文件 参见清单 2 清单清单 2 build xml Weblogic properties are missing Double check build properties Missing file weblogic jar Creating server at 我们刚刚删除了整个域目录 创建了一个新的 干净的目录 并让服务器运行 这样 在清单 3 中 我们 可连接并配置它 清单清单 3 停止服务器是必要的 因为有些设置改变了 如安全验证者 需要正常关机以保存到磁盘 省略这一步将 会在 Ant 脚本结束处突然中止服务器 注意 WLST 任务有分叉 因此 如果 WLST 在脚本中发现了错误 Ant 仍将会显示 成功编译 从而会 使得装载该脚本的人迷惑 让我们将 WLST 脚本分成两个部份 这样在以后的管理任务中能尽可能多的重用它 我已经使用了包含在 WLST 包中的很棒的例子 并且将 saveDomain 命令的输出作为起点 saveDomain 生成的脚本不是很完 美 但是它能指出工具的可能性 参见清单 4 清单清单 4 createAll py execfile AdminTool py admin configureServer admin createXaPool AdminTool py from javax management import InstanceNotFoundException Python 2 4 will include booleans but until then this is required true 1 false 0 class AdminTool def init self loadProperties administration properties Connects with a weblogic instance def connect self connect username password t3 host port self myServer getTarget Server serverName Server attributes that cannot be generated via ant def configureServer self Activates console DEBUG mode I really like that self myServer setStdoutSeverityLevel 64 print Configured server self myServer getName Creates a JDBC pool def createPool self poolName driverName pool create poolName JDBCConnectionPool pool setDriverName driverName pool setURL dbURL pool setPassword dbPassword pool setProperties makePropertiesObject user dbUsername pool setRemoveInfectedConnectionsEnabled false pool setTestConnectionsOnCreate true pool setTestTableName SQL SELECT 1 FROM DUAL setTestFrecuencySeconds is not soported by WLST objects so here is a workaround cd JDBCConnectionPool poolName set TestFrequencySeconds 300 cd pool addTarget self myServer def createXaPool self self createPool MY POOL NAME oracle jdbc xa client OracleXADataSource Removes an element if it exists def removeIfExists self name type try mbean home getAdminMBean name type home deleteMBean mbean print Removed the type name except InstanceNotFoundException e print Cannot remove name type type because it does not exist def removeXaPool self self removeIfExists MY POOL NAME JDBCConnectionPool The JDBC Connection Pool name MY POOL NAME MyPool the instance we are going to use admin AdminTool admin connect administration properties host 127 0 0 1 port 7001 username weblogic password weblogic dbURL jdbc oracle thin 1521 DATABASE dbUsername foo dbPassword bar LoadProperties 任务将 administration properties 文件中的所有项转换成 Jython 变量 我们已经使用 了 Jython 类的第一个方法来管理 WebLogic 服务器实例 还可以轻易将它扩展到创建和删除 DataSources 这是一个 JMS 环境 甚至还可以扩展到安全领域 MBean 方法方法 前面我们已经看到的是创建和配置 MBeans 的一个方法 下一节会解释另一种方法 不利的一面是必须 知道支持的属性和方法 而 WLST 没有这些文档 我怎么去猜哪个方法可用呢 噢 我想到的第一个方法是到 config xml 文件或是 Web 控制台去找 并假设属性名称未改变 如果有一 个不错的 IDE 我们还可以打开 Mbean 接口类看看那里有些什么 它和 Mbean 的名称一样 以 Mbean 结 束 这不会显示代码 但是可以查到哪个方法可用 我喜欢连接到 http e weblogic management configuration 包的内容 比如 如果我们找到 ServerMBean 类 就可以看到两个 有趣的但是不太为人们所熟悉的方法 isJDBCLoggingEnabled 和 setJDBCLoggingEnabled 我们可通过 打开 wlst 交互 shell 来查看它们 如下所示 wls mydomain config server home getAdminMBean myserver Server wls mydomain config server setJDBCLoggingEnabled 1 wls mydomain config server isJDBCLoggingEnabled 1 home 是一个 AdminMbeanHomeImpl 类型的变量 可以像对任何其他 Mbean 一样研究 唯一的问 题是因为它是一个内部类 所以没有 javadoc 可用 如果最后三个命令不好理解 不要担心 我们会在下一节介绍 Shell 命令行系统管理命令行系统管理 系统管理员也可以通过使用交互式 shell 来手工管理 WebLogic 服务器实例 其优点是在试图修改系统配 置时 不用事先知道 Mbean 接口 对这一部分 需要在 classpath 包含 webLogic jar jython jar 以及 wlst jar 并启动主类 weblogic WLST 它是交互式控制台 要记住这是 Jython 引号和双引号用于字符串声明 实例化不需要新的运算符 事实上 这是一个语法错 误 不需要分号 因为每行用回车结束 而且不必声明变量 la Unix shell 脚本 如果这还不够 请参考 Python 和 WLST 的文档 我们需要开始连接到 WebLogic 服务器的实例 我们可以选择使用之前编写的 AdminTool 脚本 或者手 工连接 execfile AdminTool py admin connect 或 connect weblogic weblogic t3 localhost 7001 Connecting to weblogic server instance running at t3 127 0 0 1 7001 as username weblogic 成功连接到属于 mydomain 域的 Admin 服务器 myserver 是系统输出 而且应采用编码的格式 现在 我们可以开始好好玩一下了 对于 WLST JMX 树可像 UNIX 文件系统一样进行遍历 在这里 JMX Mbeans 是目录而其属性是文件 在所有这些过程中要记住 Python 语法 并要记得 WLST 仍然不能分辨通配 符 这就是为什么我们要省略大多数 ls 输出的原因 参见清单 5 清单清单 5 wls mydomain config ls drw JDBCConnectionPools drw JDBCDataSourceFactories drw JDBCDataSources drw JDBCMultiPools drw JDBCTxDataSources wls mydomain config cd JDBCConnectionPools wls mydomain config JDBCConnectionPools ls drw MyPool wls mydomain config JDBCConnectionPools cd MyPool wls mydomain config JDBCConnectionPools MyPool ls rw TestConnectionsOnCreatetrue rw TestConnectionsOnReleasefalse rw TestConnectionsOnReservefalse rw TestFrequencySeconds300 rw TestStatementTimeout 1 rw TestTableNameSQL SELECT 1 FROM DUAL r TypeJDBCConnectionPool rw URLjdbc oracle thin 1521 DATABASE 我们还可以对于单个 cd JDBCConnectionPools MyPool 命令深入到这个地步 WLST 永远记得 cmo 当前管理对象 Current Managed Object 即与我们正在浏览的当前 文件夹 相关的 Mbean 因此 从实际角度来看这些命令是相当的 wls mydomain config JDBCConnectionPools MyPool cmo Caching Stub Proxy for mydomain Name MyPool Type JDBCConnectionPool wls mydomain config JDBCConnectionPools MyPool pwd JDBCConnectionPools MyPool 现在 让我们改变一些随机属性 参见清单 6 记住 Python 没有布尔属性 服务器可返回真或假 既然 它运行 Java 但是不能赋这些值 然而 不用担心 如果通过 WebLogic 控制台查看它 布尔值 1 得到了 服务器的正确解释 清单清单 6 wls mydomain config JDBCConnectionPools MyPool set TestFrequencySeconds 500 wls mydomain config JDBCConnectionPools MyPool set TestConnectionsOnRelease 1 wls mydomain config JDBCConnectionPools MyPool ls rw TestConnectionsOnCreatetrue rw TestConnectionsOnRelease1 rw TestConnectionsOnReservefalse rw TestFrequencySeconds500 rw TestStatementTimeout 1 rw TestTableNameSQL SELECT 1 FROM DUAL r TypeJDBCConnectionPool rw URLjdbc oracle thin 1521 DATABASE wls mydomain config JDBCConnectionPools MyPool get TestConnectionsOn Release 1 使用前一节关于 使服务器配置自动化 中介绍的相当技术 也可能得到了同样的结果 我发现这个方法对 于系统管理员更简单 而第一个方法对于开发人员准备脚本则更简单 这只是适应不同类型的工具集 系统管 理员更习惯于 Unix Shell 而开发人员对于的 Java 的 味道 则感觉更为舒服 管理服务器配置的例子 一个真实例子管理服务器配置的例子 一个真实例子 需要了解那些烦人的 JDBC 调用内部是一种常见现象 有时人们真的希望能够看见 WebLogic 服务器和数 据库之间对话 为什么它会见鬼地返回 0 行 或者轮廓性能 OK 用热插拔功能记录 JDBC 调用 而不仅是 SQL 拜托了 还要记录参数 应该不错 想试一下吗 首先 让我们下载 p6spy JDBC 驱动程序 它是一个 JDBC 包 可以记录任何经过它的东西 要配置它 将 p6spy jar 和包含 p6spy properties 的目录放到服务器 classpath 目录下 不要忘了这个目录 否则 WebLogic 会报告 JAR 文件不存在 按照需要调整 p6spy properties 我们想要到达的目的是创建两个 Connection Pool 连接池 一个直接用 Oracle JDBC 驱动程序而另 一个通过 p6spy 然后 我们将修改数据源指向 p6spy 数据源而不重启服务器 如果我们相信 Web 控制台接 口 这个修改无需重启 我们将通过执行之前开发出的管理脚本来开始 wls offline execfile AdminTool py Connecting to weblogic server instance running at t3 127 0 0 1 7001 as username weblogic 成功连接到属于 mydomain 域的 Admin 服务器 myserver 它也是系统输出并且应正确格式化 我们现在可以创建连接池了 wls mydomain config admin createPool P6SPY Connection Pool com p6spy engine spy P6SpyDriver JDBCConnectionPool with name P6SPY Connection Pool has been created successfully 在 WebLogic 控制台我们可看到以下显示 WebLogic 日志行将只在将 debug to console 选项启用时才 会显示 1109621928226 0 1 statement SELECT 1 FROM DUAL SELECT 1 FROM DUAL 1109621928242 0 1 statement SELECT 1 FROM DUAL SELECT 1 FROM DUAL 这显示连接池初始化以及新连接测试 我们将假设数据源还不存在 如果我们还清楚 应该已经预见到这 一点并在 AdminTool 类创建了方法 但是 我们还是可通过清单 7 中所列的交互式 shell 来这么做 清单清单 7 wls mydomain config datasource create MyDS JDBCTxDataSource JDBCTxDataSource with name MyDS has been created successfully wls mydomain config datasource setJNDIName MyDS wls mydomain config datasource setPoolName P6SPY Connection Pool wls mydomain config datasource setEnableTwoPhaseCommit tr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 惊厥培训课件
- 悲惨世界电影课件
- 2025年秋季部编版初中数学教学设计八年级上册11.3.2 多边形的内角和
- 开展毕业晚会主题活动的策划方案
- 学校部下期政教处工作方案
- 2026届浙江省乐清市知临中学高一化学第一学期期中达标测试试题含解析
- 恒压供水控制原理
- 浮力相关考试题及答案
- 五项管理考试题及答案
- 大化实验考试题及答案
- 2025年云南省事业单位招聘考试综合类专业能力测试试卷(工程类)难点解析
- 2025年秋期人教版2年级上册数学核心素养教案(第6单元)(教学反思有内容+二次备课版)
- 2025内蒙古西部天然气蒙东管道有限公司招聘20人笔试参考题库附带答案详解(10套)
- 2025店铺租赁合同协议书下载
- 9型人格培训课件
- 2025年银行安全保卫知识考试题库(含答案)
- 曲靖市商务局招聘公益性岗位人员考试真题2024
- 2025年青岛市中考英语试卷(含答案解析)
- 投资评价管理办法
- 达州水务集团有限公司员工招聘考试真题2024
- 2025年广东华南农业大学招聘事业编制工作人员考试笔试试题(含答案)
评论
0/150
提交评论