Weblogic常见问题
1.1 Server日志里报错:Authentication for user denied
1、 出现该错误几种情况:
1)、执行下面脚本启动受管server时报错:Authentication for user denied 启动脚本: nohup D:\\Oracle\\Middleware\projects\\domains\\base_domain\\bin\\startManagedWebLogic1.cmd wsqt2 http://192.168.0.149:7001 >D:\\Oracle\\Middleware\\logs\\wsqt2.out 2>&1 &
2)、Weblogic92选择产品模式的时候,报了一个异常,但是选择开发模式的时候却能正常运行。 2、 错误日志内容: URL:jdbc:oracle:thin:@192.168.1.149:1521:orcl 连接测试失败。 IO 错误: The Network Adapter could not establish the connection @后面的主机名可以主机名、IP地址、localhost,这里我们写的是IP地址,但是Oracle11g数据的listener.ora和tnsnames.ora里的主机名写的都是localhost,所以weblogic连接测试数据源时会报错The Network Adapter could not establish the connection等等。 解决方法: 保持URL里@后的主机名与oracle的listener.ora和tnsnames.ora里的主机名使用的一致即可解决。 这里为了方便其他机器连接到本机或服务器数据库,修改listener.ora和tnsnames.ora的主机名为本机或服务器的IP地址,也可以修改为机器名。 本 机 数 据 库和 E:\\app\\Administrator\\product\\11.2.0\\dbhome_1\\NETWORK\\ADMIN\\listener.oratnsnames.ora里的主机名部分修改为机器名SS7ICJ6ZFUELZ7O。 将URL修改为jdbc:oracle:thin:@SS7ICJ6ZFUELZ7O:1521:orcl。 1.3 Weblogic12启动wsqt2时报错 java.lang.OutOfMemoryError: PermGen space: .JAVA Memory arguments: -Xms256m -Xmx512m -XX:CompileThreshold=8000 -XX:PermSize=128m -XX:MaxPermSize=256m . WLS Start Mode=Development . CLASSPATH=d:\\Oracle\\MIDDLE~1\\patch_wls1211\\profiles\\default\\sys_manifest_classpath\\weblogic_patch.jar;d:\\Oracle\\MIDDLE~1\\patch_oepe101\\profiles\\default\\sys_manifest_classpath\\weblogic_patch.jar;d:\\Oracle\\MIDDLE~1\\patch_ocp371\\profiles\\default\\sys_manifest_classpath\\weblogic_patch.jar;d:\\Oracle\\MIDDLE~1\\JDK160~1\\lib\ools.jar;D:\\Oracle\\MIDDLE~1\\WLSERV~1.1\\server\\lib\\weblogic_sp.jar;D:\\Oracle\\MIDDLE~1\\WLSERV~1.1\\server\\lib\\weblogic.jar;d:\\Oracle\\MIDDLE~1\\modules\\features\\weblogic.server.modules_12.1.1.0.jar;D:\\Oracle\\MIDDLE~1\\WLSERV~1.1\\server\\lib\\webservices.jar;d:\\Oracle\\MIDDLE~1\\modules\\ORGAPA~1.1/lib/ant-all.jar;d:\\Oracle\\MIDDLE~1\\modules\\NETSFA~1.0_1/lib/ant-contrib.jar;D:\\Oracle\\MIDDLE~1\\WLSERV~1.1\\common\\derby\\lib\\derbyclient.jar;D:\\Oracle\\MIDDLE~1\\WLSERV~1.1\\server\\lib\\xqrl.jar;D:\\Program Files\\DTS\\jre\\lib;D:\\Program Files\\DTS\\D:\\Program Files\\DTS\\jre\\lib;.;D:\\PROGRA~1\\IBM\\SQLLIB\\java\\db2java.zip;D:\\PROGRA~1\\IBM\\SQLLIB\\java\\db2jcc.jar;D:\\PROGRA~1\\IBM\\SQLLIB\\java\\sqlj.zip;D:\\PROGRA~1\\IBM\\SQLLIB\\java\\db2jcc_license_cu.jar;D:\\PROGRA~1\\IBM\\SQLLIB\\bin;D:\\PROGRA~1\\IBM\\SQLLIB\\java\\common.jar . PATH=d:\\Oracle\\MIDDLE~1\\patch_wls1211\\profiles\\default\\native;d:\\Oracle\\MIDDLE~1\\patch_oepe101\\profiles\\default\\native;d:\\Oracle\\MIDDLE~1\\patch_ocp371\\profiles\\default\\native;D:\\Oracle\\MIDDLE~1\\WLSERV~1.1\\server\\native\\win\\32;D:\\Oracle\\MIDDLE~1\\WLSERV~1.1\\server\\bin;d:\\Oracle\\MIDDLE~1\\modules\\ORGAPA~1.1\\bin;d:\\Oracle\\MIDDLE~1\\JDK160~1\\jre\\bin;d:\\Oracle\\MIDDLE~1\\JDK160~1\\bin;E:\\app\\Administrator\\product\\11.2.0\\dbhome_1\\bin;C:\\Program Files\\Common Files\\NetSarang;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files\\Windows7Master;C:\\Program Files\\Intel\\WiFi\\bin\\;C:\\Program Files\\Common Files\\Intel\\WirelessCommon\\;D:\\Program Files\\DTS\\DTSCPP\\vc98\\Bin;D:\\Program Files\\DTS\\DTSGCC\\cygwin\\bin;D:\\Program Files\\DTS\\jre\\bin;D:\\Program Files\\DTS\\DTSGCC\\include;D:\\Program Files\\jslint.vim_0.7\\bin;C:\\strawberry\\c\\bin;C:\\strawberry\\perl\\bin;C:\\Program Files\\Java\\jdk1.6.0_10\\bin;D:\\PROGRA~1\\IBM\\SQLLIB\\BIN;D:\\PROGRA~1\\IBM\\SQLLIB\\FUNCTION;D:\\PROGRA~1\\IBM\\SQLLIB\\SAMPLES\\REPL;C:\\Program Files\\Intel\\WiFi\\bin\\;C:\\Program Files\\Common Files\\Intel\\WirelessCommon\\;D:\\Oracle\\MIDDLE~1\\WLSERV~1.1\\server\\native\\win\\32\\oci920_8 . *************************************************** * To start WebLogic Server, use a username and * * password assigned to an admin-level user. For * * server administration, use the WebLogic Server * * console at http:\\\\hostname:port\\console * *************************************************** starting weblogic with Java version: java version \"1.6.0_29\" Java(TM) SE Runtime Environment (build 1.6.0_29-b11) Java HotSpot(TM) Client VM (build 20.4-b02, mixed mode) Starting WLS with line: d:\\Oracle\\MIDDLE~1\\JDK160~1\\bin\\java -client -Xms256m -Xmx512m -XX:CompileThreshold=8000 -XX:PermSize=128m -XX:MaxPermSize=256m -Dweblogic.Name=wsqt2 -Djava.security.policy=D:\\Oracle\\MIDDLE~1\\WLSERV~1.1\\server\\lib\\weblogic.policy -Dweblogic.security.SSL.trustedCAKeyStore=\"D:\\Oracle\\Middleware\\wlserver_12.1\\server\\lib\\cacerts\" -Xverify:none -Djava.endorsed.dirs=d:\\Oracle\\MIDDLE~1\\JDK160~1/jre/lib/endorsed;D:\\Oracle\\MIDDLE~1\\WLSERV~1.1/endorsed -da -Dplatform.home=D:\\Oracle\\MIDDLE~1\\WLSERV~1.1 -Dwls.home=D:\\Oracle\\MIDDLE~1\\WLSERV~1.1\\server -Dweblogic.home=D:\\Oracle\\MIDDLE~1\\WLSERV~1.1\\server -Dweblogic.management.discover=false -Dweblogic.management.server=http://192.168.0.149:7001 -Dwlw.iterativeDev=false -Dwlw.testConsole=false -Dwlw.logErrorsToConsole=false -Dweblogic.ext.dirs=d:\\Oracle\\MIDDLE~1\\patch_wls1211\\profiles\\default\\sysext_manifest_classpath;d:\\Oracle\\MIDDLE~1\\patch_oepe101\\profiles\\default\\sysext_manifest_classpath;d:\\Oracle\\MIDDLE~1\\patch_ocp371\\profiles\\default\\sysext_manifest_classpath weblogic.Server <2012-12-14 上午09时46分06秒 CST> 解决方法: 从日志中下面内容可以看出是使用sun的JDK: starting weblogic with Java version: java version \"1.6.0_29\" Java(TM) SE Runtime Environment (build 1.6.0_29-b11) Java HotSpot(TM) Client VM (build 20.4-b02, mixed mode) 例如:下面显示为Oracle JRockit(R) JDK java -version java version \"1.6.0_29\" Java(TM) SE Runtime Environment (build 1.6.0_29-b11) Oracle JRockit(R) (build R28.2.0-79-146777-1.6.0_29-20111005-1807-linux-x86_64, compiled mode) 调整java虚拟机内存参数: JAVA Memory arguments:-Xms256m -Xmx512m -XX:CompileThreshold=8000 -XX:PermSize=128m -XX:MaxPermSize=256m 这个参数值是在D:\\Oracle\\Middleware\projects\\domains\\base_domain\\bin\\setDomainEnv.cmd里设置: if \"%JAVA_VENDOR%\"==\"Sun\" ( set WLS_MEM_ARGS_64BIT=-Xms256m -Xmx512m set WLS_MEM_ARGS_32BIT=-Xms512m -Xmx1024m ) 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=512m 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=1024m if \"%JAVA_USE_64BIT%\"==\"true\" ( set MEM_MAX_PERM_SIZE=%MEM_MAX_PERM_SIZE_64BIT% ) else ( set MEM_MAX_PERM_SIZE=%MEM_MAX_PERM_SIZE_32BIT% ) if \"%JAVA_VENDOR%\"==\"Sun\" ( if \"%PRODUCTION_MODE%\"==\"\" ( set MEM_DEV_ARGS=-XX:CompileThreshold=8000 %MEM_PERM_SIZE% ) ) @REM Had to have a separate test here BECAUSE of immediate variable expansion on windows if \"%JAVA_VENDOR%\"==\"Sun\" ( set MEM_ARGS=%MEM_ARGS% %MEM_DEV_ARGS% %MEM_MAX_PERM_SIZE% ) 调整后启动“开始-Start Admin Server for Weblogic Server Domain”后显示如下: JVM虚拟机选项:Xms Xmx PermSize MaxPermSize区别 服务器是 WebLogic Server 的实例, 它运行在自己的 Java 虚拟机 (JVM) 上, 并具有自己的配置。 java虽然是自动回收内存,但是应用程序,尤其服务器程序最好根据业务情况指明内存分配限制。否则可能导致应用程序宕掉。 举例说明含义: -Xms128m 表示JVM Heap(堆内存)最小尺寸128MB,初始分配 -Xmx512m 表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配。 说明:如果-Xmx不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM不是Throwable的,无法用try...catch捕捉。 PermSize和MaxPermSize指明虚拟机为java永久生成对象(Permanate generation)如,class对象、方法对象这些可反射(reflective)对象分配内存限制,这些内存不包括在Heap(堆内存)区之中。 -XX:PermSize=64MB 最小尺寸,初始分配 -XX:MaxPermSize=256MB 最大允许分配尺寸,按需分配 过小会导致:java.lang.OutOfMemoryError: PermGen space MaxPermSize缺省值和-server -client选项相关。 -server选项下默认MaxPermSize为64m -client选项下默认MaxPermSize为32m 1.参数的含义 -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M -vmargs 说明后面是VM的参数,所以后面的其实都是JVM的参数了 -Xms128m JVM初始分配的堆内存 -Xmx512m JVM最大允许分配的堆内存,按需分配 -XX:PermSize=64M JVM初始分配的非堆内存 -XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配 我们首先了解一下JVM内存管理的机制,然后再解释每个参数代表的含义。 1)堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。 可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的, 所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。 堆内存分配 JVM初始分配的堆内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的堆内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制; 空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx 相等以避免在每次GC 后调整堆的大小。 说明:如果-Xmx 不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM,不是Throwable的,无法用try...catch捕捉。 非堆内存分配 JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。(还有一说:MaxPermSize缺省值和-server -client选项相关, -server选项下默认MaxPermSize为64m,-client选项下默认MaxPermSize为32m。这个我没有实验。) 上面错误信息中的PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。还没有弄明白PermGen space是属于非堆内存,还是就是非堆内存,但至少是属于了。 XX:MaxPermSize设置过小会导致java.lang.OutOfMemoryError: PermGen space 就是内存益出。 说说为什么会内存益出: (1)这一部分内存用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和存放Instance的Heap区域不同。 (2)GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS 的话,就很可能出现PermGen space错误。 这种错误常见在web服务器对JSP进行pre compile的时候。 堆内存和非堆内存,另外JVM最大内存首先取决于实际的物理内存和操作系统。所以说设置VM参数导致程序无法启动主要有以下几种原因: 1) 参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize; 2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。说到实际物理内存这里需要说明一点的是, 如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。 上面的错误和下面文件设置的环境变量没有关系。 commEnv.cmd里的环境变量: PermSize和MaxPermSize参数都在D:\\Oracle\\Middleware\\wlserver_12.1\\common\\bin\\commEnv.cmd里设置,commEnv.cmd里一般在文件中,有二处这样的代码存在,一个是使用weblogic(oracle)自带的jrockitJDK,二是使用sun的JDK.这里是以sunJDK为例,通过修改二处的MEM_ARGS=-Xms768m-Xmx1024m可以达到修改JVM目的所在.修改后保存重启即可。 例如: :oracle if \"%PRODUCTION_MODE%\" == \"true\" goto oracle_prod_mode set JAVA_VM=-jrockit set MEM_ARGS=-Xms512m –Xmx1024m set JAVA_OPTIONS=%JAVA_OPTIONS% -Xverify:none -Djava.endorsed.dirs=%JAVA_HOME%/jre/lib/endorsed;%WL_HOME%/endorsed goto continue :oracle_prod_mode set JAVA_VM=-jrockit set MEM_ARGS=-Xms512m –Xmx1024m set JAVA_OPTIONS=%JAVA_OPTIONS% -Djava.endorsed.dirs=%JAVA_HOME%/jre/lib/endorsed;%WL_HOME%/endorsed goto continue :sun if \"%PRODUCTION_MODE%\" == \"true\" goto sun_prod_mode set JAVA_VM=-client set MEM_ARGS=-Xms512m –Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=1024m -XX:+UseSpinning set JAVA_OPTIONS=%JAVA_OPTIONS% -Xverify:none -Djava.endorsed.dirs=%JAVA_HOME%/jre/lib/endorsed;%WL_HOME%/endorsed goto continue :sun_prod_mode set JAVA_VM=-server set MEM_ARGS=-Xms512m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=1024m -XX:+UseSpinning set JAVA_OPTIONS=%JAVA_OPTIONS% -Djava.endorsed.dirs=%JAVA_HOME%/jre/lib/endorsed;%WL_HOME%/endorsed goto continue 因篇幅问题不能全部显示,请点此查看更多更全内容
oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:458)
oracle.jdbc.driver.PhysicalConnection.
oracle.jdbc.driver.T4CConnection.
oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
weblogic.jdbc.common.internal.DataSourceUtil.testConnection(DataSourceUtil.java:298)
com.bea.console.utils.jdbc.JDBCUtils.testConnection(JDBCUtils.java:746)
com.bea.console.actions.jdbc.datasources.createjdbcdatasource.CreateJDBCDataSource.testConnectionConfiguration(CreateJDBCDataSource.java:474)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.apache.beehive.netui.pageflow.FlowController.invokeActionMethod(FlowController.java:870)
org.apache.beehive.netui.pageflow.FlowController.getActionMethodForward(FlowController.java:809)
org.apache.beehive.netui.pageflow.FlowController.internalExecute(FlowController.java:478)
org.apache.beehive.netui.pageflow.PageFlowController.internalExecute(PageFlowController.java:306)
org.apache.beehive.netui.pageflow.FlowController.execute(FlowController.java:336)
org.apache.beehive.netui.pageflow.internal.FlowControllerAction.execute(FlowControllerAction.java:52)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.access$201(PageFlowRequestProcessor.java:97)
... 错误原因: jdbc:oracle:thin:@192.168.1.149:1521:orcl