weblogic book
weblogic安装
安装完全参考此链接,条理清晰:
http://blog.csdn.net/juluce133/article/details/9774327 源文
http://blog.163.com/ng_0125@126/blog/static/170162360201311773235995 引用
我的其它笔记:
Linux下Weblogic 11g R1安装和配置 (引用自其它网站,但做了少量补充)
weblogic每天日志合并shell脚本 [个人记录]【转】【补】
weblogic的本机AdminServer和其它机器上的Nodemanager互联的配置【原】
先搞清楚版本
WebLogic Server 11g (10.3.6)
WebLogic Server12c (12.1.1)
weblogic 启动与关闭
第一步启动"管理服务器": nohup ./startWebLogic.sh & (或nohup ./startWebLogic.sh > ./xxx.log &)
关闭 ./stopWebLogic.sh
第二步启动"节点管理器": nohup ./startNodeManager.sh &
然而我们很有可能会看到这样的启动方式:
nohup ./startWebLogic.sh >out.log 2>&1 &
其中 0、1、2分别代表如下含义:
0 – stdin (standard input)
1 – stdout (standard output)
2 – stderr (standard error)
nohup+最后面的& 是让命令在后台执行
>out.log 是将信息输出到out.log日志中
2>&1 是将标准错误信息转变成标准输出,这样就可以将错误信息输出到out.log 日志里面来。
WebLogic在开发模式下,启动是不需求输入管理员的用户名和密码的,但在生产模式下,是需要的。
在weblogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/下创建security文件夹
1、在WebLogic启动脚本相同目录下创建一个密码存储文件boot.properties,
文件内容:
username=你的WebLogic的启动用户
password=你的WebLogic的启动密码
2、再次启动WebLogic,此时不需要密码就可以进行系统.
weblogic被管理服务器启动与关闭
-- 启动: nohup ./startManagedWebLogic.sh managedserver1 http://xxx.xxx.xxx.xxx:xxxx > ./xxx.log & -- 关闭: ./stopManagedWebLogic.sh managedserver1 t3://xxx.xxx.xxx.xxx:xxxx username password
另外,如果使用kill -9 serverPid ,而又使用nodemanager来管理各servers的话,此时确实是杀死进程了,但nodemanger检测到非正常关闭就会再次启动server, 于是kill -9 serverPid有可能变成"非正常模式重启"操作,而不是纯杀进程
weblogic缓存目录清理
直接删掉mydomain/servers/myserver目录下的 cache data tmp 这三个目录即可
如果stage/youWarFolder 也存在那么把youWarFolder也一并删了
weblogic指定webapp目录为最终生效目录
weblogic通过控制台配置断点调试
服务器--配置--服务器启动--参数--添加
-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8999,server=y,suspend=n
然后在eclipse中右键项目,debug as -- debug configuration -- 配置
用tomcat启动一次,之后就可以一直监听到webloigc服务器上的数据,只要代码完全一致就可以正常进入eclipse调试了.
修改NodeManager和Managed Server的JDK
修改/home/weblogic/Oracle/Middleware/wlserver_10.3/common/bin/commEnv.sh
1 # Reset JAVA_HOME, JAVA_VENDOR and PRODUCTION_MODE unless JAVA_HOME 2 # and JAVA_VENDOR are pre-defined. 3 if [ -z "${JAVA_HOME}" -o -z "${JAVA_VENDOR}" ]; then 4 # Set up JAVA HOME 5 JAVA_HOME="/home/weblogic/Oracle/Middleware/jrockit_160_29_D1.2.0-10" 6 # Set up JAVA VENDOR, possible values are 7 #Oracle, HP, IBM, Sun ... 8 JAVA_VENDOR=Oracle 9 # PRODUCTION_MODE, default to the development mode 10 PRODUCTION_MODE="" 11 fi
修改第5行中的JAVA_HOME成其它指定的JDK,
另外如果/home/weblogic/Oracle/Middleware/wlserver_10.3/common/nodemanager/nodemanager.properties中指定的jdk路径还是旧的那么把它备份一份后删除掉,重启nodemanager会生成新的properties, 此时的jdk路径就会变成commEnv.sh中的JAVA_HOME中的路径了
wewblogic各异常解决方案
bad ELF interpreter
如果在64位上安装32位weblogic,那么会报如下错误:
bash: ./wls1036_linux32.bin: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
需要执行命令 yum install glibc.i686 ,安装i686即32位支持.
[weblogic@centos download]$ pwd
/home/weblogic/download
[weblogic@centos download]$ ./wls1036_linux32.bin
bash: ./wls1036_linux32.bin: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
[weblogic@centos download]$ ls
wls1036_linux32.bin
[root@centos download]# yum install glibc.i686
[root@centos download]# ./wls1036_linux32.bin
Extracting 0%................................
主机无法访问虚拟机上搭建的weblogic,进入不了7001的console
如果主机能ping通,却telnet 虚拟机ip 7001 ,那么一般就是weblogic所在虚拟机开启了防火墙.
- 关闭防火墙.
- 添加信任端口
weblogic在linux环境域启动慢的问题修正,这可以算是java在linux上的一个小bug
参考: http://blog.csdn.net/makang110/article/details/53843092
修改Linux上Weblogic使用的jdk $JAVA_HOME/jre/lib/security/java.security 文件
将securerandom.source=file:/dev/urandom 修改为
securerandom.source=file:/dev/./urandom
补充说明: 此外由于Weblogic创建域的时候使用的JDK是自带的jrockit,所以要解决WebLogic在Linux上创建域慢的问题,解决办法如下: 修改Linux上Weblogic使用的jdk $JROCKIT_HOME/jre/lib/security/java.security 文件
将securerandom.source=file:/dev/urandom 修改为
securerandom.source=file:/dev/./urandom
由于Windows上对/dev/urandom实现机制不一样,所以在Windows上不会出现上述问题。
The server's administration channel conflicts with the admin server's
那是因为新配置的server端口用了7001和默认adminServer端口的7001重复导致冲突啦.
javax.xml.stream.FactoryConfigurationError
jdk版本不对,他是在MyEclipse的servers中启动的,这个默认是使用的MyEclipse自带的一个jdk(MyEclipse 6.0),所以最好将其换成bea里的jdk或者是自己下的jdk,也最好将工程的JRE System Library换成别的,不要使用MyEclipse自带的那个
如果Server处理的时候突然变得很慢,那么可以试着清一下缓存目录:
假如 /oracle/esbapp/bea/script 下有文件clear_pfp_cache.sh
#!/bin/sh
################delete pfp_domain server1 cached##################
rm -rf /oracle/esbapp/bea/weblogic11/user_projects/domains/pfp_domain/servers/server1/tmp/
rm -rf /oracle/esbapp/bea/weblogic11/user_projects/domains/pfp_domain/servers/server1/cache/
rm -rf /oracle/esbapp/bea/weblogic11/user_projects/domains/pfp_domain/servers/server1/stage/platformproxy/
################delete pfp_domain server3 cached##################
rm -rf /oracle/esbapp/bea/weblogic11/user_projects/domains/pfp_domain/servers/server3/tmp/
rm -rf /oracle/esbapp/bea/weblogic11/user_projects/domains/pfp_domain/servers/server3/cache/
rm -rf /oracle/esbapp/bea/weblogic11/user_projects/domains/pfp_domain/servers/server3/stage/platformproxy/
然后切到该文件所在目录执行以下命令,就会把clear_pfp_cache.sh指定目录下的文件都清空了
sh ./clear_pfp_cache.sh
#!/bin/sh
################delete esb_domain server1 cached##################
rm -rf /oracle/esbapp/bea/weblogic11/user_projects/domains/esb_domain/servers/server1/tmp/
rm -rf /oracle/esbapp/bea/weblogic11/user_projects/domains/esb_domain/servers/server1/cache/
rm -rf /oracle/esbapp/bea/weblogic11/user_projects/domains/esb_domain/servers/server1/stage/ESB/
################delete esb_domain server3 cached##################
rm -rf /oracle/esbapp/bea/weblogic11/user_projects/domains/esb_domain/servers/server3/tmp/
rm -rf /oracle/esbapp/bea/weblogic11/user_projects/domains/esb_domain/servers/server3/cache/
rm -rf /oracle/esbapp/bea/weblogic11/user_projects/domains/esb_domain/servers/server3/stage/ESB/
Error occurred while downloading files from admin server for deployment request "0". Underlying error is: "null":
weblogic布置时如果有中文文件,很有可能报如下错:
1 java.io.IOException: [DeploymentService:290066]Error occurred while downloading files from admin server for deployment request "0". Underlying error is: "null" 2 at weblogic.deploy.service.datatransferhandlers.HttpDataTransferHandler.getDataAsStream(HttpDataTransferHandler.java:86) 3 at weblogic.deploy.service.datatransferhandlers.DataHandlerManager$RemoteDataTransferHandler.getDataAsStream(DataHandlerManager.java:153) 4 at weblogic.deploy.internal.targetserver.datamanagement.AppDataUpdate.doDownload(AppDataUpdate.java:39) 5 at weblogic.deploy.internal.targetserver.datamanagement.DataUpdate.download(DataUpdate.java:56) 6 at weblogic.deploy.internal.targetserver.datamanagement.Data.prepareDataUpdate(Data.java:97) 7 at weblogic.deploy.internal.targetserver.BasicDeployment.prepareDataUpdate(BasicDeployment.java:686) 8 at weblogic.deploy.internal.targetserver.BasicDeployment.stageFilesForStatic(BasicDeployment.java:729) 9 at weblogic.deploy.internal.targetserver.AppDeployment.prepare(AppDeployment.java:104) 10 at weblogic.management.deploy.internal.DeploymentAdapter$1.doPrepare(DeploymentAdapter.java:39) 11 at weblogic.management.deploy.internal.DeploymentAdapter.prepare(DeploymentAdapter.java:191) 12 at weblogic.management.deploy.internal.AppTransition$1.transitionApp(AppTransition.java:21) 13 at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240) 14 at weblogic.management.deploy.internal.ConfiguredDeployments.prepare(ConfiguredDeployments.java:165) 15 at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:122) 16 at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:180) 17 at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:96) 18 at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64) 19 at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256) 20 at weblogic.work.ExecuteThread.run(ExecuteThread.java:221) 21 <Mar 2, 2016 6:23:58 PM CST> <Error> <Deployer> <BEA-149205> <Failed to initialize the application 'validate' due to error weblogic.management.DeploymentException: Exception occured while downloading files. 22 weblogic.management.DeploymentException: Exception occured while downloading files 23 at weblogic.deploy.internal.targetserver.datamanagement.AppDataUpdate.doDownload(AppDataUpdate.java:43) 24 at weblogic.deploy.internal.targetserver.datamanagement.DataUpdate.download(DataUpdate.java:56) 25 at weblogic.deploy.internal.targetserver.datamanagement.Data.prepareDataUpdate(Data.java:97) 26 at weblogic.deploy.internal.targetserver.BasicDeployment.prepareDataUpdate(BasicDeployment.java:686) 27 at weblogic.deploy.internal.targetserver.BasicDeployment.stageFilesForStatic(BasicDeployment.java:729) 28 Truncated. see log file for complete stacktrace 29 Caused By: java.io.IOException: [DeploymentService:290066]Error occurred while downloading files from admin server for deployment request "0". Underlying error is: "null" 30 at weblogic.deploy.service.datatransferhandlers.HttpDataTransferHandler.getDataAsStream(HttpDataTransferHandler.java:86) 31 at weblogic.deploy.service.datatransferhandlers.DataHandlerManager$RemoteDataTransferHandler.getDataAsStream(DataHandlerManager.java:153) 32 at weblogic.deploy.internal.targetserver.datamanagement.AppDataUpdate.doDownload(AppDataUpdate.java:39) 33 at weblogic.deploy.internal.targetserver.datamanagement.DataUpdate.download(DataUpdate.java:56) 34 at weblogic.deploy.internal.targetserver.datamanagement.Data.prepareDataUpdate(Data.java:97) 35 Truncated. see log file for complete stacktrace
weblogic连接池不够用生产情况1:
please increase the size of the pool and retry.. (weblogic console)
weblogic堆栈内存溢出:
异常1. Java.lang.OutOfMemoryError: PermGen space
异常2. ....xxx
每个weblogic server 都是运行在一个java虚拟机上 ,对weblogic的内存设置也就是对java虚拟机的内存设置。
设置jvm内存时,根据经验32位机器最大可启动1.8G内存的jvm,64位机器最大可启动3G内存的jvm;按如下3步:
1、打开setDomainEnv.sh文件,该文件的路径位于: /weblogic/user_projects/domains/你的服务器域名/bin/setDomainEnv.sh
2、修改内存大小
if [ "${JAVA_VENDOR}" = "Sun" ] ; then WLS_MEM_ARGS_64BIT="-Xms256m -Xmx512m" //64位 export WLS_MEM_ARGS_64BIT WLS_MEM_ARGS_32BIT="-Xms256m -Xmx512m" //32位 export WLS_MEM_ARGS_32BIT else WLS_MEM_ARGS_64BIT="-Xms512m -Xmx512m" export WLS_MEM_ARGS_64BIT WLS_MEM_ARGS_32BIT="-Xms512m -Xmx512m" export WLS_MEM_ARGS_32BIT fi
3、保存修改后的文件,重启weblogic。
据说在PermGen space问题上,JRockit JDK针对load class时的垃圾收集机制比oracle 的jdk会更优良些.
weblogic引用的jar包冲突导致的异常:
- java.lang.IllegalArgumentException: Invalid 'logbackConfigLocation' parameter: /opt/app/Oracle/Middleware/user_projects/domains/base_domain/servers/Server7005/tmp/_WL_user/acc_service_ca/bk1axn/war/WEB-INF/lib/_wl_cls_gen.jar!/logback.xml
- ClassNotFoundException: org.hibernate.hql.ast.HqlToken
这些异常一般都是由于weblogic自带预加载的jar和项目中的引用的jar有冲突造成的.这个时候我们需要指定冲突的时候引用哪部分jar.
- <prefer-web-inf-classes>false</prefer-web-inf-classes> 默认为false. 当为true时意为优先使用项目中的所有jar.当置为true时-->会颠反类加载器委托模型,以便优先加载 Web 应用程序中的类定义,其次才加载更高一级的类加载器中的类定义。这使得 Web 应用程序能够使用自己版本的第三方类,这些类也可能包含于 WebLogic Server 中.
- <package-name>antlr.*</package-name>意为仅优先使用项目中指定的antlr.*包下的类.
记得在哪篇文章看过,以上两个好像是不能同时开启的.
<?xml version="1.0" encoding="UTF-8"?> <weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90"> <session-descriptor> <cookie-path>/</cookie-path> </session-descriptor> <jsp-descriptor> <keepgenerated>true</keepgenerated> <page-check-seconds>60</page-check-seconds> <precompile>true</precompile> <precompile-continue>true</precompile-continue> </jsp-descriptor> <container-descriptor> <optimistic-serialization>true</optimistic-serialization> <prefer-web-inf-classes>false</prefer-web-inf-classes> <show-archived-real-path-enabled>true</show-archived-real-path-enabled> <prefer-application-packages> <package-name>org.slf4j</package-name> </prefer-application-packages> </container-descriptor> </weblogic-web-app>
weblogic11g 中预先加载的包中apache的包如下
bea11gmodulescom.bea.core.apache.commons.collections_3.2.0.jar
bea11gmodulescom.bea.core.apache.commons.lang_2.1.0.jar
bea11gmodulescom.bea.core.apache.commons.logging.api_1.1.0.jar
bea11gmodulescom.bea.core.apache.commons.logging_1.1.0.jar
bea11gmodulescom.bea.core.apache.commons.net_1.0.0.0_1-4-1.jar
bea11gmodulescom.bea.core.apache.commons.pool_1.3.0.jar
bea11gmodulescom.bea.core.apache.dom_1.0.0.0.jar
bea11gmodulescom.bea.core.apache.log4j_1.1.0.0_1-2-15.jar
bea11gmodulescom.bea.core.apache.log4j_1.2.13.jar
bea11gmodulescom.bea.core.apache.logging_1.0.0.0.jar
bea11gmodulescom.bea.core.apache.oro_1.0.0.0_2-0-8.jar
bea11gmodulescom.bea.core.apache.regexp_1.0.0.0_1-4.jar
bea11gmodulescom.bea.core.apache.velocity.dep_1.4.jar
bea11gmodulescom.bea.core.apache.velocity_1.4.jar
bea11gmodulescom.bea.core.apache.xalan_2.7.0.jar
bea11gmodulescom.bea.core.apache.xerces.resolver_2.8.1.jar
bea11gmodulescom.bea.core.apache.xerces.xml-apis_2.8.1.jar
bea11gmodulescom.bea.core.apache.xercesImpl_2.8.1.jar
bea11gmodulescom.bea.core.apache.xml.security_1.3.0.jar
bea11gmodulescom.bea.core.apache.xml.serializer_2.7.0.jar
有些weblogic.xml配置如下,我还没研究:
<?xml version="1.0" encoding="UTF-8"?> <weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90"> <container-descriptor> <prefer-web-inf-classes>true</prefer-web-inf-classes> </container-descriptor> <charset-params> <input-charset> <resource-path>/*</resource-path> <java-charset-name>GBK</java-charset-name> </input-charset> </charset-params> <context-root>/reins</context-root> </weblogic-web-app>
Registered more than one instance with the same objectName
这个错误说明有一个数据源名称和我们一个项目的名称相同,导致weblogic不能识别2个同名的实例名,但是并不影响系统的运行。
<Feb 9, 2017 3:08:17 PM CST> <Notice> <Security> <BEA-090082> <Security initializing using security realm myrealm.> <Feb 9, 2017 3:08:19 PM CST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to STANDBY> <Feb 9, 2017 3:08:19 PM CST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to STARTING> <Feb 9, 2017 3:08:21 PM CST> <Error> <JMX> <BEA-149500> <An exception occurred while registering the MBean null. java.lang.IllegalArgumentException: Registered more than one instance with the same objectName : com.bea:ServerRuntime=platformproxy_server,Name=platformproxy,Type=ApplicationRuntime new:weblogic.j2ee.J2EEApplicationRuntimeMBeanImpl@24ce374a existing weblogic.j2ee.J2EEApplicationRuntimeMBeanImpl@7d76a8c8 at weblogic.management.jmx.ObjectNameManagerBase.registerObject(ObjectNameManagerBase.java:168) at weblogic.management.mbeanservers.internal.WLSObjectNameManager.lookupObjectName(WLSObjectNameManager.java:131) at weblogic.management.jmx.modelmbean.WLSModelMBeanFactory.registerWLSModelMBean(WLSModelMBeanFactory.java:87) at weblogic.management.mbeanservers.internal.RuntimeMBeanAgent$1.registered(RuntimeMBeanAgent.java:104) at weblogic.management.provider.core.RegistrationManagerBase.invokeRegistrationHandlers(RegistrationManagerBase.java:180) Truncated. see log file for complete stacktrace
weblogic控制台是英文
取决于浏览器的默认语言(win8的ie则取决于输入法的默认语言).
像chrome是在 设置-->语言和输入设置-->选中文(简体)就设置.
weblogic 如何产生JVM Thread Dump
引用自: http://blog.sina.com.cn/s/blog_538ada140100lor2.html
其他参考: kill -3 获取threaddump信息产生JVM Thread Dump是检查多线程应用 最好的方法, WebLogic支持以下几种方法:
1. 在Windows, 找到執行WebLogic Server的命令視窗, 按下[Ctrl]+[Break]
2. 如果WebLogic Server是用NT Service執行, 可以使用%WL_HOME%\common\bin\beasvc.exe -svcname:"the_service _name" -dump指令, 結果會產生在設定服務時, -log:所設定的目录
3. 在Unix, 找到WebLogic Server的PID, 执行行$kill -3 PID, 记得要重导STDOUT到归档文件
4. WebLogic提供工具产生Thread Dump, 语法如下:
$java weblogic.Admin -url -username -[adminUser] password [adminPass] THREAD_DUMP
5. 如果用JRockit, 则可以在Management Console取得Thread Stack Dump.
但是有時候JVM有bug时, 可能就生不出Thread Dump了!
如何查看weblogic的版本及补丁信息?
a> 首先进入到目录:
$WLS_HOME/server/bin
执行
$./setWLSEnv.sh
b>执行 java 命令
java -cp ../lib/weblogic.jar weblogic.version
可以查看大版本信息。
java -cp lib/weblogic.jar weblogic.version -verbose
可以查看各子系统及补丁信息。
java -cp weblogic.jar weblogic.utils.Versions
可以查看详细的子模块信息。
weblogic是否运行在32位还是64位?
参考: http://blog.csdn.net/fred_lzy/article/details/7767412
weblogic运行在什么模式取决于JVM的位数,原理上weblogic可以运行于两种模式,区别在于weblogic 运行于64系统时跟系统交互需要一些native的库来提高性能。主要是IO,socket操作等。weblogic安装时基于什么模式,也就是看有没有这些特定的native 包,他们位于:<WL_HOME>/server/native。
怎么确保你的weblogic 支持64位,一般来说 安装时要确保用64位的JDK安装weblogic.
也可以在安装时加上-d64参数来保证。如:
java -d64 -jar wls1211_generic.jar
windows记住是:
java -D64 -jar wls1211_generic.jar
如何知道检查你的JDK是否支持64位?
一般来说 检查jdk 版本很简单
java -version
那么检查是否支持64位呢,加一个参数。
java -d64 -version
Windows记住要把改成:
java -D64 -version
weblogic性能优化
$$$$$Weblogic性能优化(图解)==>https://www.cnblogs.com/lcword/p/6934112.html
nodemanager配置
使用Node Manager来管理Weblogic Server--https://blog.csdn.net/zhangp80/article/details/6840498
weblogic异常
weblogic 内存溢出解决 java.lang.OutOfMemoryError: PermGen space
weblogic.net.http.SOAPHttpsURLConnection cannot be cast to javax.net.ssl.HttpsURLConnection问题解决
windows 下的weblogic参考链接
Weblogic注册为Windows的系统服务项+删除服务项
Weblogic之反序列化高危漏洞==>http://www.talkwithtrend.com/Article/178689 原来weblogic是有图型界面可以打补丁的
Grid Control 安装之WebLogic Server的安装与升级==>http://blog.itpub.net/31386161/viewspace-2133747/ 原来weblogic是有图型界面可以打补丁的