Remote Java Application Debug & Eclipse

    使用Maven进行build,只使用Eclipse进行编译,build好之后的程序放在Weblogic上面去部署,由此实现了编译和运行相分离。

    但是这样就不便于调试,调试对于解决Bug是很必要的。

   

    If you want to debug a running server, you don’t need to create a project which includes the full source code of that server. In remote java application way, you only need to make a project which includes the necessary jar files and assign Java source folder for jar file. Then add the following options to your tomcator jboss startup command.

-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=%DEBUG_PORT%,server=y,suspend=n

Set a port number for %DEBUG_PORT%. Add breakpoints in source code.

In eclipse add a new“Remote Java Application” entry as below.

At last run tomcator jboss startup command and debug above remote application in eclipse.

    In Eclipse,

    Open Run->Debug Configuration, Open Debug Dialog menu.

    Go to Remote Java Application tab.

    Add a new item and configure like below.

Remote Java Application Debug & Eclipse_第1张图片

补充: Weblogic服务器(看完后面的补充,这里有点没有说清楚)

startWeblogic.cmd中,进行添加:

set JAVA_OPTIONS=-Xdebug -Xnoagent-Xrunjdwp:transport=dt_socket,address=8453,server=y,suspend=n

注意添加位置,


注意端口号,Eclipse中配置时,要填写。

然后,在Eclipse中,配置Remote Application ...,添加断点,启动Weblogic的服务器,在CMD中,可以看到:

Listening for transport dt_socket at address: 8453  ——CMD

即Eclipse的远程调试就成功了。


几点注意的地方:

    开始以为是添加位置的缘故,今天发现并非如此。

    在Weblogic domain 的bin目录下,有文件setDomainEnv.cmd

if "%debugFlag%"=="true" (
    set JAVA_DEBUG=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,<span style="background-color: rgb(255, 255, 0);">address=%DEBUG_PORT%,</span>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
)
    原来修改的startWeblogic.cmd中,如果添加的
set JAVA_OPTIONS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8453,server=y,suspend=n
位于了

call "%DOMAIN_HOME%\bin\setDomainEnv.cmd" %*

之前,则startWeblogic.cmd又调用了setDomainEnv.cmd,上述配置又被Override了,这样在Eclipse里启动远程调试的时候,会提示

Failed to connect to remote VM.Connection refused.

Connection refused: connect

    因为被重写了,也有的说法可以在setDomaiEnv.cmd中,添加
set debugFlag=true
    此时,startWeblogic.cmd不用再进行修改,同样可以达到效果。但是,最好别这样修改,因为这个文件一般是设置Doman和env的,基本都是默认的,还是推荐第一种修改方法。注意添加位置即可, 强调一下,这里的添加位置是要放在以下代码之后:

<span style="background-color: rgb(255, 255, 0);">call "%DOMAIN_HOME%\bin\setDomainEnv.cmd" %*</span>

我的是,约在Ling# 100,原来为:set JAVA_OPTIONS=%SAVE_JAVA_OPTIONS%,改为

set JAVA_OPTIONS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8453,server=y,suspend=n

PS:address=端口号

这里写的是8453,由此也说明了为什么最开始添加在那一句之前,Remote Debug也连接上了,因为在setDomainEnv.cmd中,有

if "%DEBUG_PORT%"=="" (
	set DEBUG_PORT=8453
)

里面默认的端口号即为8453,此时即使是写在前面,端口号被Override了,仍为8453,因此也不无大碍。



你可能感兴趣的:(eclipse,weblogic,远程调试)