我们有Windows Server 2012 64位+ Weblogic 12c设置。当与64位操作系统一起使用时,AdminServer需要更高的PermSize,因此我们需要修改“setDomainEnv.cmd”(如stackoverflow中的其他问题所述)。
当通过通常的“startWeblogic.cmd”脚本启动AdminServer时,它使用“setDomainEnv.cmd”中的设置成功设置PermSize等,但是当使用NodeManager“startServer()”命令时,它不会。
我在文档中读到了一个事实,即可以控制在托管服务器启动时加载的参数(使用NodeManager),但我找不到正确的方法。
我希望通过NodeManager或手动启动托管服务器(和AdminServer)时,我们可以实现一致的行为。
有什么想法吗?
更新:
我检查了启动托管服务器和(!)时发生了什么,比较了启动AdminServer时发生的情况。结果:AdminServer进程(它启动'javaw.exe'实例,而不是托管服务器的'java.exe'实例)永远不会通过setDomainEnv.cmd脚本中设置的任何参数传递..它基本上充满了Oracle内部参数。
对我来说,这一切看起来完全混乱并且不一致。除此之外,我发现Oracle报告的一个问题是神秘地谈到在64位操作系统上运行时设置环境变量(参见标题“开发人员ZIP分发在Windows 64位和Linux 64位上失败”):
https://docs.oracle.com/cd/E24329_01/doc.1211/e26593/issues.htm#WLSRN238
我知道这是否适用于我的版本,因为我下载的版本没有说“开发者”版本,它基本上是最新版本的主要weblogic下载。
我想到的问题是:如果不使用“startServer”,启动AdminServer的预期方式是什么?有没有人关心的错误,因为它通常以不同的方式完成?在开始阅读Oracle文档时,我对这个相当简单的主题变得多么混乱感到非常失望:它根本就没有说明任何内容。
通过“startServer()”命令启动AdminServer时触发的命令行:
C:\PROGRA~1\Java\JDK17~1.0_6\jre\bin\javaw.exe -classpath "C:\PROGRA~1\Java\JDK17~1.0_6\jre\lib\rt.jar;C:\PROGRA~1\Java\JDK17~1.0_6\jre\lib\i18n.jar;C:\PROGRA~1\Java\JDK17~1.0_6\lib\tools.jar;D:\Oracle\Middleware\wlserver\server\lib\weblogic_sp.jar;D:\Oracle\Middleware\wlserver\server\lib\weblogic.jar;D:\Oracle\Middleware\oracle_common\modules\net.sf.antcontrib_1.1.0.0_1-0b3\lib\ant-contrib.jar;D:\Oracle\Middleware\wlserver\modules\features\oracle.wls.common.nodemanager_2.0.0.0.jar;D:\Oracle\Middleware\oracle_common\modules\com.oracle.cie.config-wls-online_8.1.0.0.jar;D:\Oracle\Middleware\wlserver\common\derby\lib\derbyclient.jar;D:\Oracle\Middleware\wlserver\common\derby\lib\derby.jar;D:\Oracle\Middleware\wlserver\server\lib\xqrl.jar" "-Djava.runtime.name=Java(TM) SE Runtime Environment" -Dpython.cachedir=C:\Users\ADMINI~1\AppData\Local\Temp\2\wlstTempAdministrator -Djava.protocol.handler.pkgs=weblogic.utils|weblogic.utils|weblogic.utils -Djava.vm.version=24.65-b04 "-Djava.vm.vendor=Oracle Corporation" -Djava.vendor.url=http://java.oracle.com/ -Dpath.separator=; "-Djava.vm.name=Java HotSpot(TM) 64-Bit Server VM" -Dweblogic.RootDirectory=D:\Oracle\Middleware\user_projects\domains\test1234\. "-Djava.vm.specification.name=Java Virtual Machine Specification" -Djava.runtime.version=1.7.0_67-b01 -Djavax.rmi.CORBA.UtilClass=weblogic.iiop.UtilDelegateImpl -Djava.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment -Djava.endorsed.dirs=C:\PROGRA~1\Java\JDK17~1.0_6\jre\lib\endorsed -Dos.arch=amd64 -Djava.io.tmpdir=C:\Users\ADMINI~1\AppData\Local\Temp\2\ -Dline.separator=
"-Djava.vm.specification.vendor=Oracle Corporation" -Djava.naming.factory.url.pkgs=weblogic.jndi.factories:weblogic.corba.j2ee.naming.url "-Dos.name=Windows Server 2012 R2" -Dprod.props.file=D:\Oracle\Middleware\wlserver\.product.properties -Dorg.omg.CORBA.ORBSingletonClass=weblogic.corba.orb.ORB -Djava.library.path=C:\PROGRA~1\Java\JDK17~1.0_6\jre\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;;D:\Oracle\Middleware\wlserver\server\native\win\x64;D:\Oracle\Middleware\wlserver\server\bin;D:\Oracle\Middleware\oracle_common\modules\org.apache.ant_1.9.2\bin;C:\PROGRA~1\Java\JDK17~1.0_6\jre\bin;C:\PROGRA~1\Java\JDK17~1.0_6\bin;D:\Oracle\product\12.1.0\dbhome_1\BIN;C:\Windows\System32;C:\Windows;C:\Windows\System32\wbem;C:\Windows\System32\WINDOW~1\v1.0\;C:\PROGRA~2\VISUAL~1\bin;C:\PROGRA~1\doxygen\bin;C:\PROGRA~1\TORTOI~1\bin;C:\PROGRA~2\WINDOW~4\8.0\WINDOW~1\;C:\PROGRA~1\MICROS~1\110\Tools\Binn\;D:\Oracle\Middleware\wlserver\server\native\win\x64\oci920_8;. "-Djava.specification.name=Java Platform API Specification" -Djava.class.version=51.0 -Dorg.omg.CORBA.ORBClass=weblogic.corba.orb.ORB -Dos.version=6.3 -Djavax.rmi.CORBA.PortableRemoteObjectClass=weblogic.iiop.PortableRemoteObjectDelegateImpl -Djava.awt.printerjob=sun.awt.windows.WPrinterJob -Djava.specification.version=1.7 -Djava.class.path=C:\PROGRA~1\Java\JDK17~1.0_6\lib\tools.jar;D:\Oracle\Middleware\wlserver\server\lib\weblogic_sp.jar;D:\Oracle\Middleware\wlserver\server\lib\weblogic.jar;D:\Oracle\Middleware\oracle_common\modules\net.sf.antcontrib_1.1.0.0_1-0b3\lib\ant-contrib.jar;D:\Oracle\Middleware\wlserver\modules\features\oracle.wls.common.nodemanager_2.0.0.0.jar;D:\Oracle\Middleware\oracle_common\modules\com.oracle.cie.config-wls-online_8.1.0.0.jar;D:\Oracle\Middleware\wlserver\common\derby\lib\derbyclient.jar;D:\Oracle\Middleware\wlserver\common\derby\lib\derby.jar;D:\Oracle\Middleware\wlserver\server\lib\xqrl.jar -Djava.vm.specification.version=1.7 -Dweblogic.management.GenerateDefaultConfig=false -Djava.home=C:\PROGRA~1\Java\JDK17~1.0_6\jre "-Djava.specification.vendor=Oracle Corporation" -Dawt.toolkit=sun.awt.windows.WToolkit "-Djava.vm.info=mixed mode" -Djava.version=1.7.0_67 -Djava.ext.dirs=C:\PROGRA~1\Java\JDK17~1.0_6\jre\lib\ext;C:\Windows\Sun\Java\lib\ext "-Djava.vendor=Oracle Corporation" -Djava.vendor.url.bug=http://bugreport.sun.com/bugreport/ -Dweblogic.store.DisableDiskScheduler=true -Dpython.verbose=warning weblogic.Server
更新2:
通过节点管理器启动AdminServer(nmStart('AdminServer'))创建一个通常的“java.exe”进程,并使用正确的内存设置启动AdminServer。但这更令人困惑:为什么“startServer()”创建一个具有完全不同设置的独立进程(javaw.exe)?为什么我的设置现在与AdminServer完全不同?启动AdminServer(开发/生产?)的“正确”方法是什么?在这种环境下两个大拇指。
更新3:
重复进一步测试后,让“startServer()”工作的解决方案基本如下:根本不用担心节点管理器设置,直接通过在其中添加其他java选项来编辑“startWeblogic”脚本(像往常一样添加-D启动参数)。所有这一切的原因基本上是完全忽略全局设置(由节点管理器使用),请参阅我的粘贴命令行输出。
答案 0 :(得分:1)
检查Oracle安装中的nodemanager.properties
文件(例如/opt/ora/mw/wlserver_10.3/common/nodemanager/nodemanager.properties)并验证是否已设置这些选项:
StartScriptName=startManagedWebLogic.sh
StartScriptEnabled=true
所以nodemanager正在用适当的脚本启动你的服务器。您还必须选择通过管理控制台设置服务器特定的启动属性 - 转到:
Servers -> Server Name -> Server Start tab -> Arguments
您可以填写服务器特定的JVM参数,例如此字段中的-XX:MaxPermSize=4096m
将由nodemanager使用。这可能比在setDomainEnv脚本中对其进行硬编码更好/更容易。
更新
尝试为AdminServer发出nmStart()
命令而不是startServer()
命令。
startServer
允许您在没有nodemanager的情况下启动服务器。它使用javaw.exe来有效地介绍进程
nmStart
允许您使用nodemanager启动服务器 - 这就是您获得正确内存设置的原因。因为该过程是通过服务启动的,所以它或多或少是自动后台化的,这就是为什么你看到普通的java.exe