一、Weblogic概念

Weblogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中.

Weblogic就是和我们常用的tomcat差不多的部署jeva web程序的服务器。那么weblogic又和tomcat有什么区别呢?我们在什么时候该用tomcat,什么时候该用weblogic?

  • tomcat只能算是web container(web 容器),是官方指定的jsp&servlet的容器,只实现了jsp/servlet的相关规范,不支持EJB.
  • weblogic是将j2ee的应用服务器(web container+EJB container,web容器和EJB容器融合在一起),包括ejb、jsp、servlet、jms等,属于全能型的.
  • weblogic server凭借其出色的群集技术,拥有处理关键Web应用系统问题所需的性能、可扩展性和高可用性。weblogic server既实现了网页群集,也实现了EJB组件 群集,而且不需要任何专门的硬件或操作系统支持。网页群集可以实现透明的复制、负载平衡以及表示内容容错 。无论是网页群集,还是组件群集,对于电子商务解决方案所要求的可扩展性和可用性都是至关重要的。共享的客户机/服务器和数据库连接以及数据缓存和EJB都增强了性能表现。这是其它Web应用系统所不具备的;所以,在扩展性方面WebLogic是远远超越了Tomcat.
  • 它们均免费试用次软件.

1.1、扩展EJB概述

EJB是Sun的JavaEE服务器端组件模型,企业级JavaBean(Enterprise JavaBean, EJB)设计目标与核心应用是部署分布式应用程序。简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行。凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台.

EJB 是为了"服务集群"和"企业级开发”所使用,那么,总得说说什么是所谓的"服务集群"和"企业级开发"吧!这个问题其实挺关键的,因为J2EE 中并没有说明白,也没有具体的指标或者事例告诉广大程序员什么时候用EJB 什么时候不用。于是大家都产生一些联想,认为EJB"分布式运算"指得是"负载均衡"提高系统的运行效率。然而,估计很多人都搞错了,这个"服务群集"和"分布式运算"并没有根本解决运行负载的问题,尤其是针对数据库的应用系统.

1.2、EJB官方文档

商务软件的核心部分是它的业务逻辑。业务逻辑抽象了整个商务过程的流程,并使用计算机语言将他们实现.

J2EE 对于这个问题的处理方法是将业务逻辑从客户端软件中抽取出来,封装在一个组件中。这个组件运行在一个独立的服务器上,客户端软件通过网络调用组件提供的服务以实现业务逻辑,而客户端软件的功能单纯到只负责发送调用请求和显示处理结果。在J2EE 中,这个运行在一个独立的服务器上,并封装了业务逻辑的组件就是EJB(Enterprise JavaBean:企业级JavaBean)组件。这其中我们主要关注这么几点.

1.3、逐条解析

第一:所谓”业务逻辑“

在EJB 的概念中主要提到的就是"业务逻辑"的封装,而这个业务逻辑到底是什么?说的那么悬乎,其实这个所谓的"业务逻辑"我们完全可以理解成执行特定任务的"类"逻辑封装后的完成一定类型的功能代码.

第二:所谓"将业务逻辑从客户端软件中抽取出来,封装在组件中….运行在一个服务器上"

"业务逻辑"的概念是执行特定任务的"类",那”从客户端软件中抽取出来…“,就是把原来放到客户端的"类",拿出来不用放在客户端了,放到一个组件中,并将这个组件放到一个服务器上去运行.

1.4、总结

EJB就是把你编写的软件中那些需要执行特定的任务的类,不放在客户端软件中,而是打包放到一个服务器上了.

1.5、发现问题

上面我们一直在提到“客户端软件”,其实EJB的概念说的就是C/S软件,就是将那些“类”放到一个服务器上,用C/S形式的软件客户端对服务器上的“类”进行调用.

EJB与JSP的关系:JSP的服务器端调用远端服务器上的EJB类而已.

1.6、EJB底层实现技术

EJB是运行在独立服务器上的组件,客户端是通过网络对EJB对象进行调用的,在JAVA中,能够实现远程对象调用的技术是RMI:远程方法调用(Remote Method Invocation),而EJB技术基础正是RMI技术,J2EE将EJB组件创建为远程对象,客户端就可以通过网络调用EJB对象了.

1.7、RMI什么东西呢?

需要搞明白两个概念
1、对象的序列化
2、分布式计算与RPC

1.7.1、对象的序列化

对象的序列化概念:对象的序列化过程就是将对象的状态转换成字节流和从字节流恢复对象,将对象状态转换成字节流之后,可以用java.io包中的各字节流类将其保存到文件中,或者通过网络连接将对象数据发送到另一主机.

解析:对象的序列化就是将你的程序中实例化的某个类的对象,比如,你自定义一个类myclass,或者任何一个类的对象,将它转换成字节数组,也就是说可以放到一个byte数组中,这时候,你既然已经把一个对象放到byte数据中,那么你当然就可以随便处置了它,用得最多的就是把它发送到网络上的远程计算机上。

1.7.2、分布式计算与RPC

RPC并不是一个纯粹的java的概念,因为在java诞生之前就已经有了RPC的这个概念了,RPC是Remote Procedure Call的缩写,也就是“远程过程调用”,在java之前的大多数编程语言,如,C、等都是过程性的语言,而不是面向对象的,所以,这些编程语言很自然地用过程表示工作,如,函数或子程序,让其他网络上另一机器上执行,就是本地计算机调用远程计算机的一个函数.

机器A --> 机器B
Call abc() --> public void abc()

1.7.3、对象的序列化+RPC结合生成:RMI

RMI英文是“Remote Method Invocation”即“远程方法调用”,它就是利用java对象序列化的机制实现分布式计算,实现远程类对象的实例化以及远程调用方法,其实就是利用对象序列化来实现远程调用,利用这个方法来调用远程类的时候,就不需要编写socket程序了,也不要把对象进行序列化操作,直接调用就行了非常方便。 远程方法调用是计算机之间对象互相调用对方函数,启动对方进程的一种机制,使用这种机制,某一台计算机上的对象在调用另一台计算机上的方法时,使用的程序语法规则和本地上的对象间的方法调用的语法规则一样。

机器A -->字节流 -->机器B
java 对象myclass --> 0001001111 --> myclass mycl

1.7.4、RMI优点

这种机制给分布计算的系统设计、编程都带来了极大的方便。只要按照RMI 规则设计程序,可以不必再过问在RMI 之下的网络细节了,如:TCP 和Socket 等等。任意两台计算机之间的通讯完全由RMI 负责。调用远程计算机上的对象就像本地对象一样方便。RMI 可将完整的对象作为参数和返回值进行传递,而不仅仅是预定义的数据类型。也就是说,可以将类似Java 哈西表这样的复杂类型作为一个参数进行传递.

1.7.5、RMI缺点

如果是较为简单的方法调用,其执行效率也许会比本地执行慢很多,即使和远程Socket机制的简单数据返回的应用相比,也会慢一些,原因是,其在网络间需要传递的信息不仅仅包含该函数的返回值信息,还会包含该对象序列化后的字节内容.

1.7.6、EJB是以RMI为基础

通过RMI技术,J2EE将EJB组件创建为远程对象,EJB虽然用了RMI技术,但是却只需要定义远程接口而无需生成他们的实现类,这样就将RMI技术中的一些细节问题屏蔽了.但不管怎么说,EJB的基础仍然是RMI,so,如果你想了解EJB的原理,只要把RMI的原理搞清楚就行了.你也就弄清楚了什么时候用EJB什么时候不需要使用EJB呢?

1.7.7、EJB中"服务群集"

既然知道了,RMI时将各任务与功能的类放到不同服务器上,然后通过各个服务器间建立的调用规则实现分布式的运算,也就明白了所谓的“服务群集”的概念,就是将原来在一个计算撒谎难过运算的几个类,分别放到其他计算机上去运行,以便分担运行这几个类所需要占用的CPU和内存资源;同时,也可以将不同的软件功能模块放到不同的服务器上,当需要修改某些功能的时候直接修改这些服务器上的类型就行了,修改以后所有客户端的软件都被修改了.

1.7.8、瓶颈的数据库端

以上我们介绍了EJB基本逻辑图,但EJB同样存在瓶颈,下面我们介绍完整的逻辑图.

现在如果想实现各个服务器针对同一个数据库的查询,那么,不管你部署多少个功能服务器,都需要针对一个数据库服务器进行查询操作;也就是说,不管你的"计算"有多么"分布"也同样需要从一台服务器中取得数据.虽然,看起来将各个功能模块分布在不同的服务器上从而分担了各个主计算机的CPU 资源,然而,真正的瓶颈并不在这里,而是,数据库服务器那里。数据库服务器都会非常忙的应付各个服务器的查询及操作请求.

因此,通过这个结构图使我们了解到了EJB根本不能完全解决负载的问题,因为,瓶颈并不在功能模块的所在位置,而是在数据库服务器这里.

1.7.9、假设数据库的一对一

如果每个功能服务器后面部署一个数据库,就可以解决了上面数据库遇到的瓶颈,但是数据库之间的数据共享又出现了新的问题.

1.7.10、别忘记考虑网络问题

在以上介绍的两个网络逻辑图中存在两个网络,一个是"B网"一个是”A网",这两个网络是不同的.”A 网"往往是局域网,一般带宽是10M/100M,速度较快,因此到还好说,然而,”B网"往往是互联网或者是利用电信网络互联VPN 网或称广域网.”B 网"的特点是带宽一般较窄,如ADSL 的网络仅仅有512K-2M 的带宽,由于广域网互联的成本较高,所以一般不会有较高的带宽.而在这个网络上恰恰跑的是功能模块和客户端软件之间交换的数据,而这部分数据恰恰优势非常占用带宽的;因此,这个应用架构其运行速度可以想见是多么的慢了.

1.8、EJB使用是否必须?

通过上面我们介绍的部分得知,好像EJB和开发WEB应用的B/S结构的系统关系并不大,如果把“客户端程序”理解成某一台服务器,这样也是可以被应用的,而且,如果是服务器互相之间做EJB的调用的话,也就不存在广域网带宽限制的问题了.
因此,如果存在以下情况建议不使用EJB系统.

  1. 较为简单的纯web应用技术,不需要用EJB.
  2. 需要与其他服务程序配合使用的应用,但调用或返回的自定义的网络协议可以解决的应用程序,不需要使用EJB.
  3. 较多人并发访问C/S结构的应用程序,尽量不要使用EJB.

1.9、总结

  • EJB实现原理:就是把原来放到客户端实现的代码放到服务器端,并依靠RMI进行通信.
  • RMI实现原理:就是通过java对象可序列化机制实现分布式计算;(包含两个概念:对象的序列化<类转化为字节流的过程和逆过程>、RPC<远程过程调用>)
  • 服务器集群:就是通过RMI的通信,连接不同功能模块的服务器<可参考“EJB服务群集逻辑图”>,以实现一个完整的功能.

1.10、weblogic使用

前面我们已经进行介绍,weblogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器.

2.1、weblogic特点

weblogic软件现在是中间件平台最易用的平台之一,其优势如下:

  • 标准:对业内多种标准的全面支持,包括EJB、JSB、JMS、JDBC、XML和WML,使WEB应用系统的实施更为简单,并且保护了投资,同时也使基于标准的解决方案的开发更加简便。
  • 可扩展性:weblogic server以其高扩展的架构体系闻名于业内,包括客户机连接的共享、资源pooling以及动态网页和EJB组件群集.
  • 快速开发:凭借对EJB和JSP的支持,以及BEA Weblogic Server的Servlet组件架构体系,可加速投放市场速度;这些开放标准与WebGain Studio配合时,可简化开发,并可发挥自己已有的技能,迅速部署应用系统.
  • 更趋灵活:weblogic server的特点是与领先数据库、操作系统饿web服务器紧密集成.
  • 可靠性:容错、系统管理和安全性能已经在全球以千计的关键任务环境中得以验证.

2.2、weblogic安装

2.3、环境准备

1、Jdk 1.7版本

2、weblogic x64

3、Windows server 2008 R2 X64虚拟机

2.4、JDK环境安装

这里提前说下WebLogic Server 10.3.6环境必须1.7的JDK所有我们自行安装.

2.4.1、安装JDK
2.4.2、修改JDK路径

备注:关于weblogic安装所需的jdk环境安装路径不能包含空格,安装过程会出现无法检测到jdk环境.

2.4.3、安装完成,执行java获取版本信息

2.5、weblogic安装

2.5.1、命令下执行

java -D64 -jar wls1036_generic.jar

2.5.2、执行"下一步"
2.5.3、默认"下一步"
2.5.4、跳过注册&更新
2.5.5、下一步
2.5.6、选择jdk路径
2.5.7、默认"下一步"
2.5.8、OK,Server端安装完成
2.5.9、配置完成后,配置域
2.5.10、新建域
2.5.11、默认,下一步
2.5.12、域名自己可以设置,路径不用修改
2.5.13、配置weblogic网页登陆用户名和密码,自行设置
2.5.14、选择“生产型”如下图所示,jdk默认即可
2.5.15、选择&管理及修改两个功能
2.5.16、地址自行配置(内网测试自行配置即可)
2.5.17、新建域目录执行启动weblogic server

输入weblogic用户名&密码(这里我们前面已经配置)

2.5.18、访问web控制台

3.1、weblogic部署

3.1.1、部署方式

weblogic安装部署java web主要分为三种方式进行部署:
三种方式实现部署java web,较为常见的前两种部署方式.

  1. 在控制台中安装部署;
  2. 将部署包放在domain域中autodeploy目录下部署
  3. 使用域中配置文件config.xml 进行项目的部署

3.2、weblogic部署java web

简单web部署,如果涉及数据库等再进行安装数据库等其他组件.

3.2.1、登陆weblogic

3.2.2、修改左侧拦"锁定并编辑"

配置新的java web项目

3.2.3、可用工具MyEclipse导出,这里我们使用jar导出war包

命令:jar cvf cat.war ./cat/*

3.2.4、部署web(这里使用一个列文件的webshell)

点击"安装"跳到如下截图

3.2.5、选择"上传文件"

3.2.6、选择我们的war包

默认,下一步

3.2.8、名称自行修改,这里我们默认

3.2.9、点击"激活更改"

3.2.10、点击“测试”获取站点访问路径

3.2.11、如出现503报错,说明部署的war还未启动

3.2.12、部署war进行启动

3.2.13、访问URL

参考

EJB介绍
https://www.cnblogs.com/strugglion/p/6027318.html
WebLogic部署Java Web项目
http://www.cnblogs.com/telwanggs/p/7137125.html

跟随各位大佬们的脚步继续学习...

© Copyright 2019  

Powered by  si1ent  

皖ICP备19004273