2009年2月23日星期一

JDev_017:使用JDeveloper 11g Debug 远程Web应用


开发运行环境:JDeveloper 11.1.2.3 + WebLogic Server 开发版12c(12.1.1.1.0)

1. Debug部署在JDeveloper自带的WebLogic Server上的Web应用
(1)右键page1.jspx页面,选择Debug,会启动Debug模式下的WebLogic Server。
Console会输出:
Starting WLS with line:
C:\Oracle\Java\jdk1.6.0_25\bin\java -client   -Xms256m -Xmx512m -XX:CompileThreshold=8000 -XX:PermSize=128m  -XX:MaxPermSize=512m -Dweblogic.Name=DefaultServer -Djava.security.policy=C:\Oracle\JDev11.1.2.3\wlserver_10.3\server\lib\weblogic.policy -agentlib:jdwp=transport=dt_socket,server=y,address=49942 -Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true -Djavax.net.ssl.trustStore=C:\Users\pmma\AppData\Local\Temp\trustStore1620035598097647834.jks -Doracle.jdeveloper.adrs=true -Dweblogic.nodemanager.ServiceEnabled=true  -Xverify:none  -da -Dplatform.home=C:\Oracle\JDev11.1.2.3\wlserver_10.3 -Dwls.home=C:\Oracle\JDev11.1.2.3\wlserver_10.3\server -Dweblogic.home=C:\Oracle\JDev11.1.2.3\wlserver_10.3\server  -Djps.app.credential.overwrite.allowed=true -Dcommon.components.home=C:\Oracle\JDev11.1.2.3\oracle_common -Djrf.version=11.1.1 -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger -Ddomain.home=C:\Oracle\JDEVRU~1\system11.1.2.3.39.62.76.1\DefaultDomain -Djrockit.optfile=C:\Oracle\JDev11.1.2.3\oracle_common\modules\oracle.jrf_11.1.1\jrocket_optfile.txt -Doracle.server.config.dir=C:\Oracle\JDEVRU~1\system11.1.2.3.39.62.76.1\DefaultDomain\config\fmwconfig\servers\DefaultServer -Doracle.domain.config.dir=C:\Oracle\JDEVRU~1\system11.1.2.3.39.62.76.1\DefaultDomain\config\fmwconfig  -Digf.arisidbeans.carmlloc=C:\Oracle\JDEVRU~1\system11.1.2.3.39.62.76.1\DefaultDomain\config\fmwconfig\carml  -Digf.arisidstack.home=C:\Oracle\JDEVRU~1\system11.1.2.3.39.62.76.1\DefaultDomain\config\fmwconfig\arisidprovider -Doracle.security.jps.config=C:\Oracle\JDEVRU~1\system11.1.2.3.39.62.76.1\DefaultDomain\config\fmwconfig\jps-config.xml -Doracle.deployed.app.dir=C:\Oracle\JDEVRU~1\system11.1.2.3.39.62.76.1\DefaultDomain\servers\DefaultServer\tmp\_WL_user -Doracle.deployed.app.ext=\- -Dweblogic.alternateTypesDirectory=C:\Oracle\JDev11.1.2.3\oracle_common\modules\oracle.ossoiap_11.1.1,C:\Oracle\JDev11.1.2.3\oracle_common\modules\oracle.oamprovider_11.1.1 -Djava.protocol.handler.pkgs=oracle.mds.net.protocol  -Dweblogic.jdbc.remoteEnabled=false -Dwsm.repository.path=C:\Oracle\JDEVRU~1\system11.1.2.3.39.62.76.1\DefaultDomain\oracle\store\gmds   -Dweblogic.management.discover=true  -Dwlw.iterativeDev= -Dwlw.testConsole= -Dwlw.logErrorsToConsole= -Dweblogic.ext.dirs=C:\Oracle\JDev11.1.2.3\patch_wls1035\profiles\default\sysext_manifest_classpath;C:\Oracle\JDev11.1.2.3\patch_jdev1112\profiles\default\sysext_manifest_classpath  weblogic.Server
java version "1.6.0_35"
Java(TM) SE Runtime Environment (build 1.6.0_35-b10)
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01, mixed mode)
Listening for transport dt_socket at address: 49942
Debugger connected to local process.
(2)在弹出的浏览器中,点击按钮“Click Me”,会激活断点。
(3)切换回JDeveloper,发现程序已经停留在第一个断点上了。
2. 部署Web应用到独立的WebLogic Server上
 (1)右键MyProject,选择Deploy
 (2)选择Deploy to Application Server
  (3)点击绿色的加号
 (4)选择WebLogic 10.3
 (5)
 (6)
(7)
(8)通过JDeveloper 一键部署
(9)虽然连接WebLogic Server12c成功,但是部署时,总是报错,发布成war包,通过经过WLS Console发布也报同样的错误。
仔细检查后发现,是因为在weblogic.xml中Library Referece的版本不对。
<library-ref>
    <library-name>jstl</library-name>
    <specification-version>1.2</specification-version>
</library-ref>
<library-ref>
    <library-name>jsf</library-name>
    <specification-version>2.0</specification-version>
</library-ref>
因为我使用的是WebLogic Server 12c,而JDeveloper 11.1.2.3目前只支持到WebLogic 10.3。
去掉weblogic.xml中的Library Referece,重新通过WLS Console发布war文件,这次成功了。

2. Debug部署在独立的WebLogic Server上的Web应用
(1)修改Admin Server:Enable Tunneling
(2)修改[domain_name]\bin\startWeblogic.cmd
增加一行:set REMOTE_DEBUG_JAVA_OPTIONS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n
修改set JAVA_OPTIONS行,修改后如下:
set JAVA_OPTIONS=%SAVE_JAVA_OPTIONS% %REMOTE_DEBUG_JAVA_OPTIONS%
修改完毕后,重新启动WebLogic Server,WLS Console会输出信息:
Starting WLS with line:
C:\Oracle\Java\jdk1.6.0_25\bin\java -client   -Xms256m -Xmx512m -XX:CompileThreshold=8000 -XX:PermSize=128m  -XX:MaxPermSize=256m -Dweblogic.Name=AdminServer -D
java.security.policy=C:\Oracle\wls1211_dev\wlserver\server\lib\weblogic.policy  -Xverify:none -Djava.endorsed.dirs=C:\Oracle\Java\jdk1.6.0_25/jre/lib/endorsed;C
:\Oracle\wls1211_dev\wlserver/endorsed  -da -Dplatform.home=C:\Oracle\wls1211_dev\wlserver -Dwls.home=C:\Oracle\wls1211_dev\wlserver\server -Dweblogic.home=C:\O
racle\wls1211_dev\wlserver\server   -Dweblogic.management.discover=true  -Dwlw.iterativeDev= -Dwlw.testConsole= -Dwlw.logErrorsToConsole= -Xdebug -Xnoagent -Xru
njdwp:transport=dt_socket,address=4000,server=y,suspend=n  weblogic.Server
Listening for transport dt_socket at address: 4000
(3)修改Project的Run/Debug/Profiler,增加一个新的Run Configuration:RemoteDebug
(4)勾上Remote Debugging
(5)确认Debug Remote的设置正确
(6)右键MyProject,选择Debug

(7)会弹出一个窗口,确认信息正确后,点击OK

JDeveloper Console输出如下信息:
Debugger attempting to connect to remote process at LocalHost 4000.
Debugger connected to remote process at LocalHost 4000.
说明已经成功连接到了WebLogic Server Debug端口4000。
(8)访问应用:http://localhost:7001/MyFirstApplication/faces/page1.jspx。
(9)在弹出的浏览器中,点击按钮“Click Me”,会激活断点。
(10)切换回JDeveloper,发现程序已经停留在第一个断点上了。

Project 下载:MyFirstApplication(Remote_Debug).7z

参考文献:
1. http://jdeveloperfaq.blogspot.com/2009/12/faq-4-how-to-remote-debug-adf.html
2. http://xmlandmore.blogspot.jp/2010/12/using-remote-debugging-in-jdeveloper.html

没有评论: