通向架构师的道路之weblogic与apache的整合与调优

一、BEAWeblogic的历史

BEA WebLogic是用于开发、集成、部署和管理大型分布式Web应用、 网络应用和数据库应 

用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的 

开发、集成、部署和管理之中。 

BEA WebLogic Server拥有处理关键Web应用系统问题所需的性能 、可扩展性和高可用性。 

与BEA WebLogic Commerce ServerTM配合使用, BEA WebLogicServer可为部署适应性个性化 

电子商务应用系统提供完善的解决方案。 

BEA WebLogic Server具有开发和部署关键任务电子商务Web应用系统所需的多种特色和优 

势,包括: 

1)      领先的标准 

对业内多种标准的全面支持,包括EJB、JSB、JMS、JDBC、XML和WML,使Web应用系统的实 

施更为简单,并且保护了投资,同时也使基于标准的解决方案的开发更加简便。 

2)      无限的可扩展性 

BEA WebLogicServer以其高扩展的架构体系闻名于业内,包括客户机连接的共享、资源 

pooling以及动态网页和EJB组件群集。 

3)      快速开发 

凭借对EJB和JSP的支持,以及BEAWebLogic Server 的Servlet组件架构体系,可加速投 

放市场速度。这些开放性标准与WebGainStudio配合时,可简化开发,并可发挥已有的技能, 

迅速部署应用系统。 

4)      部署更趋灵活 

BEA WebLogicServer的特点是与领先数据库、操作系统和Web服务器紧密集成。 

5)      关键任务可靠性 

其容错、系统管理和安全性能已经在全球数以千记的关键任务环境中得以验证。 

6)      体系结构 

BEA WebLogicServer是专门为企业电子商务应用系统开发的。企业电子商务应用系统需 

要快速开发,并要求服务器端组件具有良好的灵活性和安全性,同时还要支持关键任务所必需 

的扩展、性能、和高可用性。BEAWebLogic Server简化了可移植及可扩展的应用系统的开发, 

并为其它应用 系统和系统提供了丰富的互操作性。 

凭借其出色的群集技术,BEAWebLogic Server拥有最高水平的可扩展性和可用性。BEA 

WebLogic Server既实现了网页群集,也实现了EJB组件 群集,而且不需要任何专门的硬件或 

操作系统支持。网页群集可以实现透明的复制、负载平衡以及表示内容容错,如Web购物车; 

组件群集则处理复杂的复制、负载平衡和EJB组件容错,以及状态对象(如EJB实体)的恢复。 

无论是网页群集,还是组件群集,对于电子商务解决方案所要求的可扩展性和可用性都是至关 

重要的。共享的客户机/服务器和数据库连接以及数据缓存和EJB都增强了性能表现。这是其它 

Web应用系统所不具备的。 

二、Weblogic对各jdk版本的支持

标准

WLS 7.0

WLS 8.1

WLS 9.0

WLS 10.0

WLS 10.3

WLS 12.0

java

1.3

1.4

5

5

6

7

JAVA EE

1.3

1.3

1.4

5

6

6

这个对jdk版本的支持一定要牢牢记住:

比如说你手上有一个bea weblogic10.0,你拿它布署了只有jdk1.6才能解释的东西,就不要怪weblogic啦,而且没有为什么的,到时不支持就是不支持。

反过来:

说你机器上装的是jdk1.6,你装个weblogic 8.x,嘿嘿,一样不支持。

Weblogic从8.x后被Oracle收购了,成了和OracleDatabase一样的可以在Oracle官网上免费下载的软件,而且不是那 种trial version或者是development version,是真正的企业版,只要你拿它做实验、个人研究、玩不用在任何商业收费行为,是没有任何问题的,因此Weblogic从9.0后各版本可以 从Oracle官网上免费下载,而且可以无限期使用没有license.jar这个东西再困扰你了(下载Oracle Weblogic)。

三、Weblogic的安装

3.1 32位的weblogic

我们在Windows环境下一般安装32位的weblogic:

它一般是一个exe文件,双击即可安装。

3.2 64位的weblogic

 如果你的机器是64位的操作系统或者是Linux/Unix操作系统,一般下载下来后都是一个.jar文件:

 你安装时需要键入java –d64 –jar wls1034_generic.jar。

如果是32位可以不需要这个-d64的参数,如果是64位机器一定一定一定要记得加这个-d64,要不然。。。。。。嘿嘿,它在安装界面出来后会抛一个out of memory的错。。。。。。偶晕!

3.3 安装

确保你的JAVA_HOME变量与path里包含有%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin。

如果是Linux环境,你的JAVA_HOME与path的设置如下:

export $JAVA_HOME=/opt/jdk/java6

export $path=$path:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

环境设置好后在weblogic安装时会找到你系统的JDK,我在此建议大家在安装Weblogic时尽量用标准的Oracle Sun的JDK,当然Weblogic也自带jdk,由于都是Oracle的产品,因此用Oracle Sun的JDK最标准。

 将“我希望通过My Oracle Support接收安全更新”项前的勾disable掉,然后在弹出对话框中选”Yes”。

 我们选定制安装

我们只安装Weblogic Server,暂不安装OracleCoherence,在以后的网格与云里会讲这个Oracle Coherence。

我们不要使用Weblogic自带的jdk也不用它自带的jrockit,我们点下面的[浏览]按钮,选中本地的jdk的主目录(即OracleSun的标准JDK)。

有人说用JRockit要吧获得更好的性能,还有人建议在32位机下使用JRockit可以突破jvm在32位机下只能使用到2GB内存的限制。。。。。。

如果真要用大内存还不如使用64位机呢,真折腾,而且JRockit里的jvm优化参数调优和标准的SUN的JDK是不同的。

 注意这边的路径名,确保不要带有空格,下划线等特殊字符,java对特殊字符很忌讳的,有时一个编译错误不知道为什么,就是因为java home带有空格或者下划线一类的,你的目录名干净点,比如说:

有的人安装java就用默认安装路径,什么c:\programfiles\java\jdk1.6.3.2什么什么之类的。

你直接一个c:\jdk6这样一个名字,多干净?

这边再多啰嗦几句,tomcat的安装路径也是这样的,你直接d:\tomcat1, d:\tomcat2多干净,哪要这么多什么d:\apache_jakarta_tomcat6.0.12这样的东西啊,对吧!

 选否。

这里随便。

 最后review一下,开始安装了。

 装好了,把“运行Quickstart”选项前的勾disable掉,我们可以看到windows菜单里有了我们的weblogic的菜单了,如下图所示:

四、使用Weblogic

还记得我们的Tomcat如何布署我们的WAR应用程序吗?把WAR包或者是WAR目录结构扔到tomcat的webapps目录下,对吧!

Weblogic的webapps目录被称为domain,因此我们在装完weblogic后如果需要建立自己的webapp,就需要建一个domain。

4.1 建立domain

在我们的Windows菜单点选择Oracle Weblogic->Weblogic Server11gR1->Tools->Configuration Wizard

 

 这个是Weblogic的admin console的登录信息,即weblogic装完后有一个网页版的主控制台,用于配置和布署我们的web app的应用的,它一般以:http://ip:7001/console 这样的形式登录,登录时需要用户名和密码,就如同tomcat的http://localhost:8080/manager/html这个console一样,我们的用户名叫”weblogic”,我们的密码就叫”password_1”吧。

我们将我们这个用于实验的domain名取成mydomain。 

这边来了,还记得我们在“(第四天)之Tomcat性能调优-让小猫飞奔”说到过的jvm的参数之:java –serverjava –client的区别吗?

l   这边的”开发模式”就是你的weblogic将以java –client模式启动;

l   如果你选的是”生产模式” 那么你的weblogic将以java –server模式启。

选”生产模式”点”下一步”。

这边我们一个不选,因为我们先不做weblogic的集群配置。点”下一步”。

 点[创建]按钮。

 创建成功。点[完成]结束domain的配置。 

Look,这个就是我们刚才创建的domain,现在开始让我脱离windows菜单来用命令行启动、停止weblogic吧,因为在大型应用中一 般weblogic或者是IBMWebsphere都是运行在Unix小型机上或者是64位的Linux机器上的,因此大家要开始熟悉命令操作了。

4.2 weblogic

4.2.1 启动weblogic前的准备工作

Weblogic的启动一般是调用”weblogic安装目录\yourdomain\”目录下的startWebLogic.cmd或者是startWebLogic.sh(UNX/LNX下)来启动weblogic的。

而startWebLogic会选调用”weblogic安装目录\yourdomain\bin\”目录下的setDomainEnv.cmd或者是setDomainEnv.sh(UNX/LNX下)来初始化环境变量的。

先别急着启动,启动前我们来做一些优化

我们使用文件编辑工具打开setDomainEnv.cmd文件,搜索:MEM_ARGS这个关键字,可以找到下面这么一大陀(这是Weblogic11里的内容,在10里不一样的)

set WLS_HOME=%WL_HOME%\server

if "%JAVA_VENDOR%"=="Sun" (

         set WLS_MEM_ARGS_64BIT=-Xms256m -Xmx512m

         set WLS_MEM_ARGS_32BIT=-Xms256m -Xmx512m

) else (

         set WLS_MEM_ARGS_64BIT=-Xms512m -Xmx512m

         set WLS_MEM_ARGS_32BIT=-Xms512m -Xmx512m

)

set MEM_ARGS_64BIT=%WLS_MEM_ARGS_64BIT%

set MEM_ARGS_32BIT=%WLS_MEM_ARGS_32BIT%

if "%JAVA_USE_64BIT%"=="true" (

         set MEM_ARGS=%MEM_ARGS_64BIT%

) else (

         set MEM_ARGS=%MEM_ARGS_32BIT%

)

set MEM_PERM_SIZE_64BIT=-XX:PermSize=128m

set MEM_PERM_SIZE_32BIT=-XX:PermSize=48m

if "%JAVA_USE_64BIT%"=="true" (

         set MEM_PERM_SIZE=%MEM_PERM_SIZE_64BIT%

) else (

         set MEM_PERM_SIZE=%MEM_PERM_SIZE_32BIT%

)

set MEM_MAX_PERM_SIZE_64BIT=-XX:MaxPermSize=256m

set MEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=128m

不难看懂,很简单,我们是32位的机器,因此我们就在32位所对应的jvm的设置里做一些调整。

1)      我们先把32位下的PermSize从原来的48m改成128m,把32位下的MaxPermSize从128m改成256m

set MEM_PERM_SIZE_32BIT=-XX:PermSize=128m

if "%JAVA_USE_64BIT%"=="true" (

         set MEM_PERM_SIZE=%MEM_PERM_SIZE_64BIT%

) else (

         set MEM_PERM_SIZE=%MEM_PERM_SIZE_32BIT%

)

set MEM_MAX_PERM_SIZE_64BIT=-XX:MaxPermSize=256m

set MEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=256m

2)      更改jvm 的heap size

if "%JAVA_VENDOR%"=="Sun" (

set WLS_MEM_ARGS_64BIT=-Xms256m -Xmx512m

set WLS_MEM_ARGS_32BIT=-Xms256m -Xmx512m

) else (

set WLS_MEM_ARGS_64BIT=-Xms512m -Xmx512m

set WLS_MEM_ARGS_32BIT=-Xms512m -Xmx512m

)

上面这段根据你们自己的实际情况将WLS_MEM_ARGS_32BIT=后的值进行修改。

注意:

l   Xms与Xmx设成一样大小

l   修改Xmx值前请先用java –Xmx你想要的sizem –version进行测试

我们这个例子里就暂都改成512m就够了。一定不要在数值后面漏打”m”啊!

if "%JAVA_VENDOR%"=="Sun" (

         set WLS_MEM_ARGS_64BIT=-Xms512m -Xmx512m

         set WLS_MEM_ARGS_32BIT=-Xms512m -Xmx512m

) else (

         set WLS_MEM_ARGS_64BIT=-Xms512m -Xmx512m

         set WLS_MEM_ARGS_32BIT=-Xms512m -Xmx512m

)

找到下面这一段:

set MEM_ARGS_64BIT=%WLS_MEM_ARGS_64BIT%

set MEM_ARGS_32BIT=%WLS_MEM_ARGS_32BIT%

现在可以加入我们的jvm调优参数了,如下:

set MEM_ARGS_64BIT=%WLS_MEM_ARGS_64BIT% -Dweblogic.threadpool.MinPoolSize=25 -Dweblogic.threadpool.MaxPoolSize=1000 -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:PermSize=128M -XX:MaxPermSize=256M -XX:+DisableExplicitGC

-XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC  -XX:+CMSParallelRemarkEnabled

-XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m  -XX:+UseFastAccessorMethods

-XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true

set MEM_ARGS_32BIT=%WLS_MEM_ARGS_32BIT% -Dweblogic.threadpool.MinPoolSize=25 -Dweblogic.threadpool.MaxPoolSize=1000

-Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:PermSize=128M -XX:MaxPermSize=256M -XX:+DisableExplicitGC

-XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC  -XX:+CMSParallelRemarkEnabled

-XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m  -XX:+UseFastAccessorMethods

-XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true

除了:

l   -Dweblogic.threadpool.MinPoolSize=25

l   -Dweblogic.threadpool.MaxPoolSize=1000

其它的参数均已经在“(第四天)之Tomcat性能调优-让小猫飞奔->2.2 Tomcat启动行参数的优化”中详细擅诉过了。

那么上面这两个值是什么意思?

这两个值就是weblogic的“应用程序线程池”,它的大小决定了你的应用程序服务器的“吞吐量”或者说是“容量”,以前在Weblogic中可以通过登录weblogic 的http://yourip:7001/console后 显视的去做调整,而在weblogic9.x后这两个值变成了隐视的了,因此很多人不知道如何去调Weblogic里的线程池的大小,是因为根据在 console界面中找不到这两个值来让你修改的,所以我们在weblogic的启动参数中,可以手工的加上,如果你不加也行,weblogic有一个默 认的线程池的大小的。一般为最小25最大200。依据你的服务器的性能可以加大这个值。

4.2.2 启动weblogic

 键入上述的命令后回车

 Weblogic启动控制台会提示要你输入用户名和密码,即我们在“创建domain”时输入的weblogic/password_1。

我们输入相应的用户名和密码后,一直看到控制台输出这样一行信息后,即代表我们的weblogic启动正常无误了。

 4.2.3 如何让Weblogic每次启动时不用再输入用户名和密码

每次启动Weblogic时都要输入用户名和密码,假设我的Weblogic是自动随着我的服务器的启动而启动,那么如果此时因为是无人值守,鬼才来输这个用户名和密码啊,是不是?

所以,我们先文本编辑工具先来制作一个文件,叫boot.properties,内容很简单,如下所示:

username=weblogic

password=password_1

然后我们来到我们的domain的目录下

如:”D:\oracle\Middleware\user_projects\domains\mydomain\servers \AdminServer”目录下,手工建一个security的目录,将刚才新建的boot.properties文件,拷入此目录后,重启 weblogic。

此时你会发觉,weblogic再也不会提示要求你输入weblogic管理台的用户名和密码了,等到启动成功后,即看到这样的输出行:

我们来到” D:\oracle\Middleware\user_projects\domains\mydomain\servers\AdminServer \security”目录,打开刚才拷入的boot.properties,它的内容已经自动变成了下面这样了:

#Thu Jul 19 11:54:14 CST 2012

password={AES}anBOrQK1z+ErQKBJSKxlN1t2qv+hxmhyzhQW6S4WnLQ\=

username={AES}D2z8M4xrI3E981Q6u4cfbgAMlDcd23LVgLxvTxARc6k\=

Weblogic把它给加密了,因此只有装Weblogic的那个人即SystemAdmin才真正知道Weblogic控制台的登录信息,这样就很安全了。

4.2.4 配置Weblogic的数据源

在Weblogic运行的状态下我们用ie进入Weblogic的adminconsole,输入http://localhost:7001/console

 输入我们在创建domain时的用户名与密码

 记得要把“锁定并编辑”变成“释放配置”的状态,要不然,你们看,右边的数据源的编辑按钮全部是灰色的。

 点[新建]按钮选“一般数据源”。

 我们使用oracle来配置我们的jdbc数据源。

 

 填入相应的数据库的连接信息下一步下一步到如下这个界面:

 把数据源需要起作用的服务器即“target”要选中,因为在Weblogic里可以用一个控制台控制多个Server,那么你的数据源是针对哪台server起作用呢?你需要告诉Weblogic。

点击[完成]

4.2.5 调优Weblogic的数据源

记得点击控制台左上角的“激活并保存编辑修改”,要不然刚才所做的操作全部作废,保存后你会看到如上的信息。

点击我们刚才新建的数据源,”jdbc_cbbsds”

 进入此界面后点击左上角的“锁定并编辑”按钮,右边就是我们需要设置的值了。我们对“连接池”进行调整:

ü   初始容量

即最小数据连接数

ü   最大容量

最大数据连接数

ü   容量增长

每次增加的连接数

ü   语句高速缓冲类

为缓存选择 least-recently-used (LRU) 算法;这将从缓存中删除很少使用的语句。

还有一个值为Fixed。

LRU算法在有新的语句到来时,将最不经常被用得语句调整出缓存。FIXED算法为先进先出的算法。

一般应用我们使用LRU。

ü   语句高速缓冲大小

增加Statement Cache Size对于大量使用PreparedStatement对象的应用程序很有帮助,WebLogic能够为每一个连接缓存这些对象,此值默认为10。在保 证数据库游标大小足够的前提下,可以根据需要提高Statement Cache Size。比如当你设置连接数为25,Cache Size为10时,数据库可能需要打开25*10=250个游标。

那么我们的oracle数据库默认最大游标假设为1000,我们最大连接数设了25,那么这个statement cache的值就应该为:40,因为25*40=1000。

这个值不能过大,如果是开发环境上可以把这个值设为0,在生产环境上需要根据你oracle的max cursor数量进行实际设定,不是说越大越好的,千万不要拍脑袋啦!!!

注意:

和jvm的heap size一样,将“初始容量”与“最大容量”设成相等,根据oracle默认最大支持150个processor,那么oracle默认最大的连接数为 max processor*1.1即165,那么我们就给最大25最小25就够了,必竟我们只是一个测试。

配完上面的参数后点一下保存,然后我们点“高级”这个链接。

 高级有很多,我们一项项来过。

ü   保留时测试连接

请把此项打上勾。

我们的数据库连接池会不断的扫描我们的jdbc的连接使用情况,当发觉不用的jdbc连接时会“回收”掉它,因此你必须把这个选项的勾打上,要不 然,weblogic的数据库连接池不会去扫描你的不用的连接或者长时间不活动的连接,此选项将有助于你系统的稳定性。比如说:有时我们碰到一些忘关的连 接或者废弃的连接,那么weblogic将会自动为我们“回收”这些连接,以使得数据库连接池被充分利用。

ü   测试频率

这个值与上面的“保留时测试连接”是关联的,这个值默认为120秒,即2分钟,weblogic会产生一条探测语句“SQL SELECT 1 FROM DUAL”来探测你的oracle数据库中的连接,这个值绝对不能太小比如说:60秒,或者更有甚者设了个5秒,那么你的weblogic会不停的向 oracle发送“SQL SELECT 1 FROM DUAL”语句,并且造成大量的inactive状态的数据库连接,最后甚至把你的oracle数据库给活活搞死,搞死搞死。。。。。。而且是“挺尸”就 是数据库服务器动也动不了了,真的,不信你试试!J

一般在production环境上,如果相对稳定,可以把这个值,设大点,比如说:15分钟,或者20分钟探测一次。

ü   测试表名称

就是“探测”数据库的语句,我们就用它的默认的,挺好,不变

ü   初始化 SQL

保持默认,我们这边没有特殊的初始化的步骤。

        

ü   重试创建连接的频率

尝试建立数据库连接的间隔秒数。

如果不设置此值,则在数据库不可用的情况下,创建数据源的操作将失败。如果已设置此值且在创建数据源时数据库不可用,则在您指定的秒数之后,WebLogic Server 将重新尝试在池中创建连接,并会不断尝试创建连接,直到创建成功。

如果设置为 0,则将禁用连接重试。

         我们此处就保持为0,没有特殊需求好failout的相关的需求(这个要根据客户的需求来定的)。

ü   登录延迟

         创建每个物理数据库连接前的延迟秒数。此延迟支持不能快速连续处理多个连接请求的数据库服务器。

在初始数据源创建及数据源生命周期内,每当创建物理数据库连接时都会有此延迟。

我们保持它为0。

ü   非活动连接超时        

保留连接处于不活动状态的秒数,该秒数过后WebLogic Server 将收回该连接并将其释放回连接池。

可以使用“非活动连接超时”功能收回泄漏的连接 - 未由应用程序显式关闭的连接。请注意,不能使用此功能来代替正常关闭连接。

如果设置为 0,则将禁用此功能。

如果上面的“保留时测试连接”、“测试频率”,“测试表名称”没有设置或者是“保留时测试连接”没有勾选,那么这个选项是没有用处的,因为它就是我 们上面提到的,Weblogic会自动为我们释放一个超时的连接,这个超时要和oracle数据库中的sql_time_out一致,比如说:60秒,我 们回收一个超时了的inactive的连接。

这个值的设定对我们数据库的稳定性和性能也有着很大的影响。

ü   最大等待连接数        

等待保留数据源的连接池中的连接时会阻塞线程的最大并发连接请求数。

来看它的默认值“2147483647”,这边可千万不要用默认值啊,要不然你的数据库也一样会在出现阻塞或者是死锁时活活被搞死,搞死搞 死。。。。。。而且是“挺尸”,为啥,一个阻塞了没事,这下好,一个阻塞了,然后它允许后面的连接继续进,进啊进啊进,你人又不可能天天时时分好盯着个 oracle的监控端看着它,好了,进到2147483647个连接时,数据库不死了才怪呢。

一般太平点的,给个合理的数量就可以了,比如说100或者是200,不要超过oracle数据库提供的最大max session数就可以了。

ü   连接保留超时   

保留连接池中的连接的调用超时之前经过的秒数。

如果设置为 0,则调用永远不会超时。

如果设置为 -1,则调用会立即超时(对数据库来说,这个值是最安全的,SQL语句一被调用就超时,然后经过上面的“非活动连接超时”后,会被weblogic的数据库连接池给回收。

ü   语句超时  

此时间后当前正在执行的语句将超时。

StatementTimeout依赖于底层 JDBC 驱动程序支持。WebLogic Server 使用 java.sql.Statement.setQueryTimeout() 方法将指定的时间传递给 JDBC 驱动程序。如果 JDBC 驱动程序不支持此方法,可能会引发异常错误并导致忽略超时值。

值为 -1 时禁用此功能。

值为 0 表示语句不会超时。

最小值:-1

最大值:2147483647

注:

下面三个选项保持默认选择,没有特殊应用时不需要设置。

ü   忽略正在使用的连接

即便仍在使用从池获取的连接,也能够将数据源关闭。

ü   固定到线程       

PinnedToThread 是一个能够改善性能的选项,它启用执行线程以保持已入池的数据库连接,即使在应用程序关闭逻辑连接之后。

启用 PinnedToThread 后,WebLogicServer 将在应用程序首次使用某个执行线程保留连接时将连接池中的一个数据库连接固定到此线程。当应用程序使用完此连接并调用 connection.close() (此方法在其他情况下会将连接返回到连接池) 时,WebLogic Server 会将该连接保留给执行线程,而不会将其返回连接池。当此后某个应用程序使用相同的执行线程请求连接时,WebLogic Server 将提供此线程已保留的这个连接。

使用 PinnedToThread,当多个线程尝试同时保留一个连接时,连接池上不会发生锁定冲突,对于试图在有限个数的数据库连接中保留同一个连接的线程,也没有冲突。

如果应用程序使用相同的执行线程同时保留连接池中的多个连接,WebLogic Server 将创建附加的数据库连接并同样将它们固定到此线程。

ü   已启用删除受影响的连接  

指定在应用程序使用底层供应商连接对象之后是否从连接池中删除连接。

如果禁止删除已占用的连接,必须确保该数据库连接适合由其他应用程序重用。

设置为真 (默认设置) 时,应用程序关闭逻辑连接后不会将物理连接返回给连接池。将关闭并重新创建此物理连接。

设置为假时,应用程序关闭逻辑连接后,物理连接将返回到连接池并可由该应用程序或其他应用程序重用。

全部设置完了,不要忘了点页面最下端的[保存]按钮,并且点左边菜单上方的[激活并更改]按钮,要不然你刚才的一切设置均作废。

 在保存后我们来点“监视”这个tab

 点“测试”

 Look, 测试成功。重启Weblogic(只有重启Weblogic才会使得“高级”配置里的参数生效)。

怎么重启:

ü   Windows下

直接ctrl+c,然后重新启动

ü   Linux下

尽量使用stopWebLogic.sh或者使用ps –ef |grep java,查到weblogic所属的进程,然后使用:

kill -9 进程号

来杀,这个太暴力了!!!

4.2.6 部署web应用

Weblogic是真正的J2EE App Server,它不仅可以布署WAR应用,还可以布署EAR应用包括EJB,而Tomcat是做不到的,它只能布署WAR应用,如果要布署EAR或者EJB需要安装和配置额外的插件。

确保你的web应用中web.xml里绑定的数据源的jndi名与weblogic里设定的数据库连接池的jndi名一致

                   oracle db

                   jdbc/cbbsds

                   javax.sql.DataSource

                   Container

                   Shareable

你布署的可以是一个“打碎了的符合war格式的目录”也可以是一个war包。

点左边菜单的“布署”,然后点“锁定并编辑”,然后右边的按钮就可以用了。

此时,点[安装],定位到你的要布署的WAR

 点下一步。

然后出错了,嘿嘿!

 打开WAR里的WEB-INF\下的web.xml看啊看,看到这一行:

                  

                            /myPageTag

                            /WEB-INF/tld/myPageTag.tld

                  

哦,知道了,weblogic的jstl校验很严格,原来在tomcat里工程跑的那叫一个欢呀,跑到weblogic里了,把这段改成下面这样的形式吧:

        

                  

                            /myPageTag

                            /WEB-INF/tld/myPageTag.tld

                  

        

看到区别没有?在外要多一对,嘿嘿,仔细,仔细!

改完后保存web.xml,重新回weblogic布署。

然后下一步下一步,下啊下啊下。。。再往下,到了这一步:

 点[保存]。

 点“激活更改”。在“产品模式(production mode)”下,每次作过什么动作都必须“激活更改”一下,才能生效,一定记住,下次就再也不提了。 

 布署好后,看这个状态,这边的状态是“准备就绪”,准备就绪不代表此应用可以用,要使它的状态变成激活状。

选中此应用前的checkbox

 选“为所有请求提供服务”。

 选“是”。

 就代表部署成功了,你此时可以打开一个IE输入:http://localhost:7001/cbbs,登录后一切正常,Weblogic下WAR应用布署成功。

五、整合Weblogic与Apache

还记得我在第一天的“之Apache整合Tomcat”中讲到过,apache和tomcat是通过mod_jk来派发java请求给tomcat的吗?那么一样,weblogic是通过mod_wl_apache的版本号.so来做同样的事。

从我们的FTP中可以得到这些.so文件(也可以直接上oracle官网上下这些.so文件,免费公开的),我们来看。

1)      拷贝mod_wl_22.so文件至apache的安装目录下的modules目录,如我的是:D:\tools\httpd\modules。

2)      打开httpd.conf文件,还记得我们在第一天中的httpd.conf文件吗?找到,在它的上面,敲一个回车,加入下面这一陀东西

LoadModule weblogic_module modules/mod_wl_22.so

   WebLogicHost localhost

   WebLogicPort 7001

   MatchExpression /cbbs/WEB-INF

   MatchExpression /cbbs/*WEB-INF

   MatchExpression /cbbs/*.action

   MatchExpression /cbbs/servlet/*

   MatchExpression /cbbs/*.jsp

   MatchExpression /cbbs/*fckeditor/editor/filemanager/connectors/*.*

   MatchExpression /cbbs/fckeditor/editor/filemanager/connectors/*

   WLLogFile logs/wlproxy.log

看这个MatchExpression,还记得mod_jk里的JKMount吗?到了Weblogic和apache映射就成了MatchExpression了。

另:

在production环境上应该WLLogFile logs/wlproxy.log这一句注释掉,避免较多的log影响服务器的性能。

注意在两个地方要把index.jsp放在首要位置:

1)       Web.xml文件中

           index.jsp

2)       Httpd.conf文件中

DirectoryIndex index.jsp index.html index.htm

启动ie,输入:http://shnlap93:7001/cbbs/

再来看weblogic控制台:

 Html等静态内容被apache解释了,而java的内容被weblogic解释了,这就是apache+weblogic。

后一天,我们将讲述利用apache+weblogic来实现集群,见识一下商业级App Server的强大吧!

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

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

相关文章

pytorch求导

pytorch求导的初步认识 requires_grad tensor(data, dtypeNone, deviceNone, requires_gradFalse)requires_grad是torch.tensor类的一个属性。如果设置为True,它会告诉PyTorch跟踪对该张量的操作,允许在反向传播期间计算梯度。 x.requires_grad 判…

TM4C123库函数学习(1)--- 点亮LED+TM4C123的ROM函数简介+keil开发环境搭建

前言 (1) 首先,我们需要知道TM4C123是M4的内核。对于绝大多数人而言,入门都是学习STM32F103,这款芯片是采用的M3的内核。所以想必各位对M3内核还是有一定的了解。M4内核就是M3内核的升级版本,他继承了M3的的…

【力扣每日一题】2023.8.5 合并两个有序链表

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目给我们两个有序的链表,要我们保持升序的状态合并它们。 我们可以马上想要把两个链表都遍历一遍,把所有节点的…

1-搭建一个最简单的验证平台UVM,已用Questasim实现波形!

UVM-搭建一个最简单的验证平台,已用Questasim实现波形 1,背景知识2,".sv"文件搭建的UVM验证平台,包括代码块分享3,Questasim仿真输出(1)compile all,成功!&…

【力扣每日一题】2023.8.8 任意子数组和的绝对值的最大值

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目给我们一个数组,让我们找出它的绝对值最大的子数组的和。 这边的子数组是要求连续的,让我们找出一个元素之和…

GG修改器安装与Root环境的安装

关于GG修改器大家应该都有一定的了解吧,就是类似于电脑端CE的一个软件。 GG修改器在百度云盘里请自行下载! 百度网盘链接:https://pan.baidu.com/s/1p3KJRg9oq4s0XzRuEIBH4Q 提取码:vuwj 那我要开始了! 本来不想讲GG…

Spring Boot集成EasyPoi实现导入导出操作

文章目录 Spring Boot集成EasyPoi实现导入导出操作0 简要说明1 环境搭建1.1 项目目录1.2 依赖管理2.3 关于swagger处理2.4 关于切面处理耗时1 自定义注解2 定义切面类3 如何使用 2.5 核心导入操作2.6 核心导出操作 2 最佳实线2.1 导入操作1 实体类说明2 业务层3 效果3 控制层 2…

常用抓包工具

Fiddler Fiddler 是一个很好用的抓包工具,可以用于抓取http/https的数据包,常用于Windows系统的抓包,它有个优势就是免费 Charles Charles是由JAVA开发的,可以运行在window Linux MacOS,但它是收费的,和…

httpd+Tomcat(jk)的Web动静分离搭建

动静分离是指将动态请求和静态请求分别交给不同的服务器来处理,可以提高服务器的效率和性能。在Java Web开发中,常见的动态请求处理方式是通过Tomcat来处理,而静态请求则可以通过Apache服务器来处理。本文将详细讲解如何结合Apache和Tomcat来…

面试热题(翻转k个链表)

给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改变节点内部的值&a…

ctfshow-web7

0x00 前言 CTF 加解密合集 CTF Web合集 0x01 题目 0x02 Write Up 通过尝试,发现是数字型的注入,并且同样是过滤了空格 判断字段 获取一下flag即可 1/**/union/**/select/**/1,flag,3/**/from/**/web7.flag#&passworda以上

Spring接口ApplicationRunner的作用和使用介绍

在Spring框架中,ApplicationRunner接口是org.springframework.boot.ApplicationRunner接口的一部分。它是Spring Boot中用于在Spring应用程序启动完成后执行特定任务的接口。ApplicationRunner的作用是在Spring应用程序完全启动后,执行一些初始化任务或处…

【框架篇】MyBatis 介绍及使用(详细教程)

一,MyBatis 介绍 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO&#xff…

Oracle以逗号分隔的字符串拆分为多行数据实例详解

前言 近期在工作中遇到某表某字段是可扩展数据内容,信息以逗号分隔生成的,现需求要根据此字段数据在其它表查询相关的内容展现出来,第一想法是切割数据,以逗号作为切割符,以下为总结的实现方法,以供大家参…

微服务 云原生:基于 Gogs + Drone 进行项目 CI/CD

传统构建部署 以一个简单的前后端项目来说,分别编写前后端的 Dockerfile 文件并构建镜像,然后编写 docker-compose.yml 构建部署,启动运行。 一个简单的例子: 前端: 项目名:kubemanagement-web技术栈&am…

tomcat配置文件和web站点部署(zrlog)简介

一.tomcat/apache-tomcat-8.5.70/conf/server.xml组件类别介绍 1.类别 2.Connector参数 3.host参数 4.Context参数 二.web站点部署(以zrlog为例) 1.将zrlog的war包传到webapps下面 2.在mysql数据库中创建zrlog用户并赋予权限 3.完成安装向导,登录管理界面即可…

[golang gin框架] 45.Gin商城项目-微服务实战之后台Rbac微服务之角色权限关联

角色和权限的关联关系在前面文章中有讲解,见[golang gin框架] 14.Gin 商城项目-RBAC管理之角色和权限关联,角色授权,在这里通过微服务来实现角色对权限的授权操作,这里要实现的有两个功能,一个是进入授权,另一个是,授权提交操作,页面如下: 一.实现后台权限管理Rbac之角色权限关…

手眼标定眼在手上

1、为什么要用手眼标定(在贴片机上定位已调通) 参考手眼标定特别是眼在手上在网上的文章很多,但很多在实际中调试不通。在定位时候,往往希望相机能返回的是机械的世界坐标,而不是相机的的图像坐标。从而间接计算出相机…

arcgis--数据库构建网络数据集

1、打开arcmap软件,导入数据,如下: 该数据已经过处理,各交点处均被打断,并进行了拓扑检查。 2、在文件夹下新建文件数据库,名称为路网,在数据库下新建要素类,并导入道路shp文件&…

BIO,NIO,AIO总结

文章目录 1. BIO (Blocking I/O)1.1 传统 BIO1.2 伪异步 IO1.3 代码示例 1.4 总结2. NIO (New I/O)2.1 NIO 简介2.2 NIO的特性/NIO与IO区别1)Non-blocking IO(非阻塞IO)2)Buffer(缓冲区)3)Channel (通道)4)Selector (选择器) 2.3 NIO 读数据和写数据方式…