个人对ejb、weblogic都不是太熟悉,算是处于一个学习的阶段,由于公司的项目全都是ejb架构出来的,所用的服务器不是jboss就是weblogic,也真算是把我弄得晕头转向,在做的过程中老是遇到各种各样奇怪的错误信息,在此做一下总结记录,日后若再出现可以参考。 用weblogic服务器还是我第一次在实战的项目中用,虽然大家都说就跟tomcat一样都是服务器,一个道理,可是实际运用中以及根据每个人的习惯不同总会出现一些异常,这时候可能要是能够断点 debug就好多了,可以很快的找到错误信息,就很方便啦!在我寻找如何让weblogic可以debug的时候,我搜索了一下很多网友的意见,但是我按照上面的步骤做完以后,也就是在你的weblogic安装目录下 D:\bea\user_projects\domains\firstwls\bin找到该文件startWeblogic.cmd,然后打开编辑里面的东西,具体的可以参考 http://blog.163.com/caojun_1205/blog/static/12955312220099693236552/,里面说这样一改就ok了,实际上我改完以后,启动weblogic然后选择自己在eclipse中配置的debug模式,已选择就出现问题,如下: “Failed to connect to remote VM. Connection refused.”, 这个问题我纠结了很长时间,都说是端口不对,可是到底哪里的端口不对又没有找出根源来,后来还是请了高手帮我搞定的,呜呜,纠结了好长时间呢 ![]() 根据他的经验呢,他说一般不建议自己直接在startWeblogic.cmd中添加或设置变量,我并不是太明白什么意思,他说网上的添加的哪些变量实际上在这个文件里面setDomainEnv.cmd里面基本都有的,不需要自己改(自己不能随便更改startWeblogic.cmd文件),要改的话应该在setDomainEnv.cmd里面改,我突然醒悟了,的确,你可以打开该文件,发现里面是有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 ) 你可以发现它里面的 JAVA_DEBUG跟我们其他网友说要配置在startWeblogic.cmd里面的那段很像,其实在这里它应该就已经配置了,所以我们不用在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这个变量的,前面已经解释过了。 在setDomainEnv.cmd里,可以找到一段对debugFlag的判断(蓝色判断语句部分),那么只有在debugFlag=true的情况下才会进入debug的,那你一定要想办法对debugFlag做一下处理,让它为true。 最后,还有一点你可以发现在setDomainEnv.cmd里面,它是有一个默认端口的DEBUG_PORT=8453,你可以搜索一下,这个端口很重要,因为我们在eclipse里配置debug的时候要填的端口要跟此端口一致,否则就会报出我出现的错误
|
|