1、Weblogic System Administration,预备知识,能用Java程序语言开发Web应用程序; 了解J2EE规范; 了解Servlet、EJB、JDBC、JNDI等相关知识; 具有基础的数据库知识及操作能力。,课程,J2EE技术及相关服务器介绍 WebLogic 简介 Web应用服务管理 JDBC服务 WebLogic集群技术 调优简介,Part 1 J2EE服务器介绍,Java 2 平台,J2SE(Java 2 Platform Standard Edition) Java 2 平台标准版 J2EE(Java 2 Platform Enterprise Edition) J
2、ava 2 平台企业版 J2ME(Java 2 Platform Micro Edition) Java 2 平台微型版,J2SE( Java 2 平台标准版),J2ME( Java 2 平台微型版),J2EE( Java 2 平台企业版),品牌重塑,JavaSE JavaEE Java Tiger Java 5 JavaEE 5,J2EE应用开发的核心组件,Servlet: 处理HTTP请求,产生响应。 JSP:Java Server Pages ,同Servlet。其中包含了HTML和JSP标签、Java代码和其他信息。 EJB:EJB服务端组件模型简化了具有交互性、扩展性和移植性中间组件
3、的开发。EJB一般用于实现系统的业务逻辑。,J2EE的相关技术,J2EE规范,在Java基础上的一套技术规范(完整的解决方案) J2EE应用服务器(实现、扩展了技术规范的中间件产品) J2EE应用程序组件(利用相关API的业务实现) J2EE应用服务器和应用程序组件以及关联的其它软件构成了基于J2EE的软件系统。,J2EE应用中的开发,J2EE应用需要经历下列开发过程: 企业bean的创建 Web组件的创建 应用组装 应用部署,J2EE应用生存期中的角色,J2EE平台供应方:例如WebLogic和WebSphere; 工具供应方:提供J2EE的开发、组装和部署工具; 应用组件供应方:创建Web
4、组件(JSP、Servlet)和J2EE应用中使用的企业bean; 应用组装方:从组件供应方获得应用组件,并把它们组装成 J2EE Enterprise Archive(EAR)文件; 应用部署方:在运行环境中部署应用。根据需要制定最终的安全问题和处理映射; 系统管理员:配置和管理运行环境。,J2EE的特点,提供面向服务的底层结构; 分布式; 基于组件; 良好的移植性(标准规范应用); 良好的结构设计; 支持多种技术,具有良好的兼容性; 明确应用系统中的角色明确分工; 完整的解决方案。,J2EE的4层结构,J2EE的4层结构,客户层(浏览器) Web层(HTML、Servlet、JSP) 业务
5、层(EJB) EIS层(关系数据库),J2EE的N层体系结构,理想的J2EE体系包括六个层:表示、应用、服务、域、连通性和持久 化。这些层物理上横跨客户机和服务器,而他们逻辑上划分为Web容器、EJB容器和数据库,如图,J2EE典型的层次结构,基于Web的J2EE层次结构,J2EE的扩展结构,Part 2 J2EE开发环境,常用应用开发环境介绍,在开发过程中,基于J2EE-Web项目通常涉及到: Web服务器 数据库服务器 集成开发环境的选择,J2EE的Application Server,Tomcat BEA Weblogic IBM Websphere Oracle Application
6、 Server Sun Java System Jboss Borland AppServer Sybase Application Server HP Application Server Apusic,集成开发工具,Borland:JBuilder Oracle :JDeveloper Bea :WebLogic Workshop IBM:Websphere Studio Sun:NetBeans MyEclipse,Web服务器,WebLogic是BEA公司的产品,是目前应用最广泛的Web服务器,支持J2EE规范,而且不断的完善以适应新的开发要求,启动界面如图:,Web服务器,另一个常用
7、的Web服务器是IBM公司的WebSphere,支持J2EE规范,启动界面如图:,Web服务器,在小型的应用系统或者有特殊需要的系统中,可以使用一个免费的Web服务器Tomcat,该服务器支持全部JSP以及Servlet规范,但是目前还不支持EJB,启动界面如图 :,数据库服务器,在Java相关的开发领域中,常用的是3种数据库:Oracle、DB2和MySQL。有时候也使用微软公司的SQL Server数据库服务器 。 Oracle数据库是Oracle公司的产品,也是历史最悠久的数据库,世界前50强的企业中,80%使用Oracle数据库作为公司的数据库服务器。服务器的图标如图 :,数据库服务器
8、,IBM公司的DB2也是一种常用的数据库,和IBM的WebSphere配合构成完整的企业级解决方案,数据库服务器的启动界面如图:,数据库服务器,目前商业数据库服务器市场三足鼎立:Oracle、DB2和微软公司的SQL Server,在实际应用中,有一个常用的免费的小型数据库服务器:MySQL,启动界面如图:,Part 3 WebLogic 简介,域(Domains),域是管理的单元或边界; 作为一个单元来管理的,并相互关联的一组Weblogic 服务器资源被称为域; 域由单一的管理服务器来管理。,机器(Machines),可以对应到服务器所在的物理硬件; 可以是Unix或non-Unix类型;
9、 可以用来远程管理和监控;,服务器(Servers),服务器是执行在单一Java虚拟机 (JVM)中weblogic.Server类的实例。 服务器: 最多和一个WLS机器关联 占用一定数量的RAM 是多线程的,管理服务器 (Administration server),对整个域的集中控制 XML配置存储库的保存者 日志信息的集中保存,被管理服务器 (Managed Server),WebLogicServer的一个实例; 从管理服务器远程加载配置信息; 可以是也可以不是集群的一部分。,集群 (Clustering),WebLogic集群技术指通过一组服务器共同 工作,在多台机器间复制应用表示
10、层和应用逻辑层的能力,实现关键业务系统的负载分布,消除个别故障点; 集群用来实现负载均衡和容错。,域的典型架构,Part 4 Web应用的部署,使用演示,创建一个域 启动服务器 部署一个Web应用 重新部署Web应用 删除一个Web应用 关闭服务器,Part 5 JDBC服务,JDBC Driver,JDBC Driver有四种类型:,JDBC驱动,JDBC有四种驱动,分别是: 第一类:JDBC-ODBC桥,再加上ODBC驱动程序。 第二类:本机API,部分是Java的驱动程序。 第三类:面向数据库中间件的纯Java驱动程序。 第四类:直接面向数据库的纯Java驱动程序。 第三、四两类都是纯J
11、ava的驱动程序,因此,对于Java开发者来说,它们在性能、可移植性、功能等方面都有优势。,常见数据库驱动,配置连接池需要知道特定数据库URL、数据库属性及相应驱动类,Weblogic与JDBC驱动,Weblogic提供的的JDBC驱动程序:Oracle、Sybase、SqlServer、Informix、DB2、pointbase 第三方驱动程序,第三方的驱动程序要和Webloigc一起工作,必须符合以下标准: 必须是线程安全 必须是EJB可访问的 最好支持JDBC2.0,连接池,连接池是在Weblogic启动时候预先建立的数据库连接,由Weblogic在运行时负责维护。 可以减少程序每次数
12、据库请求都要新创建数据库物理连接的时间及资源。 对数据库属性的更改只需通过控制台进行,不需改动客户端代码,在控制台配置连接池,监控JDBC连接池,Waiters Hight字段指明了最多有多少客户等待数据库连接 Waiters字段告诉你当前有多少客户正在等待连接 Connections Hight字段给出最大的并发连接数。 Wait Seconds Hight字段显示了客户等待数据库连接的最长时间,MultiPool(多池),多池的作用: 为防数据库连接失败提供冗余备份或高有效池 为高用户访问量提供数据库负载均衡,负载均衡池 备份池 一个备份池由一个有顺序的连接池列表组成 负载均衡池 使用简单
13、的循环算法将连接请求平衡地分到在列表中的每一个池,数据源的使用,数据源对应一个数据库连接池。客户程序可以通过数据源绑定的JNDI名字得到该数据源的引用,并通过数据源对象得到数据库连接。,Example,Hashtable ht = new Hashtable();ht.put(Context.INITIAL_CONTEXT_FACTORY,“weblogic.jndi.WLInitialContextFactory“);ht.put(Context.PROVIDER_URL, “t3:/192.168.0.9:7080“);ht.put(Context.SECURITY_PRINCIPAL,“
14、weblogic“);ht.put(Context.SECURITY_CREDENTIALS,“weblogic“);Context ctx = new InitialContext(ht);DataSource newDataSource = (DataSource) ctx.lookup(“OrclDataSource“);conn = newDataSource.getConnection();,Part 6 Cluster,什么是WLS集群,Weblogic Server集群是一组相互协作的Weblogic Server实例,通过一组服务器共同工作,在多台机器间复制应用表示层和应用逻辑
15、层的能力,实现关键业务系统的负载分布,消除个别故障点。,Weblogic Server Cluster,WLS集群的作用,Load Balancing Failover Scalability High-Availability,集群对象,一个集群的服务是一组在集群中的多个服务器上都可用的应用或应用组件,以下类型的对象在WLS能被集群 Servlets JSPs EJBs Remote Method Invocation (RMI) objects Java Messaging Service (JMS) destinations Java Database Connectivity (JDB
16、C) connections,非集群对象,WLS不提供对以下资源的集群: File services Time services 这些服务仍然可以部署在集群中的某个服务器上,但不能享受负载均衡、容错等特性。,单层的WLS集群,单层WLS 集群的特点,管理方便 在一集群内包含了static HTTP pages, servlets, and EJBs 灵活的负载均衡 坚固的安全 最佳的性能,多层的WLS集群,多层WLS集群的特点,Load Balancing EJB Methods Web层对EJB方法的调用可以在多个WLS之间实现负载均衡 Improved Server Load Balanc
17、ing Higher Availability Improved Security Options,集群内WLS的通信,集群内各个WLS实例相互间的通信有以下两种类型: IP multicast IP Sockets 使用IP Multicast进行一对多的通信 使用IP Sockets进行点对点通信,配置WLS集群必须满足的条件,要有WLS Cluster的License(PremiumLicense) 集群内各WLS使用静态IP地址,集群中的机器参与者不能使用DHCP或其他方法动态分配IP地址。否则,如果地址变化,集群中的参考者就会突然不能相互通信 集群中的所有参考机器必须在同一局域网内,
18、并且通过IP Multicast能够达到,用同样的Multicast地址 集群内各WLS的版本必须一致 集群内各WLS能用同样的IP地址但必须是不同的TCP/IP端口或不同的IP地址用相同的端口,选择Proxy,WebLogic + HttpClusterServlet 基于round-bobin转发Http请求 将动态内容的请求代理到WLSWLS支持以下一些Web servers充当proxy plug-ins: Netscape Enterprise Server Sun ONE Web Server+ Plug-in Apache + Plug-in Microsoft IIS+ Plu
19、g-in,HttpClusterServlet,部署HttpClusterServlet,bea_homeweblogic81samplesserverexamplessrcexamplesclustersessionrepinmemrepdefaultProxyApp 192.168.0.30:7081|192.168.0.31:7082|192.168.0.32:7083 http:/ProxyHost:port/abc.jsp?_WebLogicBridgeConfig,Session持久方式,Memory (single-server, non-replicated) File sys
20、tem persistence 会话状态持久到在集群中可以为所有节点访问的共享目录中的磁盘文件 JDBC persistence Cookie-based session persistence 会话状态保存在客户端的Cookie中 In-memory replication (across a cluster) 会话状态保留在活动的内存中,并进行复制,集群环境下Servlets和 JSPs的编程考虑,Session数据必须可序列化 为了支持Http Session 状态的复制,所有Servelt和JSP session数据必须序列化 WLS对非序列化的对象不进行复制 使用setAttribu
21、te改变Session状态 如果使用其他方法来改变Session状态,WLS将不复制Session状 态 考虑序列化的开销 不要在Session中保存太大的对象 控制Frame访问Session Data 含有Frame的页面应该只被记录一次页面阅览,即使含有Frame的页面会 产生对多个文档的请求 使用frameset,应确保只有一个frame创建和修改session数据 总是在frameset中每一个访问的frame中创建session,Cluster 常见问题,检查Cluster License “Unable to find a license for clustering “ 检查各
22、WLS版本 检查Multicast 地址 Multicast地址:端口必须是唯一的 检查CLASSPATH set WL_HOME=C:beaweblogic700 set JAVA_HOME=C:beajdk131 set CLASSPATH=%JAVA_HOME%libtools.jar; %WL_HOME%serverlibweblogic_sp.jar; %WL_HOME%serverlibweblogic.jar; %CLASSPATH% 检查 Thread Count 不能少于5,Part 7 调优,调优,通常应用系统会根据用户数、并发数、用户的行为等等来确定具体的性能目标, 如果
23、确定应用程序不能满足性能目标,那么就需要优化、重构程序并调整JVM、应用服务器、数据库、OS 或者改变硬件配置等等,影响Java 性能的主要因素,硬件,如CPU、内存、体系结构等等 操作系统 数据库系统 JVM 应用服务器 数据库服务器 网络环境 应用架构及程序编写水平,性能调整的步骤,1、 使用工具测试系统是否满足性能目标 2、 发现性能瓶颈 3、 假设瓶颈的原因 4、 测试你的假设 5、 如果假设成立,更改这一部分 6、 测试确定更改是否可以提高性能,衡量性能提高的程度 7、重复以上步骤,直到获得可以接受的性能。,J2EE性能不好时的现象,主要表现在对客户端的请求响应很慢: 一向很慢:应用
24、的响应总是很慢,改变环境(如应用负载、数据库的连接池数量等等),对响应时间的影响不大。 越来越慢:在相同的负载情况下,随着系统运行的时间的增长,系统越来越慢,这可能是系统已到达极限或是系统死锁和错误引起的。 低于负载时会越来越慢(Slower and slower under load):. 偶尔的挂起或异常错误(Sporadic hangs or aberrant errors):有时这可能是由于负载的变化或其他情况引起的可以预测的死锁(Foreseeable lock ups): 挂起或最初只有少量错误,但随着时间的推移整个系统都锁上了,典型地这可能是为的适应“management by
25、restarts.“ 突发性的混乱(Sudden chaos): 系统已运行了一段时间(如一个小时或可能是三、四天),性能稳定并可以接受, 突然没有任何理由,开始出错或死锁了。,80/20法则,在对系统进行优化的时候,必须把导致最大优化效果的因素找出来。 如果客户端与服务端之间传输的数据量比较大,应检查一下网络的速度是不是正常,看网络是不是性能瓶颈; 如果客户端与服务端传输的数据量比较小,但服务端有大量的数据库操作,则很有可能数据库是性能的瓶颈, 如果增加连接池数量后,没起多大的作用,而且数据库的压力很大,则数据库可能是性能的瓶颈,监控工具,WebLogic Server的控制台 cpu 内存 JDBC 辅助的工具 Jprobe Optimizit Vtune TowerJ Performance,