weblogic book

weblogic安装

安装完全参考此链接,条理清晰:

http://blog.csdn.net/juluce133/article/details/9774327   源文

http://blog.163.com/ng_0125@126/blog/static/170162360201311773235995   引用

 

我的其它笔记:

 

WebLogic 中的基本概念【转】

Linux下Weblogic 11g R1安装和配置 (引用自其它网站,但做了少量补充)

weblogic linux 中 配置集群

 weblogic11g 修改密码和重置密码【原】

weblogic每天日志合并shell脚本 [个人记录]【转】【补】

WebLogic Server发序列化升级操作【转】【补】

weblogic optimal

weblogic exception

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所在虚拟机开启了防火墙.

  1.  关闭防火墙.
  2. 添加信任端口

 

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
View Code

 

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.

  •  <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>
View Code

 

 

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 12c 配置jvm的内存大小

weblogic.net.http.SOAPHttpsURLConnection cannot be cast to javax.net.ssl.HttpsURLConnection问题解决

kill -3 获取threaddump信息

windows 下的weblogic参考链接

Weblogic注册为Windows的系统服务项+删除服务项

 

Weblogic之反序列化高危漏洞==>http://www.talkwithtrend.com/Article/178689 原来weblogic是有图型界面可以打补丁的

Grid Control 安装之WebLogic Server的安装与升级==>http://blog.itpub.net/31386161/viewspace-2133747/  原来weblogic是有图型界面可以打补丁的

posted @ 2016-11-20 19:11  苦涩泪滴  阅读(1920)  评论(0编辑  收藏  举报