<?xml version="1.0" encoding="utf-8"?><!-- generator="wordpress/2.0.2" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: Nobody cares about your stack trace!</title>
	<link>http://blog.springsource.com/arjen/archives/2007/01/21/nobody-cares-about-your-stack-trace/</link>
	<description>A blog about programming in .NET and Java</description>
	<pubDate>Thu, 20 Nov 2008 14:47:39 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.2</generator>

	<item>
		<title>by: Spring Framework</title>
		<link>http://blog.springsource.com/arjen/archives/2007/01/21/nobody-cares-about-your-stack-trace/#comment-1043</link>
		<pubDate>Thu, 01 Feb 2007 21:19:50 +0000</pubDate>
		<guid>http://blog.springsource.com/arjen/archives/2007/01/21/nobody-cares-about-your-stack-trace/#comment-1043</guid>
					<description>&lt;strong&gt;Interview: Arjen Poutsma on Spring Web Services&lt;/strong&gt;

InfoQ's Stefan Tilkov talks to Spring Web Services creator Arjen Poutsma about Web services in general</description>
		<content:encoded><![CDATA[<p><strong>Interview: Arjen Poutsma on Spring Web Services</strong></p>
<p>InfoQ&#8217;s Stefan Tilkov talks to Spring Web Services creator Arjen Poutsma about Web services in general</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Stefan Tilkov's Random Stuff</title>
		<link>http://blog.springsource.com/arjen/archives/2007/01/21/nobody-cares-about-your-stack-trace/#comment-1042</link>
		<pubDate>Wed, 31 Jan 2007 07:39:40 +0000</pubDate>
		<guid>http://blog.springsource.com/arjen/archives/2007/01/21/nobody-cares-about-your-stack-trace/#comment-1042</guid>
					<description>&lt;strong&gt;Interview with Arjen Poutsma &lt;/strong&gt;

The Spring framework is very popular among Java developers as a more lightweight alternative to &amp;#8220;enterprise&amp;#8221; frameworks. One of the newest additions is the Spring Web Services subproject, which according to the Web site &amp;#8220;is focused on...</description>
		<content:encoded><![CDATA[<p><strong>Interview with Arjen Poutsma </strong></p>
<p>The Spring framework is very popular among Java developers as a more lightweight alternative to &#8220;enterprise&#8221; frameworks. One of the newest additions is the Spring Web Services subproject, which according to the Web site &#8220;is focused on&#8230;</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Mats Helander</title>
		<link>http://blog.springsource.com/arjen/archives/2007/01/21/nobody-cares-about-your-stack-trace/#comment-1038</link>
		<pubDate>Tue, 23 Jan 2007 07:39:33 +0000</pubDate>
		<guid>http://blog.springsource.com/arjen/archives/2007/01/21/nobody-cares-about-your-stack-trace/#comment-1038</guid>
					<description>Hi Arjan,

Shouldn't the same idea apply to any black box in principle? I won't be able to debug your web service and I won't be able to debug your black box, closed source component...but I might be able to mail you the stack trace so that you can debug it more easily!

That C doesn't offer a stack trace is more of a problem with C that shouldn't be allowed to &quot;drag down&quot; a &quot;real&quot; language with it? So, I don't agree :-)

/Mats</description>
		<content:encoded><![CDATA[<p>Hi Arjan,</p>
<p>Shouldn&#8217;t the same idea apply to any black box in principle? I won&#8217;t be able to debug your web service and I won&#8217;t be able to debug your black box, closed source component&#8230;but I might be able to mail you the stack trace so that you can debug it more easily!</p>
<p>That C doesn&#8217;t offer a stack trace is more of a problem with C that shouldn&#8217;t be allowed to &#8220;drag down&#8221; a &#8220;real&#8221; language with it? So, I don&#8217;t agree <img src='http://blog.springsource.com/arjen/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>/Mats</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Arjen Poutsma</title>
		<link>http://blog.springsource.com/arjen/archives/2007/01/21/nobody-cares-about-your-stack-trace/#comment-1037</link>
		<pubDate>Mon, 22 Jan 2007 23:45:40 +0000</pubDate>
		<guid>http://blog.springsource.com/arjen/archives/2007/01/21/nobody-cares-about-your-stack-trace/#comment-1037</guid>
					<description>@Steve,

Fair enough, the code in Axis seems to be well thought out, and seems to be helpful for debugging purposes. I'm still not entirely convinced, though ;).</description>
		<content:encoded><![CDATA[<p>@Steve,</p>
<p>Fair enough, the code in Axis seems to be well thought out, and seems to be helpful for debugging purposes. I&#8217;m still not entirely convinced, though <img src='http://blog.springsource.com/arjen/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Steve Loughran</title>
		<link>http://blog.springsource.com/arjen/archives/2007/01/21/nobody-cares-about-your-stack-trace/#comment-1030</link>
		<pubDate>Mon, 22 Jan 2007 12:23:18 +0000</pubDate>
		<guid>http://blog.springsource.com/arjen/archives/2007/01/21/nobody-cares-about-your-stack-trace/#comment-1030</guid>
					<description>I wrote a lot of the stack trace code in AxisFault, and stand by my decisions.


1. Axis 1.x doesnt send a stack trace over the wire unless you set a flag saying you are a dev system. That wasnt just because end users dont care about stack traces -if you are a developer trying to integrate with someone elses system, quiite often you do.  It was mainly for security reasons: I dont want to expose internals unless I have to.

2. I also added the stuff that says the name of the host at fault. Because when you have an 8 way server, you like to know that its server 3 failing al requests, not &quot;one request in 8 is failing&quot;. Again, I think you can strip it if you are paranoid.

3. Did I mention I add http error codes and strings in somewhere too?

I never try and turn soap faults back into native faults; that is silly. the stack trace is just an extra bit of debugging detail, and very nice too.</description>
		<content:encoded><![CDATA[<p>I wrote a lot of the stack trace code in AxisFault, and stand by my decisions.</p>
<ol>
<li>
<p>Axis 1.x doesnt send a stack trace over the wire unless you set a flag saying you are a dev system. That wasnt just because end users dont care about stack traces -if you are a developer trying to integrate with someone elses system, quiite often you do.  It was mainly for security reasons: I dont want to expose internals unless I have to.</p>
</li>
<li>
<p>I also added the stuff that says the name of the host at fault. Because when you have an 8 way server, you like to know that its server 3 failing al requests, not &#8220;one request in 8 is failing&#8221;. Again, I think you can strip it if you are paranoid.</p>
</li>
<li>
<p>Did I mention I add http error codes and strings in somewhere too?</p>
</li>
</ol>
<p>I never try and turn soap faults back into native faults; that is silly. the stack trace is just an extra bit of debugging detail, and very nice too.</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Tim Vernum</title>
		<link>http://blog.springsource.com/arjen/archives/2007/01/21/nobody-cares-about-your-stack-trace/#comment-1029</link>
		<pubDate>Mon, 22 Jan 2007 07:46:27 +0000</pubDate>
		<guid>http://blog.springsource.com/arjen/archives/2007/01/21/nobody-cares-about-your-stack-trace/#comment-1029</guid>
					<description>I'm not sure it's as simple as all that...

I can think of 4 web services configs that I'm currently running where I would probably turn on a &quot;convert exception to fault&quot; type feature.
Only 1 of those is using SOAP, but in each case that's an implementation detail. 

The SOAP service is facilitating a .NET client talking to a Java server between two very closely related business units. If something goes wrong and our service triggers an exception then I would prefer the guys on the other end get as much information as possible, as it may be that they caused it (by passing in some combination of data that the service did handle cleanly), or it may be that our database went down and having an SQLException (or some runtime wrapper around it) and that will tell them that it's our problem and there's no point them trying to work out if the fault is in the client.

Now, all those things can be dealt with by mapping all the errors explicitly. But that's a lot of work, for not much gain. Or we can put our own exception catching block at the top of our service and do the SOAP-fault mapping ourself, but that just results in every project duplicating the same code that could have been in Spring-WS.

For our services that have multiple clients with various implementation languages, the exposing of the stack trace isn't something I'd do. But for simple inter-op between two independant applications it seems to me like the simplest path to exposing the fault.

We're not expecting exceptions - that's why they're exceptions - but if they occur you need some way to report an error. For some use cases a simple &quot;general server error&quot; is appropriate. But in other cases the more information you can push out to the client the faster it will be resolved.</description>
		<content:encoded><![CDATA[<p>I&#8217;m not sure it&#8217;s as simple as all that&#8230;</p>
<p>I can think of 4 web services configs that I&#8217;m currently running where I would probably turn on a &#8220;convert exception to fault&#8221; type feature.<br />
Only 1 of those is using SOAP, but in each case that&#8217;s an implementation detail. </p>
<p>The SOAP service is facilitating a .NET client talking to a Java server between two very closely related business units. If something goes wrong and our service triggers an exception then I would prefer the guys on the other end get as much information as possible, as it may be that they caused it (by passing in some combination of data that the service did handle cleanly), or it may be that our database went down and having an SQLException (or some runtime wrapper around it) and that will tell them that it&#8217;s our problem and there&#8217;s no point them trying to work out if the fault is in the client.</p>
<p>Now, all those things can be dealt with by mapping all the errors explicitly. But that&#8217;s a lot of work, for not much gain. Or we can put our own exception catching block at the top of our service and do the SOAP-fault mapping ourself, but that just results in every project duplicating the same code that could have been in Spring-WS.</p>
<p>For our services that have multiple clients with various implementation languages, the exposing of the stack trace isn&#8217;t something I&#8217;d do. But for simple inter-op between two independant applications it seems to me like the simplest path to exposing the fault.</p>
<p>We&#8217;re not expecting exceptions - that&#8217;s why they&#8217;re exceptions - but if they occur you need some way to report an error. For some use cases a simple &#8220;general server error&#8221; is appropriate. But in other cases the more information you can push out to the client the faster it will be resolved.</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Dan Diephouse</title>
		<link>http://blog.springsource.com/arjen/archives/2007/01/21/nobody-cares-about-your-stack-trace/#comment-1028</link>
		<pubDate>Mon, 22 Jan 2007 05:03:05 +0000</pubDate>
		<guid>http://blog.springsource.com/arjen/archives/2007/01/21/nobody-cares-about-your-stack-trace/#comment-1028</guid>
					<description>I think we need to distinguish between two things here. First, creating an exception on the client which mirrors the server like RMI would. Second, sending along more debugging information in the form of a stack trace.

There is probably a user a day on the xfire mailing list who doesn't seem to comprehend that a stack trace occurred on the server side because they didn't check their logs. I don't think we should be reconstructing the exception on the other side, but it probably isn't that bad to just print it to stdout. It certainly would save me from writing a few emails! 

Though I do have mixed feelings about it as people often forget to turn that extra debugging off in production.</description>
		<content:encoded><![CDATA[<p>I think we need to distinguish between two things here. First, creating an exception on the client which mirrors the server like RMI would. Second, sending along more debugging information in the form of a stack trace.</p>
<p>There is probably a user a day on the xfire mailing list who doesn&#8217;t seem to comprehend that a stack trace occurred on the server side because they didn&#8217;t check their logs. I don&#8217;t think we should be reconstructing the exception on the other side, but it probably isn&#8217;t that bad to just print it to stdout. It certainly would save me from writing a few emails! </p>
<p>Though I do have mixed feelings about it as people often forget to turn that extra debugging off in production.</p>
]]></content:encoded>
				</item>
</channel>
</rss>
