By Antony Reynolds on Dec 28, 2011
Too Much Debug
Well it is Christmas and as is traditional, in England at least, we had roast turkey dinner. And of course no matter how big your family, turkeys come in only two sizes; massively too big or enormously too big! So by the third day of Christmas you are ready never to eat turkey again until thanksgiving. Your trousers no longer fit around the waist, your sweater is snug around the midriff, and your children start talking about the return of the Blob.
And my point? Well just like the food world, sometimes in the SOA world too much of a good thing is bad for you. I had just extended my BPM domain with OSB only to discover that I could no longer start the BAM server, or the newly configured OSB server. The error message I was getting was:
starting weblogic with Java version:
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
ERROR: transport error 202: bind failed: Address already in use
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:690]
Starting WLS with line:
C:\app\oracle\product\FMW\JDK160~2\bin\java -client -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8453,server=y,suspend=n …
The mention of JDWP points to a problem with debug settings and sure enough in a development domain the setDomainEnv script is set up to enable debugging of OSB. The problem is that the settings apply to all servers started with settings in the setDomainEnv script and should really only apply to the OSB servers. There is a blog entry by Jiji Sasidharan that explains this and provides a fix. However the fix disables the debug flag for all servers, not just the non-OSB servers. So I offer my extension to this fix which modifies the setDomainEnv script as follows from:
rem Added so that only OSB server starts in debug mode
if "%SERVER_NAME%"=="osb_server1" (
This enables debugging to occur on managed server osb_server1 (this should match the name of one of your OSB servers to enable debugging). It does not enable the debug flag for any other server, including other OSB servers in a cluster. After making this change it may be necessary to restart the Admin Server because it is probably bound to the debug port.
So the moral of this tale is don’t eat too much turkey, don’t abuse the debug flag, but make sure you can get the benefits of debugging.
Have a great new year!