<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2.2" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>that's great... &#187; Technical stuff</title>
	<link>http://jaybose.com</link>
	<description>Yapping about stuff.</description>
	<pubDate>Thu, 21 Aug 2008 15:49:07 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.2</generator>
	<language>en</language>
			<item>
		<title>httpsessionlistener resolved my session persistence issue</title>
		<link>http://jaybose.com/archives/httpsessionlistener-resolved-my-session-persistence-issue/</link>
		<comments>http://jaybose.com/archives/httpsessionlistener-resolved-my-session-persistence-issue/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 14:16:51 +0000</pubDate>
		<dc:creator>Jay</dc:creator>
		
		<category><![CDATA[Technical stuff]]></category>

		<guid isPermaLink="false">http://jaybose.com/archives/httpsessionlistener-resolved-my-session-persistence-issue/</guid>
		<description><![CDATA[I&#8217;ve moved from Resin-3.0 to Tomcat-5.5 for a while now. So far, it&#8217;s actually been easier to deploy and run my web applications. However, I started to see some NotSerializableExceptions during shutdowns, and subsequent startups. After some research, it became clear that I was inadvertently storing Spring-proxied items into http sessions. If they still existed [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve moved from Resin-3.0 to Tomcat-5.5 for a while now. So far, it&#8217;s actually been easier to deploy and run my web applications. However, I started to see some NotSerializableExceptions during shutdowns, and subsequent startups. After some research, it became clear that I was <em>inadvertently</em> storing Spring-proxied items into http sessions. If they still existed during serialization of the current session, Tomcat would complain, being that Tomcat actually expects truly serializable items in its sessions - how dare they <img src='http://jaybose.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I knew the item being placed in the http session held a reference to a spring-wrapped DAO (the item&#8217;s a data view helper). So, after some cups of coffee it finally came to me: have my custom listener defined in the web.xml, which currently only implements <a href="http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletContextListener.html" target="_blank">ServletContextListener</a>, also implement <a href="http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/http/HttpSessionListener.html#sessionDestroyed(javax.servlet.http.HttpSessionEvent)" target="_blank">HttpSessionListener</a>. With that, I was able clear out the culprit on <strong>sessionDestroyed(&#8230;)</strong>.  I wish all my technical problems were this straight forward.</p>
<p>Update: Anjan, in response to your question, I&#8217;m embedding the web.xml declaration and the actual Listener code. Hope this helps.</p>
<h4>web.xml listener declaration</h4>
<div style="overflow: scroll; width: 96%; background-color: lightgrey">
<pre>
<code>
   &lt;!--    Our custom system initializing listener     --&gt;
   &lt;listener&gt;
      &lt;listener-class&gt;com.some.company.SomeInitListener&lt;/listener-class&gt;
   &lt;/listener&gt;
</code>
</pre>
</div>
<h4>Listener Implementations</h4>
<div style="overflow: scroll; width: 96%; background-color: lightgrey">
<pre>
<code>
public class SomeInitListener extends BosenInitListener {

	private static final Logger LOG = Logger.getLogger(SomeInitListener.class);

	@Override
	protected void customInitForServlet(ServletContextEvent event) {
		super.customInitForServlet(event);

		ServletContext servletContext = event.getServletContext();
		SomeResourceInitializer resourceInitializer = (SomeResourceInitializer) getBean(servletContext, "resourceInitializer");

		// Make default menus
		String menuConfig = servletContext.getInitParameter(AppConstants.MENU_CONFIG);
		if (null != menuConfig) {
                    ...
		} else {
			LOG.warn("Could not find a menu configuration.");
		}

		resourceInitializer.init();
	}
}

public abstract class BosenInitListener implements ServletContextListener, HttpSessionListener {

	private static final Logger LOG = Logger.getLogger(BosenInitListener.class);

	public final void contextInitialized(final ServletContextEvent event) {
		String servletContextName = event.getServletContext().getServletContextName();
		if (LOG.isInfoEnabled()) {
			LOG.info("Initializing [ " + servletContextName + " ]");
		}

		customInitForServlet(event);

		if (LOG.isInfoEnabled()) {
			LOG.info("Initialized [ " + servletContextName + " ]nn");
		}
	}

	public final void contextDestroyed(final ServletContextEvent event) {
		String servletContextName = event.getServletContext().getServletContextName();
		if (LOG.isInfoEnabled()) {
			LOG.info("Destroying [ " + servletContextName + "]");
		}

		customDestroyForServlet(event);

		if (LOG.isInfoEnabled()) {
			LOG.info("Destroyed [ " + servletContextName + "]nn");
		}
	}

	protected void customInitForServlet(final ServletContextEvent event) {
		ServletContext servletContext = event.getServletContext();
		String appContextName = WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE;
		Object webCtxAttribute = servletContext.getAttribute(appContextName);
		if (null != webCtxAttribute) {
			if (webCtxAttribute instanceof Exception) {
				LOG.error(webCtxAttribute);
			}

		} else {
			throw new IllegalStateException("Could not read applicationContext.xml.");
		}
	}

	protected void customDestroyForServlet(final ServletContextEvent event) {
		//no-op
	}

	public final void sessionCreated(final HttpSessionEvent event) {
		String sessionId = event.getSession().getId();
		if (LOG.isDebugEnabled()) {
			LOG.debug("Initializing a new Session [" + sessionId + "]");
		}

		customInitForSession(event);

		if (LOG.isDebugEnabled()) {
			LOG.debug("Initialized a new Session [" + sessionId + "]");
		}
	}

	public final void sessionDestroyed(final HttpSessionEvent event) {
		String sessionId = event.getSession().getId();
		if (LOG.isDebugEnabled()) {
			LOG.debug("Destroying an existing Session [" + sessionId + "]");
		}

		customDestroyForSession(event);

		if (LOG.isDebugEnabled()) {
			LOG.debug("Destroyed an existing Session [" + sessionId + "]nn");
		}
	}

	protected void customInitForSession(final HttpSessionEvent event) {
		//no-op
	}

	protected void customDestroyForSession(final HttpSessionEvent event) {
		HttpSession session = event.getSession();
		session.removeValue(BosenConstants.SESSION_PAGINATED_SEARCH_RESULTS);
		session.removeAttribute(BosenConstants.SESSION_PAGINATED_SEARCH_RESULTS);
	}

	protected static ApplicationContext getApplicationContext(ServletContext servletContext) {
		String appContextName = WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE;
		return (ApplicationContext) servletContext.getAttribute(appContextName);
	}

	protected static Object getBean(ServletContext servletContext, String name) {
		return getApplicationContext(servletContext).getBean(name);
	}
</code>
</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://jaybose.com/archives/httpsessionlistener-resolved-my-session-persistence-issue/feed/</wfw:commentRss>
		</item>
		<item>
		<title>openspaces developer challenge winners&#8230;</title>
		<link>http://jaybose.com/archives/openspaces-developer-challenge-winners/</link>
		<comments>http://jaybose.com/archives/openspaces-developer-challenge-winners/#comments</comments>
		<pubDate>Wed, 28 May 2008 16:51:19 +0000</pubDate>
		<dc:creator>Jay</dc:creator>
		
		<category><![CDATA[Technical stuff]]></category>

		<guid isPermaLink="false">http://jaybose.com/archives/openspaces-developer-challenge-winners/</guid>
		<description><![CDATA[Kudos to Jason Carreira! His DomainProxy entry to the OpenSpaces Developer Challenge earned him a finalist position.
One to watch: Leonardo Goncalves&#8217; Goods Donation System great idea that also made it to the finals. This could be a great help to many non-profits in the near future. Congrats to everyone who had the creativity and drive [...]]]></description>
			<content:encoded><![CDATA[<p>Kudos to Jason Carreira! His <a href="http://www.openspaces.org/display/DPY/DomainProxy">DomainProxy</a> entry to the <a href="http://www.openspaces.org/display/OS/OpenSpaces+Developer+Challenge">OpenSpaces Developer Challenge</a> earned him a finalist position.</p>
<p>One to watch: Leonardo Goncalves&#8217; <a href="http://www.openspaces.org/display/GDO/GoDo+-+Goods+Donation+System">Goods Donation System</a> great idea that also made it to the finals. This could be a great help to many non-profits in the near future. Congrats to everyone who had the creativity and drive to submit anything to the challenge. I&#8217;ll be watching to see who gets 1st&#8230;</p>
<p>See <a href="http://blog.gigaspaces.com/2008/05/28/openspaces-developer-challenge-winners/">here</a> for more info.</p>
]]></content:encoded>
			<wfw:commentRss>http://jaybose.com/archives/openspaces-developer-challenge-winners/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JFrets&#8230;</title>
		<link>http://jaybose.com/archives/jfrets/</link>
		<comments>http://jaybose.com/archives/jfrets/#comments</comments>
		<pubDate>Wed, 07 May 2008 14:14:28 +0000</pubDate>
		<dc:creator>Jay</dc:creator>
		
		<category><![CDATA[Technical stuff]]></category>

		<guid isPermaLink="false">http://jaybose.com/archives/jfrets/</guid>
		<description><![CDATA[I&#8217;ve always thought about something like this, but never made a move. Here&#8217;s to Matt Warman going from clouds to code!


]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve always thought about something like this, but never made a move. Here&#8217;s to <a href="http://java.dzone.com/news/jfrets-learning-play-guitar-ja" target="_blank">Matt Warman going from clouds to code!</a></p>
<p><a href="http://java.dzone.com/news/jfrets-learning-play-guitar-ja" title="JFrets…"></a></p>
<p style="text-align: center"><a href="http://java.dzone.com/news/jfrets-learning-play-guitar-ja" target="_blank" title="JFrets…"><img src="http://jaybose.com/wp-content/uploads/2008/05/jfrets-logo2.jpg" alt="JFrets…" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://jaybose.com/archives/jfrets/feed/</wfw:commentRss>
		</item>
		<item>
		<title>next…</title>
		<link>http://jaybose.com/archives/next%e2%80%a6/</link>
		<comments>http://jaybose.com/archives/next%e2%80%a6/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 14:23:25 +0000</pubDate>
		<dc:creator>Jay</dc:creator>
		
		<category><![CDATA[Technical stuff]]></category>

		<guid isPermaLink="false">http://jaybose.com/archives/next%e2%80%a6/</guid>
		<description><![CDATA[Tonight I start my first GigaSpaces project. It’s been on my mind since last November, and it’s been building steam. Why do I need a JavaSpaces/OpenSpaces framework? This project is supposed to be for a larger user base (500+ to start), and based on my academic distributed computing experience, and the excellent posts on highscalability.com, [...]]]></description>
			<content:encoded><![CDATA[<p>Tonight I start my first <a href="http://www.gigaspaces.com/xapcommunity">GigaSpaces project</a>. It’s been on my mind since last November, and it’s been building steam. <a href="http://www.gigaspaces.com/LargeScaleWebApplications">Why do I need a JavaSpaces/OpenSpaces framework?</a> This project is supposed to be for a larger user base (500+ to start), and based on my academic distributed computing experience, and the excellent posts on <a href="http://highscalability.com/">highscalability.com</a>, I know I need to upgrade some of my current 3rd party libraries. For performance reasons, of course.</p>
<p>So, I’m going with Spring-2.5.3 for my AOP and DI needs; easy choice. Hibernate-3.2.6 for ORM (I’m staving off JPA, for as long as I can!). MySql-5.0 for database. The UI… Well, I haven’t decided. I know I have to start moving away from WebWork-2. This isn’t up for debate. But I’m torn between moving to <a href="http://struts.apache.org/2.x/">Struts-2</a> (familiarity) or JSF (component-based). I read this FAQ entry for the <a href="http://wiki.java.net/bin/view/Projects/JavaServerFacesSpecFaq#differences">differences between Struts-2 and JSF</a>.</p>
<p>Ehh&#8230; here’s to new things: I’m going with <strong>JSF</strong>. I’ll take a serious look at <a href="http://www.jboss.com/products/seam">Seam</a> and <a href="http://myfaces.apache.org/">MyFaces</a>.</p>
<p style="text-align: center">*****</p>
<p>Update: After some discussion, and further research, I&#8217;ve decided to hold off on using JSF. Since it&#8217;s a fairly mature, event-based API, I definitely see myself using it in the near future. However, since <em>scalability</em> is the currently highest priority, I&#8217;m <strong>compelled</strong> to go with Struts-2. This also allows me to upgrade all my existing WebWork-2 projects&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://jaybose.com/archives/next%e2%80%a6/feed/</wfw:commentRss>
		</item>
		<item>
		<title>caucho&#8217;s got a facelift</title>
		<link>http://jaybose.com/archives/cauchos-got-a-facelift/</link>
		<comments>http://jaybose.com/archives/cauchos-got-a-facelift/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 17:29:03 +0000</pubDate>
		<dc:creator>Jay</dc:creator>
		
		<category><![CDATA[Technical stuff]]></category>

		<guid isPermaLink="false">http://jaybose.com/archives/cauchos-got-a-facelift/</guid>
		<description><![CDATA[You may, or may not know that I&#8217;m still a Resin user. Hence, every now and then I hit the Caucho site for documentation, mailing list archives, etc. Well today I decided to do just that; it had been at least a month since my last visit. I was pleased to see and cleaner and [...]]]></description>
			<content:encoded><![CDATA[<p>You may, or may not know that I&#8217;m still a <a href="http://caucho.com/products/resin.xtp">Resin</a> user. Hence, every now and then I hit the <a href="http://caucho.com/">Caucho</a> site for documentation, mailing list archives, etc. Well today I decided to do just that; it had been at least a month since my last visit. I was pleased to see and cleaner and brighter interface, and <a href="http://blog.caucho.com/">even a blog</a>. I&#8217;m taking this to mean there&#8217;s some new life in the Caucho&#8217;s/Resin&#8217;s development group (or at least their marketing). I for one am happy to see it!</p>
]]></content:encoded>
			<wfw:commentRss>http://jaybose.com/archives/cauchos-got-a-facelift/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JSR 303&#8230; 2 years later</title>
		<link>http://jaybose.com/archives/jsr-303-2-years-later/</link>
		<comments>http://jaybose.com/archives/jsr-303-2-years-later/#comments</comments>
		<pubDate>Wed, 26 Mar 2008 13:54:59 +0000</pubDate>
		<dc:creator>Jay</dc:creator>
		
		<category><![CDATA[Technical stuff]]></category>

		<guid isPermaLink="false">http://jaybose.com/archives/jsr-303-2-years-later/</guid>
		<description><![CDATA[Back in &#8216;06, I wrote about JSR 303, which aims to bring Bean Validation to the JDK. Well to be specific, it defines a meta-data model and API for JavaBean validation. The spec. draft aslo states that it will not be specific to any one tier or programming model. It will specifically not be tied [...]]]></description>
			<content:encoded><![CDATA[<p>Back in &#8216;06, <a href="http://jaybose.com/archives/jsr-303-bean-validation/" title="2 years ago...">I wrote about JSR 303</a>, <em>which aims to bring Bean Validation to the JDK</em>. Well to be specific, it defines a meta-data model and API for JavaBean validation. The spec. draft aslo states that it <em>will not be specific to any one tier or programming model. It will specifically not be tied to either the web tier or the persistence tier, and will be available for both server-side application programming, as well as rich client Swing application developers.</em></p>
<p>I, along with others, who relied on an external validation module, thought this JSR was a great idea. However, for whatever reason, it didn&#8217;t progress as fast as some of us would have liked. Now, it seems to be back in gear. <a href="http://in.relation.to/Bloggers/BeanValidationSneakPeekPartI" title="check it out" target="_blank">Emmanuel Bernard has made a sneek peek</a> available. Take a look, and as he asks, give some feedback.</p>
]]></content:encoded>
			<wfw:commentRss>http://jaybose.com/archives/jsr-303-2-years-later/feed/</wfw:commentRss>
		</item>
		<item>
		<title>constrained resize</title>
		<link>http://jaybose.com/archives/constrained-resize/</link>
		<comments>http://jaybose.com/archives/constrained-resize/#comments</comments>
		<pubDate>Sat, 08 Mar 2008 00:45:10 +0000</pubDate>
		<dc:creator>Jay</dc:creator>
		
		<category><![CDATA[Swing]]></category>

		<guid isPermaLink="false">http://jaybose.com/archives/constrained-resize/</guid>
		<description><![CDATA[OK, I have a JFrame whose dimensions had to be constrained on resize. Basically, it has to grow equally in width and height (think Checkerboard). In order to do that, I had to override the JFrame&#8217;s setBounds. However, I had no idea how to apply this same behavior when teh Frame is maximized. When maximized, [...]]]></description>
			<content:encoded><![CDATA[<p>OK, I have a JFrame whose dimensions had to be constrained on resize. Basically, it has to grow equally in width and height (think Checkerboard). In order to do that, I had to override the JFrame&#8217;s setBounds. However, I had no idea how to apply this same behavior when teh Frame is maximized. When maximized, the Frame would simply blow up and fit the entire screen. Well, it turns out that the same way <strong>setSize</strong> has been deprecated, <strong>setMaximiumSize</strong> - although not deprecated, it&#8217;s <em>ignored</em> for Frames. So use <strong>setMaximizedBounds</strong>.</p>
<div style="overflow: scroll; width: 96%; background-color: lightgrey">
<pre>
<code>
   Rectangle bounds = getGraphicsConfiguration().getBounds();
   int minOfSizes = (int) Math.min(bounds.getWidth(), bounds.getHeight());
   setMaximizedBounds(new Rectangle(new Dimension(minOfSizes, minOfSizes))); // viola!
</code></pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://jaybose.com/archives/constrained-resize/feed/</wfw:commentRss>
		</item>
		<item>
		<title>IDEA hidden features&#8230;</title>
		<link>http://jaybose.com/archives/idea-hidden-features/</link>
		<comments>http://jaybose.com/archives/idea-hidden-features/#comments</comments>
		<pubDate>Fri, 07 Mar 2008 14:40:58 +0000</pubDate>
		<dc:creator>Jay</dc:creator>
		
		<category><![CDATA[Technical stuff]]></category>

		<guid isPermaLink="false">http://jaybose.com/archives/idea-hidden-features/</guid>
		<description><![CDATA[If you are a long time user of IntelliJ IDEA, you already know why it&#8217;s great. If you are not, I&#8217;ll tell you the IDE just makes things easier. Aside from the community, and large number of quality plugins, it has killer shortcuts. Now some of you may say, yeah you can add your own [...]]]></description>
			<content:encoded><![CDATA[<p>If you are a long time user of <a href="http://www.jetbrains.com/idea/index.html">IntelliJ IDEA</a>, you already know why it&#8217;s great. If you are not, I&#8217;ll tell you the IDE just makes things easier. Aside from the community, and large number of quality plugins, it has <em>killer shortcuts</em>. Now some of you may say, yeah you can add your own shortcuts in any reasonable IDE (eclipse). This is true. However, the major difference in IDEA is the built-in shortcuts dwarf what I&#8217;ve seen in other IDEs. There are so many shortcuts that you will miss a few, guaranteed. Well, a recent post on the <a href="http://blog.xebia.com/2008/03/07/intellijs-best-hidden-features/">Xebia blog</a> gave me 2 new shortcuts, that I know I&#8217;ll be using <strong>heavily</strong>. Check &#8216;em out for yourself.</p>
]]></content:encoded>
			<wfw:commentRss>http://jaybose.com/archives/idea-hidden-features/feed/</wfw:commentRss>
		</item>
		<item>
		<title>webwork2 and unchecked checkboxes&#8230;</title>
		<link>http://jaybose.com/archives/webwork2-and-unchecked-checkboxes/</link>
		<comments>http://jaybose.com/archives/webwork2-and-unchecked-checkboxes/#comments</comments>
		<pubDate>Sun, 03 Feb 2008 21:53:21 +0000</pubDate>
		<dc:creator>Jay</dc:creator>
		
		<category><![CDATA[Technical stuff]]></category>

		<guid isPermaLink="false">http://jaybose.com/archives/webwork2-and-unchecked-checkboxes/</guid>
		<description><![CDATA[your average Web-MVC framework does many things. It may simplify your life with some basic type-conversion. It may allow you to directly map an object&#8217;s method as a Web Action. However, even the best may gloss over an issue&#8230; at least for a while. For me that framework is WebWork2, and that issue was unchecked [...]]]></description>
			<content:encoded><![CDATA[<p>your average Web-MVC framework does many things. It may simplify your life with some basic type-conversion. It may allow you to directly map an object&#8217;s method as a Web Action. However, even the best may gloss over an issue&#8230; at least for a while. For me that framework is WebWork2, and that issue was unchecked checkboxes.</p>
<p>In accordance with the <a href="http://www.w3.org/TR/html401/interact/forms.html#h-17.2">W3C spec</a>, when a form is submitted, its unchecked checkboxes, and other unsuccessful controls are simply ignored. So, you need some form of trickery to get that false set on your Action. A fairly simple (rubbish) hack for this is to search by name for the desired control in a given request, and set it to false when you can&#8217;t find the name/value pair.</p>
<p>Well, thanks to some innovation by Konstantin Pribluda, this <em>horrible</em> (OK, slight nuisance) unchecked checkboxes issue is <a href="http://jira.opensymphony.com/browse/WW-1489">now a thing of the past</a>. For those of you who can&#8217;t wait for release of WebWork-2.2.7, there&#8217;s a <a href="http://release.opensymphony.com/">download just for you</a> (Thanks Toby). Guys, keep up the good work!</p>
]]></content:encoded>
			<wfw:commentRss>http://jaybose.com/archives/webwork2-and-unchecked-checkboxes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>certified in spring&#8230;</title>
		<link>http://jaybose.com/archives/certified-in-spring/</link>
		<comments>http://jaybose.com/archives/certified-in-spring/#comments</comments>
		<pubDate>Thu, 17 Jan 2008 15:50:08 +0000</pubDate>
		<dc:creator>Jay</dc:creator>
		
		<category><![CDATA[Technical stuff]]></category>

		<guid isPermaLink="false">http://jaybose.com/archives/certified-in-spring/</guid>
		<description><![CDATA[Spring has definitely made my life easier. Not just on all of my side projects, but at work too. At this moment, I have all our domain objects and services wired and working via Spring-2.5. Mostly JPA, two JDBC Daos. A bunch of POJO services with some some basic transaction management. Client/Server, so some RMI [...]]]></description>
			<content:encoded><![CDATA[<p>Spring has definitely made my life easier. Not just on all of my side projects, but at work too. At this moment, I have all our domain objects and services wired and working via Spring-2.5. Mostly JPA, two JDBC Daos. A bunch of POJO services with some some basic transaction management. Client/Server, so some RMI invokers, and some JMS. Nothing too crazy. All of this took about 3 months. But I assure you, this would have taken double, maybe triple that time if I had to write any of real <strong>boilerplate</strong> junk. I&#8217;m not a fan-boy, just thankful.</p>
<p>Anyway, so you mightunderstand why I&#8217;d consider getting some level of <a href="http://blog.springsource.com/main/2008/01/17/the-springsource-certification-program/" title="Should I..." target="_blank">SpringSource Certification</a>. At only <em>150USD</em>, it&#8217;s not that bad. Sun&#8217;s exams were about that, and more in some cases. Speaking of Sun&#8217;s certification, did it really help? I don&#8217;t mean just after you got it, but now. If you are a Sun <strong>certified JEE developer</strong>, and you&#8217;ve interviewed for a position in the <em>past 3 years</em>, do you believe having that certification helped you get a position? Maybe it did.</p>
<p>Personally, I fought with this between 2004 and 2006. In the end, I realized simply knowing your stuff probably goes a bit further. A reasonable technical interviewer will know exactly what to ask to weed out those lacking the required knowledge; certification or not. With that in mind, I wonder, how would I really benefit from the certification. Some might say, if it wont break your bank, do it. In some ways, this is like college: I know many who did not go to college, and are great at whatever they do. I also know some fellow CS alumni who are just rubbish.</p>
]]></content:encoded>
			<wfw:commentRss>http://jaybose.com/archives/certified-in-spring/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
