個人對ejb、weblogic都不是太熟悉,算是處于一個學習的階段,由于公司的項目全都是ejb架構出來的,所用的服務器不是jboss就是weblogic,也真算是把我弄得暈頭轉向,在做的過程中老是遇到各種各樣奇怪的錯誤信息,在此做一下總結記錄,日后若再出現(xiàn)可以參考。 用weblogic服務器還是我第一次在實戰(zhàn)的項目中用,雖然大家都說就跟tomcat一樣都是服務器,一個道理,可是實際運用中以及根據(jù)每個人的習慣不同總會出現(xiàn)一些異常,這時候可能要是能夠斷點 debug就好多了,可以很快的找到錯誤信息,就很方便啦!在我尋找如何讓weblogic可以debug的時候,我搜索了一下很多網(wǎng)友的意見,但是我按照上面的步驟做完以后,也就是在你的weblogic安裝目錄下 D:\bea\user_projects\domains\firstwls\bin找到該文件startWeblogic.cmd,然后打開編輯里面的東西,具體的可以參考 http://blog.163.com/caojun_1205/blog/static/12955312220099693236552/,里面說這樣一改就ok了,實際上我改完以后,啟動weblogic然后選擇自己在eclipse中配置的debug模式,已選擇就出現(xiàn)問題,如下: “Failed to connect to remote VM. Connection refused.”, 這個問題我糾結了很長時間,都說是端口不對,可是到底哪里的端口不對又沒有找出根源來,后來還是請了高手幫我搞定的,嗚嗚,糾結了好長時間呢 ![]() 根據(jù)他的經(jīng)驗呢,他說一般不建議自己直接在startWeblogic.cmd中添加或設置變量,我并不是太明白什么意思,他說網(wǎng)上的添加的哪些變量實際上在這個文件里面setDomainEnv.cmd里面基本都有的,不需要自己改(自己不能隨便更改startWeblogic.cmd文件),要改的話應該在setDomainEnv.cmd里面改,我突然醒悟了,的確,你可以打開該文件,發(fā)現(xiàn)里面是有debugFlag的,如果你懂得里面寫的是什么意思,可以認真看一下那部分判斷debugFlag的語句(我個人不是太懂),也就是這部分語句決定了到底weblogic是不是允許debug,以下是,核心段=====》 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 ) 你可以發(fā)現(xiàn)它里面的 JAVA_DEBUG跟我們其他網(wǎng)友說要配置在startWeblogic.cmd里面的那段很像,其實在這里它應該就已經(jīng)配置了,所以我們不用在startWeblogic.cmd里面再定義一個JAVA_DEBUG,我們只需要引用setDomainEnv.cmd里面的JAVA_DEBUG 就可以了,(為什么可以直接這樣子引用呢,應該是startWeblogic.cmd有引用setDomainEnv.cmd,具體自己可以查看一下startWeblogic.cmd文件,貼出此段:call "%DOMAIN_HOME%\bin\setDomainEnv.cmd" %*) ,這樣一來,startWeblogic.cmd里面的東西最后要修改的那段就變成: if "%WLS_REDIRECT_LOG%"=="" ( echo Starting WLS with line: echo %JAVA_HOME%\bin\java %JAVA_VM% %JAVA_DEBUG% %MEM_ARGS% %JAVA_OPTIONS% -Dweblogic.Name=%SERVER_NAME% -Djava.security.policy=%WL_HOME%\server\lib\weblogic.policy %PROXY_SETTINGS% %SERVER_CLASS% %JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% -Dweblogic.Name=%SERVER_NAME% -Djava.security.policy=%WL_HOME%\server\lib\weblogic.policy %PROXY_SETTINGS% %SERVER_CLASS% ) else ( echo Redirecting output from WLS window to %WLS_REDIRECT_LOG% %JAVA_HOME%\bin\java %JAVA_VM% %JAVA_DEBUG% %MEM_ARGS% %JAVA_OPTIONS% -Dweblogic.Name=%SERVER_NAME% -Djava.security.policy=%WL_HOME%\server\lib\weblogic.policy %PROXY_SETTINGS% %SERVER_CLASS% >"%WLS_REDIRECT_LOG%" 2>&1 ) 這里是不用再另外配置JAVA_DEBUG這個變量的,前面已經(jīng)解釋過了。 在setDomainEnv.cmd里,可以找到一段對debugFlag的判斷(藍色判斷語句部分),那么只有在debugFlag=true的情況下才會進入debug的,那你一定要想辦法對debugFlag做一下處理,讓它為true。 最后,還有一點你可以發(fā)現(xiàn)在setDomainEnv.cmd里面,它是有一個默認端口的DEBUG_PORT=8453,你可以搜索一下,這個端口很重要,因為我們在eclipse里配置debug的時候要填的端口要跟此端口一致,否則就會報出我出現(xiàn)的錯誤
|
|