使用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.
补充: 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" %*
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
这里写的是8453,由此也说明了为什么最开始添加在那一句之前,Remote Debug也连接上了,因为在setDomainEnv.cmd中,有
if "%DEBUG_PORT%"=="" ( set DEBUG_PORT=8453 )