weblogic连接池配置及相关异常解决
- 格式:doc
- 大小:31.00 KB
- 文档页数:3
一、新建数据源
1、登录weblogic控制台,进入控制台首页。
点击数据源按钮,进入数据源配置页面,如下图:
2、点击激活按钮,激活修改状态,如下图:
3、进入数据源创建页面后,点击新建按钮,创建数据源,如下图所示:
4、进入数据源信息配置页面
“agentDS”,应用程序里面要调用到。
6、点击“next”按钮,进入下一步,如下图:
用户名、密码需要根据实际情况配置,这里给出的只是一个演示参数。
8、点击测试按钮,测试数据源配置是否成功,如下图:
9、如出现下图所示的绿色提示信息,则说明配置成功。
点击next按钮进入下一步,如下图:
10、将数据源关联到服务上后,点击完成按钮。
如下图:
11、点击修改激活按钮,激活数据源配置,如下图:
12、点击激活修改,进行数据源连接池配置,如下图:
13、勾选复选框,再点击下图中红色框选中的部分,如图所示:
14、进入连接池配置页面后,点击图中红色方框部分,如下图:
15、进入连接池参数配置页,如下图:
16、配置连接池连接参数,如下图:
17、点击保存按钮,进入下一步,如下图:
18、点击修改激活按钮,激活连接池配置,如下图:
19、如果出现下图绿色部分信息,则数据源连接池配置完成。
20、到此,所有的数据源配置已经完成,将应用的war包发布到weblogic上。
64位weblogic11g安装部署以及常见问题解决方案目录(一) 安装 (1)在Windows 64位操作系统安装Weblogic的注意事项 (3)(二) 部署运行 (3)1. 包引入错误 (3)2.乱码现象 (3)3.mime-typeType配置问题 (4)4.应用不存在 (4)5.ClassNotFoundException: org.hibernate.hql.ast.HqlToken (4)6.weblogic部署war包action不能访问问题解决方法[There is no Action mapped fornamespace / and action name] (5)ng.StackOverflowError (5)(一)安装我们在64位的服务器上为提高性能要安装64位的weblogic。
经常在网上看到有人问,weblogic有64位的么?weblogic需要破解么?weblogic有专门的64位版本,这里安装的是weblogic11g,也就是10.3.6版本,12c的版本安装应该类似。
weblogic从bea被oracle收购后,不需要破解,就只有授权。
什么意思呢?就是说从oracle官网上下载的weblogic 就是全功能版本,不管是集群还是其他,功能没有任何限制。
但是如果要用于商业环境,必须要向oracle买license,当然可以偷偷的用,那就是盗版,侵权,有一天oracle可以告的破产……。
1、下载64位weblogic,打下这个地址::// oracle/technetwork/middleware/ias/downloads/wls-main-097127.html,在这里可以看到除了mac os X操作系统外,其他系统的64位都是同一个版本,wls1036_generic.jar。
如下列图,weblogic的下载需要注册一个oracle官网的帐号。
2、下载64位JDK,我们下载的文件wls1036_generic.jar文件里面不包括JDK,如有可能, 请尽量在Windows/Linux平台下使用JRockit虚拟机,下载地址::// oracle/technetwork/middleware/jrockit/downloads/index.html。
中间件故障诊断总结一、步骤:1、准确描述现象:客户说的和自己查看到的:平台、版本、操作、信息等。
特别是,故障前是否有做过什么操作:网络调整、设备调整、主机参数调整、配置文件修改……反正将这一切都列入排查的对象。
2、使用工具收集数据,收集配置文件、日志、dump文件等等。
3、使用分析数据,根据问题或收集的数据,使用适当的工具分析数据,当然包括了在网上和在官方支持站点搜索类似的问题的解决办法。
4、尝试解决问题,根据找到的问题点,尝试解决。
如修改错的,复原正确的;运行有问题的,适当调整运行的环境和运行的参数等等。
5、给出最佳解决方案,一般就是继续观察了。
6、总结经验并加以重用,知识积累。
二、通过前台收集基本的信息:1、重点是故障前做过的操作2、比对运行平台是否在官方的兼容性列表中,一般就是关注各个版本,特别是一些比较怪异的问题3、检查环境和参数,如能打开控制台,就在控制台中初步观察,一般进入控制台的格式是如:。
常用的留意点如下:A、域运行状态(域-监视-健康状况);一般为running状态,如果不是running,那这些界面就没有了。
B、服务器运行状态(域-环境-服务器),正常的为running。
C、各个server性能(JVM)状态(域-环境-服务器,点击具体的serve后进入,监视-健康状况);留意JVM堆中当前可用的内存量。
不同的JVM,所显示的内容可能不一样,以下为sun的:D、各个server线程状态(域-环境-服务器,点击具体的serve后进入,监视-线程);一般来说,空闲线程要多;健康状况为ok如下图health状态为:Warning,这个是有线程阻塞的。
阻塞线程的内容为:####<2011-8-13上午02时42分35秒GMT+08:00><Error><WebLogicServer><dataweb1><dc_admin1><[ACTIVE]ExecuteThre ad:'15'forqueue:(self-tuning)'><<WLSKernel>><><><BEA-000337><[STUCK]Execut eThread:'19'forqueue:(self-tuning)'hasbeenbusyfor"2,492"secondsworkingonth erequestwhichismorethantheconfiguredtime(StuckThreadMaxTime)of"2,400"secon ds.Stacktrace:Method)Source)E、JDBC(域-环境-服务器,点击具体的serve后进入,监视-JDBC);活动连接数合理。
一、weblogic数据源配置进入到weblogic控制台,找到服务→jdbc→数据源,锁定并编辑后,新增数据源. 进入到新建页面,如下图:修改配置如下:注意,上面的jndi名称,需要在torConfig.xml配置文件中用到点击下一步(此步不需修改配置),再点击下一步,进入到如下页面:修改配置:数据库名称,即oracle的实例名(SID),主机名:可以输入oracle数据库所在机器的IP,端口号,根据实际情况输入,用户名和密码都根据实际生产环境的配置输入.以上配置,可以根据目前的torConfig.xml文件中的数据库连接方式把相应的配置录入到页面即可.如下图为我本机的配置:再点击下一步,出现如下图的页面:根据前一步数据库配置不同,有些数据与下图会不一样,点击测试配置,如果显示连接测试成功即表示配置成功:测试成功后,点击下一步,选择对应的运用服务,点击完成即可.(备注:每次修改保存后、都需要激活更改)激活以后,再次选择jdbc数据源,并点击“锁定并编辑”,选择对应的数据源,点击进入,会到以下页面:选择连接缓冲池,进入以下页面:调整初始容量为:30,最大容量为250(目前客户生产环境,设置的oracle最大连接数为300),容量增长为:15;语句缓存大小为:30;根据上面的配置调整后,激活更改,weblogic的数据源配置即可完成二、tor数据库连接配置把TORConfig.xml文件中目前的配置,如下代码,注释掉:<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource" destroy-method="close"><property name="driver"><value>oracle.jdbc.driver.OracleDriver</value></property><property name="driverUrl"><value>jdbc:oracle:thin:gzldoa/*************.1.201:1521:ldoadev</value></property><property name="user"><value>gzldoa</value></property><property name="password"><value>toone</value></property><property name="alias"><value>gzwork</value></property><property name="houseKeepingSleepTime"><value>90000</value></property><property name="prototypeCount"><value>5</value></property><property name="maximumConnectionCount"><value>100</value></property><property name="minimumConnectionCount"><value>10</value></property><property name="trace"><value>true</value></property><property name="verbose"><value>true</value></property></bean>新增jndi连接方式配置:<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"><value>ldjoa</value></property></bean>后保存即可,注意需要把上面的ldjoa改成刚在weblogic控制台配置的jndi名称。
Weblogic集群多播配置故障排除使用IP 多播时,群集中的WebLogic Server 实例可以共享一个IP 地址和端口号。
此功能使得群集的所有成员可被视为一个实体,并且使得群集成员能够互相通信。
下列部分提供了对IP 多播配置问题进行故障排除的建议:验证多播地址和端口配置识别网络配置问题使用MulticastTest 实用工具调整多播功能调试多播杂项问题多播配置故障排除的其他资源有关在群集中使用和配置多播的常规信息,请参阅群集配置和config.xml。
有关在控制台中配置多播地址的信息,请参阅“管理控制台联机帮助”中的多播。
验证多播地址和端口配置多播问题故障排除过程的第一步是验证您是否正确配置了多播地址和端口。
必须为每个群集正确配置多播地址。
多播地址和端口配置问题属于群集无法启动或者服务器无法加入群集的最常见原因。
对于多播地址要注意下列事项:多播地址必须是介于224.0.0.0 和239.255.255.255 之间的IP 地址,或者具有此范围IP 地址的主机名。
WebLogic Server 使用的默认多播地址是239.192.0.0。
不要使用任何x.0.0.1 多播地址,其中x介于0 和9 之间(包括0 和9)。
可能的错误由于多播配置问题经常会出现下列类型的错误:无法为群集创建多播套接口多播套接口发送错误多播套接口接收错误检查多播地址和端口要检查多播地址和端口,请执行下列操作:通过WebLogic Server 管理控制台检查群集多播地址和端口,或检查config.xml 中<cluster>元素的多播信息。
识别网络配置问题验证了多播地址和端口配置正确之后,请确定网络问题是否正在干扰多播通信。
物理连接确保网络中不存在物理问题。
验证群集中每个承载服务器的计算机的网络连接。
验证网络的所有组件是否正确连接并且运行正常,其中包括路由器和DNS 服务器。
地址冲突网络中的地址冲突可能会对多播通信造成干扰。
1Weblogic9.2 在linux下启动很慢打开setDomainEnv.sh 增加-Djava.security.egd=file:/dev/zero修改参数为JAVA_OPTIONS="${JAVA_OPTIONS} -Djava.security.egd=file:/dev/zero"2Windows x64 jrockit 启动3000M 报OutOfMemoryng.OutOfMemoryError: class allocation, 153359080 loaded, 154140672 footprint JVM@check_alloc(src/jvm/model/classload/classalloc.c:118). 19416 bytes通过修改启动内存,设置4G以上3后台日志出现以下报错User <anonymous> does not have permission on weblogic.management.home to perform lookupoperation1、网上找到的解决方案是:打开weblogic控制台,点击你部署工程的那个domain,在右边主页的下面有一个“View Domain-wide Security Settings”连接,点开它,看看复选框“Anonymous Admin Lookup Enabled”前面是没选的,把它勾上。
2、使用了1中的解决方案还是报这个错误,经过高手提醒后发现原因:如果一个weblogic.xml中包含以下的内容:<container-descriptor><prefer-web-inf-classes>true</prefer-web-inf-classes></container-descriptor>这个配置的意思是使weblogic优先加载应用WEB-INF/lib下面的jar包。
WebLogic调优参数配置WebLogic 配置文件(config.xml)包含了大量很直观的与性能有关的参数,能通过配置环境与应用程序得到很好的优化。
基于系统的需要调整这些参数不仅能改善单个点的性能,而且能提高整个应用程序性能的可衡量性。
试着采用下列WebLogic配置方法,或许能使你的系统达到最佳状态:一. 修改运行队列线程数的值。
在WebLogic 中队列元素的线程数等于同时占用运行队列的应用程序的数目。
当任务加入一个WebLogic 实例,它就被放到执行队列中,然后分配给任务一个线程来运行。
线程消耗资源,因此要小心处理这个属性——增加不需要的值,会降低性能。
二. 如果可能,使用自带的性能包(NativeIOEnabled=true)。
三. 使用特定的应用程序执行队列。
四. 使用JDBC连接池时,修改下列属性:●驱动名称:使用小的驱动或者jDriver。
●初始容量:设为与最大容量相同的值。
●最大容量:其值至少应与线程数相同。
五. 把连接池的大小设为与执行队列的线程数相同。
六. 设置缓冲。
七. 为Servlet和JSP使用多个执行队列。
八. 改变JSP默认的Java编译器,javac 比jikes或sj要慢。
提要:为 WebLogic 启动设置 Java 参数。
设置与性能有关的配置参数。
调整开发与产品模式默认值。
使用WebLogic “自有的IO ”性能包。
优化默认执行队列线程。
优化连接缓存。
如何提高 JDBC 连接池的性能。
设置 Java 编译器。
使用 WebLogic 集群提高性能。
监视 WebLogic 域。
一、为 WebLogic 启动设置 Java 参数只要启动 WebLogic ,就必须指定 Java 参数,简单来说,通过 WebLogic.Server 域的命令行就可以完成,不过,由于这样启动的过程冗长并且易于出错, BEA 公司推荐你把这个命令写进脚本里。
为了简化这个过程,你可以修改样例脚本里的默认值,样例脚本是提供 WebLogic 启动服务器的。
数据源配置:常规可在域中标识该数据源地唯一名称.此数据源绑定到地路径.默认情况下,名称就是数据源地名称.要为数据源指定多个名,请在单独地行上分别输入每个名.查找路径地应用程序将得到与此数据源对应地实例.启用通过一次服务器访问“预取”(即从服务器发送到客户端)多个行.当外部客户端通过使用访问数据库时,行预取功能可以一次性地访问服务器来为客户端提取多行,从而提高性能.当客户端和位于同一中时,将忽略此设置且不使用行预取功能.如果启用行预取,则指定为客户端预取地结果集行数.最佳预取大小取决于此查询地具体设置.通常在达到特定值之前,增加此数字时性能会提高.达到此特定值后,即使再增加此数字,也不会使性能有任何显著地提高.如果超过行,提高性能地可能性将微乎其微.通常默认值即适用于大多数情况.最小值:最大值:指定流量数据类型地数据块大小.流数据类型(例如,调用()而得到地数据类型)将根据需要以按大小排列好地数据块形式从发送到客户端.最小值:最大值:数据源配置: 连接缓冲池配置选项要连接到地数据库地 . 地格式随驱动程序地不同而变化.用于在连接缓冲池中创建物理数据库连接地驱动程序类地完整包名.(请注意,此驱动程序类必须存在于将其部署到地任何服务器地类路径中.):传递给创建物理数据库连接时使用地驱动程序地属性地列表.例如: .请分别在单独地行上列出各个对.要启用驱动程序级功能,请将驱动程序属性及其值添加到“属性”列表. 设置驱动程序地对象上地“属性”列表中地驱动程序级属性.注意:由于安全方面地原因,当以生产模式运行时,您不能在此属性列表中指定数据库密码.如果在此属性列表中指定密码,那么数据源部署将会失败.要替代此安全检查,请在启动此服务器时使用命令行参数“”.创建物理数据库连接时传递给驱动程序地密码属性.该值以加密形式存储在描述符文件及显示在“管理控制台”中.请确认密码.要在创建连接缓冲池时创建地物理连接数.如果无法创建这一数量地连接,创建此连接缓冲池地操作将会失败.此连接数也是连接缓冲池将保持地最小可用物理连接数.最小值:最大值:此连接缓冲池可容纳地最大物理连接数.将新连接添加到连接缓冲池时创建地连接数.不再有可用地物理连接来满足连接请求时,会创建该数量地附加物理连接并将它们添加到连接缓冲池中.用于维护存储在语句缓存中地准备就绪地语句地算法.选项有:▪当使用新地预处理或可调用语句时,替换缓存中最近最少使用地语句.▪缓存前若干个固定数量地预处理和可调用语句.存储在缓存中地“准备就绪”语句和可调用语句地数量.(这样可能会提高服务器性能.)可以重用缓存中地语句而无需重新加载它们,这样便可提高服务器性能.连接缓冲池中地每个连接都有其自己地语句缓存.将语句缓存地大小设置为将会关闭该语句缓存.高级配置选项名称描述使能够在将连接提供给客户端之前对连接进行测试.(要求指定“测试表名称”.)此测试在响应客户端对缓冲池中地连接地请求时将添加短时间地延迟,但会确保客户端收到有效连接.对于使用故障转移算法地在多数据源中使用地连接缓冲池,该测试是必需地.对未用连接进行测试地间隔秒数.(要求指定“测试表名称”.)未通过测试地连接将被关闭,然后将它们重新打开以重新建立有效地物理连接.如果测试再次失败,则此连接将被关闭.如果设置为,定期测试将被禁用.测试物理数据库连接时使用地数据库表名.指定“测试频率”和启用“测试保留地连接数”时需要此名称.用于测试连接地默认代码为“ (*) ”大多数数据库服务器会优化此以避免对表进行扫描,但仍然建议将“测试表名称”设置为已知包含极少地行或不包含行地表地名称.如果“测试表名称”以“ ”开头,则此开始标记后面地字符串剩余部分将被视为用于测试连接地语句文字而非标准查询.在将连接传递到应用程序之前或定期连接测试过程期间,相信连接仍然有效并将跳过连接测试时使用连接地秒数.此选项是一种最佳选择,可以最大程度地减少连接测试对性能造成地影响(特别是在流量很大地时候).最小值:最大值:在收缩为满足需要而增大了地连接缓冲池前需等待地秒数.如果设置为,收缩将被禁用.最小值:最大值:要执行地、将初始化新建物理数据库连接地语句.以后跟一个空格作为语句地开头.如果“初始”值以“ ”开头,则此开始标记后面地字符串剩余部分将被视为用于初始化数据库连接地语句文字.如果“初始”值不以“ ”开头,该值将被视为表格地名称,并会使用下列语句来初始化连接:“ (*) ”表必须存在且此连接地数据库用户必须能够访问它.大多数数据库服务器会优化此以避免对表进行扫描,但仍然建议将设置为已知包含极少地行或不包含行地表地名称.建立数据库连接尝试地间隔秒数.如果不设置此值,则在数据库不可用地情况下,创建数据源地操作将失败.如果已设置此值且在创建数据源时数据库不可用,则在您指定地秒数之后,将重新尝试在缓冲池中创建连接,并会不断尝试创建连接,直到创建成功.如果设置为,连接重试将被禁用.最小值:最大值:创建每个物理数据库连接前地延迟秒数.此延迟支持不能快速连续处理多个连接请求地数据库服务器.在初始数据源创建及数据源生命周期内,每当创建物理数据库连接时都会有此延迟.最小值:最大值:保留连接处于不活动状态地秒数,该秒数过后将收回该连接并将其释放回连接缓冲池.可以使用“非活动连接超时”功能收回泄漏地连接未由应用程序显式关闭地连接.请注意,不能使用此功能来代替正常关闭连接.如果设置为,此功能将被禁用.最小值:最大值:等待保留数据源地连接缓冲池中地连接时会阻塞线程地最大并发连接请求数.最小值:最大值:保留连接缓冲池中地连接地调用超时之前经过地秒数.如果设置为,则调用永远不会超时.如果设置为,则调用会立即超时.最小值:最大值:此时间后当前正在执行地语句将超时.依赖于底层驱动程序支持. 使用()方法将指定地时间传递给驱动程序.如果驱动程序不支持此方法,可能会引发异常并导致超时值被忽略.值为时禁用此功能.值为表示语句不会超时.最小值:最大值:即便仍在使用从缓冲池获取地连接,也能够将数据源关闭.是一个能够改善性能地选项,它启用执行线程以保持已进入缓冲池地数据库连接,即使在应用程序关闭逻辑连接之后.启用后,将在应用程序首次使用某个执行线程保留连接时把连接缓冲池中地一个数据库连接固定到此线程.当应用程序使用完此连接并调用()(此方法在其他情况下将把连接返回到连接缓冲池)时,将把该连接保留给执行线程,而不会将其返回连接缓冲池.当此后某个应用程序使用相同地执行线程请求连接时,将提供此线程已保留地这个连接.使用,当多个线程尝试同时保留一个连接时,连接缓冲池上不会发生锁定冲突,对于试图在有限个数地数据库连接中保留同一个连接地线程,也没有冲突.如果应用程序使用相同地执行线程同时保留连接缓冲池中地多个连接,将创建附加地数据库连接并同样将它们固定到此线程.指定在应用程序使用底层供应商连接对象之后是否从连接缓冲池中删除连接.如果禁止删除已占用地连接,必须确保该数据库连接适合被其他应用程序重复使用.设置为(默认设置)时,应用程序关闭逻辑连接后将不把物理连接返回给连接缓冲池.将关闭并重新创建此物理连接.设置为时,应用程序关闭逻辑连接后,物理连接将返回到连接缓冲池并可由该应用程序或其他应用程序重复使用.。
1Weblogic1.1Weblogic安装方法1.1.1安装前准备一、安装包准备[1]:Weblogic 版本:91[2]:安装文件:server910_generic.jar[3]:本安装weblogic9服务器的IP是192.168.0.188二、创建用户[1]:groupadd weblogic[2]:useradd -d /home/weblogic -g weblogic weblogicpasswd weblogic[3]:修改目录和文件的属主和权限:chown –R weblogic:weblogic /home/weblogic[4]:将安装文件上传到weblogic用户的目录 /home/weblogic 1.1.2Weblogic图形界面安装[1]:使用创建的weblogic用户登录linux系统输入:java -jar server910_generic.jar[2]:进入图形安装界面:点击Next,进入下一步:点击Next,进入下一步:点击Next,进入下一步:点击Next,进入下一步:点击Next,进入下一步,开始安装:安装完成后,点击Next:点击Done,完成安装。
至此,Weblogic安装成功。
1.2Weblogic域(domain)1.2.1Weblogic域创建使用创建的weblogic用户登录linux系统,启用安装向导,运行/home/weblogic/weblogic91/common/bin/config.sh ,出现如下开始安装界面:选择“Create a new weblogic domain”(默认选中),并点击“Next”,出现下界面,如图:选择“Generate a domainconfigured ……”(默认选中),并点击“Next”:配置管理员用户名和密码,点击Next:配置启动模式和JDK:启动模式选择“Production Mode”;JDK选择系统自带SUN1.5JDK;点击Next,进入下一步,自定义环境和服务设置:选择“Yes”,并“Next”:配置服务器名、地址、及服务端口:服务器名使用默认(AdminServer);地址使用默认无需修改;服务端口输入“7000”;SSL不启用,无需选择,点击“Next”:配置受管理服务器:无需配置,跳过此步,点击“Next”:配置计算机:无需配置,跳过此步,点击“Next”:检查将要建立的Weblogic域是否正确,并点击“Next”:配置域名及路径:域名为“provdomain”;路径默认,点击“Create”, 开始创建domain:点击Done,完成domain的创建。
Weblogic监控jndi泄露连接的方法1说明如果后台出现“No resources currently available in pool iscjndi to allocate to applications”类似这个错误,说明weblogic 的数据库连接池满了:可以考虑通过此方法排查一下具体是程序中的什么方法导致。
查看数据源监控页面,如果“当前活动连接数”超过系统配置的最大数字(系统默认是15,优化之后为150),就会出现以上错误:最大连接数配置:2配置一:设置“非活动连接超时”参数设置后连接在指定时间内(单位:秒)没有活动的话,WebLogic会将之释放并回收到连接池。
设置步骤:“数据源-(数据源名称)-连接池-非活动连接超时”1、点击“数据源-(数据源名称)”2、选择“连接池”3、展开高级内容4、找到高级中“非活动连接超时”参数,设置为1004、保存配置3配置二:开启weblogic数据库连接泄漏日志设置步骤:“数据源-(数据源名称)-诊断-概要文件连接使用情况”1、点击“数据源-(数据源名称)”2、点击“诊断”3、选中“概要文件连接情况”、“概要文件连接泄露”:4、保存配置4查看日志在系统中操作,重现一下相关问题,同时监控weblogic日志,日志中会出现类似以下格式的异常信息,提供研发找到具体class进一步排查泄露原因。
注意:操作之后等待一段时间,weblogic自动回收连接时才产生日志,不是操作的时候立即产生。
日志文件位置:/app/weblogic/user_projects/domains/【domain名称】/servers/【server名称】/logs/【server名称】.log比如总部测试环境的日志文件位置:at mon.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:373)at mon.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:339)at mon.internal.ConnectionPool.reserve(ConnectionPool.java:469)at mon.internal.ConnectionPool.reserve(ConnectionPool.java:363)at mon.internal.ConnectionPoolManager.reserve(ConnectionPoolManager.java:125)at mon.internal.ConnectionPoolManager.reserve(ConnectionPoolManager.java:158)at weblogic.jdbc.pool.Driver.connect(Driver.java:132)at weblogic.jdbc.jts.Driver.getNonTxConnection(Driver.java:658)at weblogic.jdbc.jts.Driver.connect(Driver.java:127)at mon.internal.RmiDataSource.getConnectionInternal(RmiDataSource.java:548)at mon.internal.RmiDataSource.getConnection(RmiDataSource.java:513)at mon.internal.RmiDataSource.getConnection(RmiDataSource.java:506)at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81) at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:116)at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:109)at org.hibernate.engine.query.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:202)at org.hibernate.impl.SessionImpl.executeNativeUpdate(SessionImpl.java:1310)at org.hibernate.impl.SQLQueryImpl.executeUpdate(SQLQueryImpl.java:396)at erPostReleDao.updateUserBizRoleNum(UserPostReleDao.java:360)at erPostReleService.saveUserPost(UserPostReleService.java:77)at com.sgcc.isc.authorize.businessduty.action.BusinessDutyController.saveUserPost(BusinessDutyController.java:314)at com.sgcc.isc.authorize.businessduty.action.BusinessDutyController$$FastClassByCGLIB$$f3bff139.invoke(<generated>)at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:689)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)at org.springframework.aop.aspectj.AspectJAfterAdvice.invoke(AspectJAfterAdvice.java:42)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)at com.sgcc.isc.authorize.sync.aop.ServerAop.aroundMethod(ServerAop.java:138)at sun.reflect.GeneratedMethodAccessor639.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at ng.reflect.Method.invoke(Method.java:597)at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622)at com.sgcc.isc.authorize.businessduty.action.BusinessDutyController$$EnhancerByCGLIB$$94f3347a.saveUserPost(<generated>)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at ng.reflect.Method.invoke(Method.java:597)at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)atorg.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96) atorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617) atorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301)at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60)at mon.filter.AuthorFilter.doFilter(AuthorFilter.java:57)at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60)at mon.filter.CurrentThreadContextInitFilter.doFilter(CurrentThreadContextInitFilter.java:43)at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60)at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3748)at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3714)at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2283)at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2182)at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1491)at weblogic.work.ExecuteThread.execute(ExecuteThread.java:263)at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)。
Weblogic常见报错以及解决⽅法[转载]Weblogic常见报错以及解决⽅法[转载]2020-09-13 09:55:22 4109 收藏 11⽂章标签:前⾔:Oracle WebLogic中间件在⽹站部署过程中经常会使⽤到。
该产品系列的核⼼是Oracle WebLogic服务器,它是⼀个功能强⼤和可扩展的Java EE服务器。
今天整理了在运维过程中经常会遇到的各种报错以及解决⽅法,纯技术⼲货,希望能够对正在学习weblogic过程中的您提供帮助。
weblogic有两种部署⽅式,单点模式和集群模式,单点模式直接创建⼀个域,在控制台进⾏程序部署即可;⽽集群模式分为admin(管理)节点和Managed(被管理)节点,管理节点通过控制台对被管节点进⾏管理,程序部署在被管节点的集群上。
不论是单点模式,还是集群模式,常见的报错基本⼀致。
基本概念Domain :域是作为单元进⾏管理的⼀组相关的 WebLogic Server 资源。
⼀个域包含⼀个或多个 WebLogic Server 实例,这些实例可以是集群实例、⾮群集实例,或者是集群与⾮群集实例的组合。
⼀个域可以包含多个集群。
域还包含部署在域中的应⽤程序组件、此域中的这些应⽤程序组件和服务器实例所需的资源和服务。
应⽤程序和服务器实例使⽤的资源和服务⽰例包括计算机定义、可选⽹络通道、连接器和启动类。
Domain 中包含⼀个特殊的 WebLogic 服务器实例,叫做 Administration Server,这是我们配置管理Domain中所有资源的核⼼。
通常,我们称加⼊Domain中的其他实例为 Managed Server,所有的Web应⽤、EJB、Web Services和其他资源都部署在这些服务器上。
Administration Server :管理服务器是控制整个域配置的中⼼操作节点,管理服务器维护着整个域的配置并将配置分配到每个被管理服务器 Managed Server 中。
weblogic运维时经常遇到的问题和常⽤的配置希望这篇能把weblogic运维时经常遇到的问题、常⽤的配置汇总到⼀起。
1、配置jvm参数:⼀般在domain启动过程中会看到以下启动的⽇志信息,如下图所⽰:图中红⾊⽅框部分为启动weblogic domain的命令。
其中包括了jvm参数以及classpath信息。
【注意】java -client是由于之前建⽴的domain是开发模式的。
⽣产模式的话,这⾥执⾏的是java -server。
⾄于-client与-server的区别,⼤家去google下吧,这⾥不介绍了。
那如何修改这个配置呢?找到setDomainEnv.cmd⽂件(linux下⾯就是setDomainEnv.sh了),位置为:weblogic11\user_projects\domains\example\bin\setDomainEnv.cmd修改⽂件中的MEM_ARGS部分,相关参数配置如下:Java代码1. call "%WL_HOME%\common\bin\commEnv.cmd"2.3. set WLS_HOME=%WL_HOME%\server4.5. if "%JAVA_VENDOR%"=="Sun" (6. set WLS_MEM_ARGS_64BIT=-Xms256m -Xmx512m7. set WLS_MEM_ARGS_32BIT=-Xms256m -Xmx512m8. ) else (9. set WLS_MEM_ARGS_64BIT=-Xms512m -Xmx512m10. set WLS_MEM_ARGS_32BIT=-Xms512m -Xmx512m11. )12.13. set MEM_ARGS_64BIT=%WLS_MEM_ARGS_64BIT%14.15. set MEM_ARGS_32BIT=%WLS_MEM_ARGS_32BIT%16.17. if "%JAVA_USE_64BIT%"=="true" (18. set MEM_ARGS=%MEM_ARGS_64BIT%19. ) else (20. set MEM_ARGS=%MEM_ARGS_32BIT%21. )22.23. set MEM_PERM_SIZE_64BIT=-XX:PermSize=128m24.25. set MEM_PERM_SIZE_32BIT=-XX:PermSize=48m26.27. if "%JAVA_USE_64BIT%"=="true" (28. set MEM_PERM_SIZE=%MEM_PERM_SIZE_64BIT%29. ) else (30. set MEM_PERM_SIZE=%MEM_PERM_SIZE_32BIT%31. )32.33. set MEM_MAX_PERM_SIZE_64BIT=-XX:MaxPermSize=256m34.35. set MEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=128m36.37. if "%JAVA_USE_64BIT%"=="true" (38. set MEM_MAX_PERM_SIZE=%MEM_MAX_PERM_SIZE_64BIT%39. ) else (40. set MEM_MAX_PERM_SIZE=%MEM_MAX_PERM_SIZE_32BIT%41. )42. if "%JAVA_VENDOR%"=="Sun" (43. if "%PRODUCTION_MODE%"=="" (44. set MEM_DEV_ARGS=-XX:CompileThreshold=8000 %MEM_PERM_SIZE%45. )46. )47.48. @REM Had to have a separate test here BECAUSE of immediate variable expansion on windows49.50. if "%JAVA_VENDOR%"=="Sun" (51. set MEM_ARGS=%MEM_ARGS% %MEM_DEV_ARGS% %MEM_MAX_PERM_SIZE%52. )53.54. if "%JAVA_VENDOR%"=="HP" (55. set MEM_ARGS=%MEM_ARGS% %MEM_MAX_PERM_SIZE%56. )57.58. if "%JAVA_VENDOR%"=="Apple" (59. set MEM_ARGS=%MEM_ARGS% %MEM_MAX_PERM_SIZE%60. )61.62. @REM IF USER_MEM_ARGS the environment variable is set, use it to override ALL MEM_ARGS values63.64. if NOT "%USER_MEM_ARGS%"=="" (65. set MEM_ARGS=%USER_MEM_ARGS%66. )主要就是修改-Xms、-Xmx、-XX:PermSize、-XX:MaxPermSize的参数(视具体硬件、JVM负载情况进⾏修改)。
Weblogic连接池自动重连参数设置的方法
1、登录Weblogic控制台,点击JDBC-Connection Pools中的连接1(MyJDBC Connection Pool),选择Connections标签页,点击右下方的【Show】按钮,展开高级设置页面。
2、在以下页面中,进行以下设置(如下图所示):
(1)Test Frequency:测试频率。
将此项设置为60秒。
(2)Test Reserved Connections:此项为测试保留的连接。
勾选此复选框。
(3)Test Created Connections:此项为测试创建的连接。
勾选此复选框。
(4)Test Released Connections:此项为测试回收的连接。
勾选此复选框。
(5)Connection Reserve Timeout:保留连接的超时时间。
将此项设置为30秒。
(6)Connection Creation Retry Frequency:创建连接重试的频繁。
将此项设置为30秒。
3、按照上述方法,对连接2(MyJDBC Connection Pool1)进行设置。
连接池配置数据库断掉后自动重连进入某个连接池配置页,进入“连接“页,点击高级选项的”show “显示高级选项。
指定"测试频率" 并启用"测试保留的连接"、"测试创建的连接" 和"测试释放的连接"。
测试频率(Test Frequency): 60 秒自动数据库连接测试之间的秒数(0 - 32 位正整数)。
测试失败的连接将被关闭,然后重新打开以重新建立有效的物理数据库连接。
(必须在下面指定测试表名称。
)The number of seconds (between 0 and a positive 32-bit integer) between automatic database connection tests. Connections that fail the test are closed and reopened to re-establish a valid physical database connection. (You must specify a Test Table Name below.)测试保留的连接(Test Reserved Connections)指定WebLogic Server 是否在将连接提供给客户端之前测试该连接。
(必须在下面指定测试表名称。
)Specifies whether WebLogic Server tests a connection before giving it to the client. (You must specify a Test Table Name below.)测试创建的连接(Test Created Connections)指定WebLogic Server 是否在创建连接后且将该连接添加到缓冲池中可用连接列表之前对该连接进行测试。
(必须指定测试表名称。
WebLogic 11g 配置数据库连接池----浪花滚滚一、手动配置1.创建web工程index.jsp页面的部分代码如下:DbConn类:Authors类:AuthorsDao类:2.把数据库驱动jar包拷到E:\bea\wlserver_10.3\server\lib目录下。
(以下以SQLServer 2005 为例)3.用记事本打开D:\bea\user_projects\domains\base_domain\bin\setDomainEnv.cmd在最后加入以下代码:setCLASSPATH=%PRE_CLASSPATH%;%WEBLOGIC_CLASSPATH%;%POST_CLASSPA TH%; %WLP_POST_CLASSPA TH%;%WL_HOME%\server\lib\sql2005jdbc.jar其中“\server\lib\sql2005jdbc.jar”是驱动JAR包的路径4.启动WebLogic服务,将工程导出war包,手动部署该web应用程序。
看到有sql2005jdbc.jar的信息,说明驱动加载成功。
如果没有,检查setDomainEnv.cmd配置文件中书写的路径。
5.打开服务器配置页面。
在左侧菜单栏选择数据源6.启动数据库服务,配置数据库。
这里就以PUBS数据库为例。
7.点击“新建”取一个别名,也可以用默认的。
选择数据库类型级数据库驱动下一步8.使用默认的选择,继续下一步。
9.填写连接属性。
10.点测试配置,看是否连接测试成功。
注意这里只是测试数据库驱动是否正确。
11.为服务器部署数据源。
12.完成。
13.点击该数据源名称测试数据源。
14.至此,连接池配置成功!15.打开页面测试。
同时,控制台页面也会输出程序中System.out.println();的内容:二、在myeclips中配置1.打开myeclips中的服务器配置界面,找到WebLogic 10.x,点Paths。
Weblogic 10.3.2配置连接池步骤:一、创建域:1.运行设置向导(Configuration Wizard):2.创建新的Weblogic域:3.选择域源:4.指定域名和位置:5.配置管理员用户名和口令:口令最少为8个字符:口令格式:6.配置服务器启动模式和JDK:7.选择可选配置:(默认即可)8.配置概要:9.创建域:至此,weblogic域建立成功!二、配置连接池数据源:1.讲需要的jar驱动包复制到用户创建的域下面:Oracle\Middleware\user_projects\domains\base_domain\lib 2.启动服务:3.登录后台进行连接池的配置:a)等待部署b)登录:c)配置数据源:服务-JDBC-数据源-新建d)输入数据源名称-JNDI名称-指定数据库类型和驱动程序:e)事务处理:(默认)f)连接属性:g)测试配置:h)选择目标服务器:i)配置完成:三、在MyEclipse 8.6中测试是否能拿到连接:1.如何在MyEclipse中添加Weblogic服务器:Window-Preferences-MyEclipse-Servers-WebLogic-WebLogic 10.x也可直接通过工具栏选Configure Server先选择BEA home路径也就是weblogic的目录,然后把用户名和密码填好,这样就可以用自动部署了。
创建测试项目:直接在JSP页面用小脚本获取连接:代码如下:<%// 初始化上下文Context context = new InitialContext();// lookup得到数据源DataSource ds = (DataSource) context.lookup("demo1032");// 得到连接Connection con = ds.getConnection();// 输出连接out.print(con);%>2.部署:3.启动服务并测试:张劼:QQ:857268。
WebLogic JNDI连接池的配置
1.console登陆,点击左边AdminServerName -> Services -> JDBC -> DataSources
2. 点击左上角的Lock & Edit
3. 点击DataSources中的New按钮
4. Name输入连接的名字(建议用数据库的名字命名便于区分),JNDI Name是JNDI连接的名字,在调查管理系统中统一使用SurveyJNDI作为JNDI Name,数据库类型选择Oracle,数据库Driver如图选择*Oracle’s Driver (Thin) Versions:9.0.1.9.2.0.10,点击Next进入下一步。
5.这里使用默认设置即可,点击Next进入下一步。
6.这个页面是设置数据库连接的详细信息,DatabaseName需要连接的数据库名称,
HostName输入数据库的IP或者主机名,Port是连接端口,使用默认的1521,之后输入连接的用户名和密码,并输入确认密码,点击Next进入下一步。
7.这个页面是让你确认之前填写的设置,还可以点击Test Configuration测试连接是否成
功,如果成功,会出现Connection test succeeded.的提示,点击Next进入下一步。
8.勾选AdminServer连接池自动启动,点击Finish完成设置。
1、配置连接池通过IP/console进入管理控制台(如果不知道用户名和密码可以通过以下方式进入:右击StartWebLogic.sh快捷方式,选择“编辑”,在文本中可以找到用户名和密码)
在左侧菜单中依次进入mydomain(自定义的域名称)-服务-JDBC-连接缓冲池
点击“配置新的JDBC Connection Pool... ”
数据类型选择:Oracle
数据库驱动程序选择:Oracle's Driver (Thin) Version:9.0.1,0.2.0,10
点击右下角的“继续”
在名称中写入想要设置的连接池名称如myConnection
数据库名称:要访问的数据库名称
主机名:写入数据库服务器的主机名称或IP地址
端口号默认为:1521
数据库用户名称、密码
点击“继续”
在下一页中点击“测试驱动程序配置”显示“连接成功”
点击“创建和部署”
在新页面的列表中出现mpConnection的配置项
连接池配置完毕
2、配置JDBC数据源
在管理控制台左侧菜单中依次进入mydomain(自定义的域名称)-服务-JDBC-数据源
点击“配置新的JDBC Data Source”
在名称中写入要配置的数据源名称myConnection
在JNDI名称中写入访问的名字pc/ora9)
点击“继续”
在缓冲池名称中选择myConnection
点击“继续”、“创建”
在列表中出现myConnection配置项
数据源配置完毕
异常解决:
<Error><JDBC><001059><Error during Data Source creatrion:mon. ResourceException:DataSource(MeetingDataSource) be created with non-exitstent Pool(connection or multi)(japool)
<Error><EJB><010070><Error activating Platform_AppMng.jar
Exception is:
Unable to deploy EJB:AppInfoEntity from Platform_AppMng.jar:
Weblogic.ejb20.WLDeploymentException:The DataSource with the JNDI name:DataSource Could not be located.Please ensure that the DataSourece has been deployede successfully and that the JNDI Name in your EJB Deployment descriptor is correct.
<Error><Deployer><149231><The slave deployer was unable to set the activation state to true for The application_appsdir_platfor_AppMng.jar
Weblogic.management.ApplicationException:activate failed forPlatform_AppMng.jar
Module Name:Platform_AppMng.jar,Error:Exception activating module:EJBModule(
Platform_AppMng.jar,status=PREPARED)
Unable to deploy EJB:AppInfoEntity from Platform_AppMng.jar
Weblogic.ejb20.WLDeploymentException:The DataSource with the JNDI name:DataSource Could not be located.Please ensure that the DataSourece has been deployede successfully and that the JNDI Name in your EJB Deployment descriptor is correct.
<Alert><WebLogicServer><000297><Inconsistent security configuration,ng.Exception: Certificate expired or not yet valid:
<Emergency><Security><090034><Not listening for SSL,java.io.IOException:Inconsistent Security configuration,Certificate expired or not yet valid:
打开浏览器后页面报错:
Error 500—Internal Server Error
10.5.1 500—Internal Server Error
后台报错:
-log- Config:Failed get Property cop.databaseConnectionUser
-log- Config:Failed get Property cop. databaseConnectionPassword
-log- Config:Failed get Property cop.webappserver Initial Context Factory
-log- Config:Failed get Property cop.webappserver ProviderUrl
-exp- NotFoundException:unable to resolve ‘wegovDataSourece’
-exp- getConnection is failed
-exp- ng.NullPointerException
-exp- process funtion is failed
-exp- wad2.helper.WADHelperException
-exp- WAD-Helper-connection is null
<Error><HTTP><101017><[ServletContext(...)]Root Cause of ServletException
ng.NullPointer Exception
这个异常时JDBC连接池的错误,是用户操作过程中改了数据库用户的密码造成的,解决方法:在JDBC数据库连接池中将密码改掉,然后“apply”,然后重启webLogic问题得到解决。