如何使用WebLogic 10.3调试Java EE应用程序

时间:2011-02-18 15:02:12

标签: debugging java-ee weblogic-10.x

我正在将WebLogic 10.3与Java EE应用程序一起使用。谁能告诉我如何调试这个应用程序?

6 个答案:

答案 0 :(得分:10)

我认为其他答案有些不对劲。对于Windows,如果您将名为debugFlag的环境变量设置为true或在solaris / unix中设置相同的

debugFlag=true
export debugFlag
DEBUG_PORT=8453
export DEBUG_PORT

,然后将调用setDomainEnv.shsetDomainEnv.cmd以通过其他脚本启动WLS。他们会查找debugFlagDEBUG_PORT,只要未设置“production”标志,它就会从脚本中选择正确的参数进行调试(-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=%DEBUG_PORT%,server=y,suspend=n -Djava.compiler=NONE)。

你不应该抄写这些脚本。它将使部署和维护变得困难,setDomainEnv脚本的整个目的是在整个集群和整个环境中使用和维护正确的默认值。我承认,他们的记录很少。

请注意,如果您使用的是Oracle weblogic maven插件,则目标wls:deploywls: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服务器上启用调试的最佳方法如下:

  • 创建脚本文件
  • 将这些行放入您的脚本(对于Windows):

设置debugFlag = true

设置DEBUG_PORT = 9001

  • 调用启动脚本(例如):C:\ Oracle \ Middleware \ user_projects \ domains \ domain1 \ bin \ startWebLogic.cmd)

因此,脚本上会有3行,这就是你所需要的......

您还可以使用更多变量......

WLS_REDIRECT_LOG = log_path< - 将输出重定向到文件而不是控制台窗口......

JAVA_OPTIONS< - JVM的更多选项

EXTRA_JAVA_PROPERTIES< - 定义您可能需要的附加属性

答案 4 :(得分:2)

答案 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根本不会停在断点处。