我正在将WebLogic 10.3与Java EE应用程序一起使用。谁能告诉我如何调试这个应用程序?
答案 0 :(得分:10)
我认为其他答案有些不对劲。对于Windows,如果您将名为debugFlag
的环境变量设置为true或在solaris / unix中设置相同的
debugFlag=true
export debugFlag
DEBUG_PORT=8453
export DEBUG_PORT
,然后将调用setDomainEnv.sh
或setDomainEnv.cmd
以通过其他脚本启动WLS。他们会查找debugFlag
和DEBUG_PORT
,只要未设置“production”标志,它就会从脚本中选择正确的参数进行调试(-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=%DEBUG_PORT%,server=y,suspend=n -Djava.compiler=NONE
)。
你不应该抄写这些脚本。它将使部署和维护变得困难,setDomainEnv
脚本的整个目的是在整个集群和整个环境中使用和维护正确的默认值。我承认,他们的记录很少。
请注意,如果您使用的是Oracle weblogic maven插件,则目标wls:deploy
或wls:start-server
会在启动时选择这些环境设置,因为它们会调用引擎盖下的命令,而先致电setDomainEnv
。
截至目前,如果您正在使用eclipse并设置了Oracle WebLogicServer,当您发出mvn:deploy
时,maven插件将不会将其附加到调试模式,您可以在调试模式下重新启动它(傻),或创建'Run ==>调试==> DebugConfigurations ==> RemoteJavaApplication'的连接类型为'standard(socket attach)',主机为'localhost'(或远程服务器)和一个端口(默认为'8453')。然后,您可以Run ==> Debug Configurations ==> Local Server Attach
。
答案 1 :(得分:6)
对我来说这很有效:
在文件夹WEBLOGIC_HOME \ user_projects \ domains \ my_domain \ bin
中有一个文件setDomainEnv.cmd
在其中我找到了代码:
if "%debugFlag%"=="true" (
set JAVA_DEBUG=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=%DEBUG_PORT%,server=y,suspend=n -Djava.compiler=NONE
set JAVA_OPTIONS=%JAVA_OPTIONS% %enableHotswapFlag% -ea -da:com.bea... -da:javelin... -da:weblogic... -ea:com.bea.wli... -ea:com.bea.broker... -ea:com.bea.sbconsole...
) else (
set JAVA_OPTIONS=%JAVA_OPTIONS% %enableHotswapFlag% -da
)
我只是将调试行放在if子句之外:
set JAVA_DEBUG=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=%DEBUG_PORT%,server=y,suspend=n -Djava.compiler=NONE
set JAVA_OPTIONS=%JAVA_OPTIONS% %enableHotswapFlag% -ea -da:com.bea... -da:javelin... -da:weblogic... -ea:com.bea.wli... -ea:com.bea.broker... -ea:com.bea.sbconsole...
if "%debugFlag%"=="true" (
set JAVA_DEBUG=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=%DEBUG_PORT%,server=y,suspend=n -Djava.compiler=NONE
set JAVA_OPTIONS=%JAVA_OPTIONS% %enableHotswapFlag% -ea -da:com.bea... -da:javelin... -da:weblogic... -ea:com.bea.wli... -ea:com.bea.broker... -ea:com.bea.sbconsole...
) else (
set JAVA_OPTIONS=%JAVA_OPTIONS% %enableHotswapFlag% -da
)
完成这些设置后,您可以在端口8453上进行调试
端口也在此文件中配置,您也可以更改它:
if "%DEBUG_PORT%"=="" (
set DEBUG_PORT=8453
)
停止服务器,运行脚本,启动服务器。
现在您的weblogic服务器已设置为进行调试。
答案 2 :(得分:3)
我让Eclipse Debugger使用Weblogic 10所做的是查找文件夹startWeblogic.cmd
中的weblogic.10.3.3.0\user_projects\domains\base_domain\bin\
文件并修改以下行(第95行):
set JAVA_OPTIONS=%SAVE_JAVA_OPTIONS%
到
set JAVA_OPTIONS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8453,server=y,suspend=n %SAVE_JAVA_OPTIONS%
然后我停止了从Eclipse中运行的任何weblogic服务器,并使用startWebLogic.cmd
文件启动了Weblogic。
然后我在Eclipse中创建了一个新的调试配置。转到调试配置,选择“远程Java应用程序”,它应该识别您的项目,使用Standard (Socket attach)
作为连接类型,并在连接属性中指定端口8453。
现在申请并运行。在一段代码中设置一些断点,这些断点将定期运行并查看它是否正常工作。
答案 3 :(得分:3)
在weblogic服务器上启用调试的最佳方法如下:
设置debugFlag = true
设置DEBUG_PORT = 9001
因此,脚本上会有3行,这就是你所需要的......
您还可以使用更多变量......
WLS_REDIRECT_LOG = log_path< - 将输出重定向到文件而不是控制台窗口......
JAVA_OPTIONS< - JVM的更多选项
EXTRA_JAVA_PROPERTIES< - 定义您可能需要的附加属性
答案 4 :(得分:2)
尝试远程调试应用程序。您可以尝试这些链接,这可能会有所帮助:
http://eclipse.sys-con.com/node/169364
http://www.jacoozi.com/index.php?option=com_content&task=view&id=119&Itemid=134
答案 5 :(得分:0)
Jonnathan Q回答帮助我在调试模式下启动Weblogic。对于unix,您可以在shell脚本中使用这样的语法:
debugFlag=true
export debugFlag
DEBUG_PORT=9001
export DEBUG_PORT
然后根据需要运行startWeblogic.sh和startManagedWeblogic.sh。
更新:为了使我们的IDE(Eclipse,IDEA)在断点上停止,我们在AdminServer上部署了我们的webapp,因为如果在集群环境中部署到节点,我们的IDE根本不会停在断点处。