如何通过Ant任务以调试模式启动WebLogic 12.1.3服务器?
问题描述
我有一个可正常启停WebLogic 12.1.3服务器的Ant脚本,但添加调试相关<jvmarg>参数后,仍无法让服务器以调试模式启动,以下是完整脚本,请问我可能遗漏了什么?我查阅资料得知需添加调试选项,但该方法对我无效。
<?xml version="1.0"?> <!DOCTYPE project> <project name="WeblogicServer" default="start-server" basedir="/Users/E3/Oracle/Middleware/Oracle_Home"> <property name="bea.home" value="/Users/E3/Oracle/Middleware/Oracle_Home" /> <property name="weblogic.home" value="/Users/E3/Oracle/Middleware/Oracle_Home/wlserver" /> <property name="domain.home" value="/Users/E3/Oracle/Middleware/Oracle_Home/user_projects/domains" /> <property name="domain.name" value="base_domain" /> <property name="host" value="localhost" /> <property name="port" value="7001" /> <property name="username" value="weblogic" /> <property name="password" value="weblogic123" /> <property name="admin.server.name" value="AdminServer" /> <path id="wls.classpath"> <fileset dir="${weblogic.home}/server/lib"> <include name="web*.jar"/> </fileset> </path> <taskdef name="wlserver" classname="weblogic.ant.taskdefs.management.WLServer" classpathref="wls.classpath"/> <target name="start-server" > <wlserver dir="${domain.home}/${domain.name}" host="${host}" port="${port}" domainname="${domain.name}" servername="${admin.server.name}" action="start" username="${username}" password="${password}" beahome="${bea.home}" weblogichome="${weblogic.home}" verbose="true" noexit="true" protocol="t3" classpath="${weblogic.home}/server/lib/weblogic.jar" > <jvmarg value="-server"/> <jvmarg value="-Xms256m"/> <jvmarg value="-Xmx512m"/> <jvmarg value="-XX:PermSize=128m"/> <jvmarg value="-XX:MaxPermSize=256m"/> <jvmarg value="-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -XX:PermSize=128m -XX:MaxPermSize=256m"/> </wlserver> </target> <target name="stop-server"> <wlserver dir="${domain.home}/${domain.name}" host="${host}" port="${port}" servername="${admin.server.name}" username="${username}" password="${password}" action="shutdown" beahome="${bea.home}" weblogichome="${weblogic.home}" forceshutdown="true"/> </target> </project>
问题分析与修复
核心问题在于把多个JVM参数合并到了同一个<jvmarg>标签中,Ant的<jvmarg>要求每个JVM参数单独使用一个标签,合并后的内容会被JVM识别为单个无效参数,导致调试配置不生效。另外脚本中重复配置了-XX:PermSize和-XX:MaxPermSize,可以去掉重复项。
修改后的start-server目标如下:
<target name="start-server" > <wlserver dir="${domain.home}/${domain.name}" host="${host}" port="${port}" domainname="${domain.name}" servername="${admin.server.name}" action="start" username="${username}" password="${password}" beahome="${bea.home}" weblogichome="${weblogic.home}" verbose="true" noexit="true" protocol="t3" classpath="${weblogic.home}/server/lib/weblogic.jar" > <jvmarg value="-server"/> <jvmarg value="-Xms256m"/> <jvmarg value="-Xmx512m"/> <jvmarg value="-XX:PermSize=128m"/> <jvmarg value="-XX:MaxPermSize=256m"/> <!-- 拆分调试参数为独立的jvmarg标签 --> <jvmarg value="-Xdebug"/> <jvmarg value="-Xnoagent"/> <jvmarg value="-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"/> </wlserver> </target>
额外说明:WebLogic 12.1.3基于JDK 7/8,也可以使用JDK 5+推荐的现代调试参数格式(与旧参数等效):
<jvmarg value="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"/>
内容的提问来源于stack exchange,提问作者estebanjpc
相关产品推荐
相关产品推荐

