<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>G3 Global &#187; Stuart Gunter</title>
	<atom:link href="http://www.g3it.com/blog/author/stuartgunter/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.g3it.com</link>
	<description>G3 Global Website</description>
	<lastBuildDate>Wed, 13 Jul 2011 12:28:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>SAP Deployment with Ant</title>
		<link>http://www.g3it.com/blog/technical/java/sap-deployment-with-ant/</link>
		<comments>http://www.g3it.com/blog/technical/java/sap-deployment-with-ant/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 12:38:52 +0000</pubDate>
		<dc:creator>Stuart Gunter</dc:creator>
				<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[SAP NetWeaver]]></category>

		<guid isPermaLink="false">http://www.g3it.com/?p=940</guid>
		<description><![CDATA[A few months ago, I wrote about our continuous integration system and how I&#8217;d hooked everything up to automate as much as possible. One of the key components of this suite of tools was a SAP NetWeaver Deployment Plugin for Maven that I wrote. Since then, I have received a few comments and queries about [...]]]></description>
			<content:encoded><![CDATA[<p>A few months ago, I wrote about our <a href="/blog/technical/continuous-integration-on-sap-using-subversion-maven-hudson-nexus-and-sonar/"> continuous integration system</a> and how I&#8217;d hooked everything up to automate as much as possible. One of the key components of this suite of tools was a <strong>SAP NetWeaver Deployment Plugin for Maven</strong> that I wrote. Since then, I have received a few comments and queries about this plugin and have been asked whether it&#8217;s something we&#8217;re actively developing. I had intended on releasing it as an open source plugin (and may still do so at some stage), but in the meantime I have set up another option that has proven very useful &#8211; and that&#8217;s what this post is all about.</p>
<p>This time I&#8217;ve provided the documented Ant build file at the end of this article, which you are welcome to download and use for your own development.</p>
<h3>How does it work?</h3>
<p>Within the standard Maven project object model, you have the ability to define artifact repositories within the <code>&lt;distributionManagement /&gt;</code> section of the pom.xml file. Maven uses these settings to deploy the artifact that was generated during the build process &#8211; which, in our case, simply deploys them to <strong>Nexus</strong>. This makes it easy to reference the artifact in other projects and ensures that it is appropriately shared (either internally or publicly, depending on how you have configured it). It&#8217;s up to you to decide how and when you deploy to Nexus, but the point is that it is in a shared repository. This should be done for you as part of your release process if you use the <a href="http://maven.apache.org/plugins/maven-release-plugin/index.html" target="_blank">Maven Release Plugin</a>, although it can be manually uploaded too (either via Nexus or via the <a href="http://maven.apache.org/plugins/maven-install-plugin/index.html" target="_blank">Maven Install Plugin</a> / <a href="http://maven.apache.org/plugins/maven-deploy-plugin/index.html" target="_blank">Maven Deploy Plugin</a>). Now that we have our artifact in Nexus, we can simply download it whenever we need it. We don&#8217;t want to rebuild the sources to produce another copy of the already released artifact &#8211; we simply want to use the same compiled artifact that we originally produced.</p>
<p>We used <a href="http://ant.apache.org" target="_blank">Ant</a> to create a build script &#8211; modelled on the sample script provided in the SAP NetWeaver CE 7.1 Developer Edition installation &#8211; that would allow us to run a deployment <em>from </em>anywhere <em>to </em>anywhere. The standard script provided by SAP is tied to the directory where it lives &#8211; which is not very useful, since we really don&#8217;t need a full NWCE installation just to fulfill a few dependencies. So we decided to combine one of the best features of <strong>Maven </strong>(dependency management) with the simplicity and clarity of <strong>Ant</strong>, and have produced a build script with no local ties. The next few sections will explain what you need to make this work and how to setup your environment (the script also includes some documentation).</p>
<h3>Setup</h3>
<p>You&#8217;ll obviously need to have <strong>Ant </strong>installed for this to work. In addition to this, you&#8217;ll need to download the <a href="http://maven.apache.org/ant-tasks/download.html" target="_blank"><strong>Maven Tasks for Ant</strong></a> and copy them into your <code>{ANT_HOME}/lib</code> folder. The next thing you need is your own internal <strong>Nexus repository manager</strong>. This is technically not required, as you could simply install all dependencies locally &#8211; although it&#8217;s more realistic that you&#8217;ll want to use a shared repository for your team / company.</p>
<p>Once you have your Nexus repo manager configured, you need to deploy the SAP deployment JAR files to the 3rd Party release repository. These are not made available in any public repo, so you&#8217;ll need to host them yourself. I&#8217;ve outlined the details I used to upload the deployment libraries in our system, but you&#8217;re free to use whatever <a href="http://www.sonatype.com/books/nexus-book/reference/using-sect-uploading-artifacts.html" target="_blank">GAV parameters</a> you like (so long as you update the Ant build file as well). You can find all of these files in the SAP installation directory &#8211; just look in the sample Ant script (in <code>/usr/sap/LCL/J00/j2ee/deployment/scripts</code>) for the relative file locations.</p>
<table border="0">
<thead>
<tr>
<td><strong>JAR File</strong></td>
<td><strong>Maven Artifact Definition</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td>tc~je~dc_ant.jar</td>
<td>com.sap.ant:sap-ant-tasks:7.1.1</td>
</tr>
<tr>
<td>sap.com~tc~exception~impl.jar</td>
<td>com.sap:tc.exception.impl:7.1.1</td>
</tr>
<tr>
<td>sap.com~tc~je~clientlib~impl.jar</td>
<td>com.sap:tc.je.clientlib.impl:7.1.1</td>
</tr>
<tr>
<td>sap.com~tc~logging~java~impl.jar</td>
<td>com.sap:tc.logging.java.impl:7.1.1</td>
</tr>
<tr>
<td>sap.com~tc~je~deployment14~impl.jar</td>
<td>com.sap:tc.je.deployment14.impl:7.1.1</td>
</tr>
<tr>
<td>sap.com~tc~bl~jarsap~impl.jar</td>
<td>com.sap:tc.bl.jarsap.impl:7.1.1</td>
</tr>
<tr>
<td>sap.com~tc~sapxmltoolkit~sapxmltoolkit.jar</td>
<td>com.sap:tc.sapxmltoolkit:7.1.1</td>
</tr>
<tr>
<td>sap.com~tc~bl~sl~utility~impl.jar</td>
<td>com.sap:tc.bl.sl.utility.impl:7.1.1</td>
</tr>
</tbody>
</table>
<p><strong><em>Note:</em></strong> I&#8217;ve used version 7.1.1 for all of these SAP libraries as I&#8217;m running NetWeaver CE 7.1 with Enhancement Pack 1 (more on how to check versions <a href="/blog/technical/which-version-of-netweaver-am-i-running/">here</a>).</p>
<p>When you run Ant with the build file, it will automatically resolve and download the dependencies via Nexus (using the Maven Tasks for Ant). So all you need to do is specify what you want to deploy / undeploy, and then let Ant &amp; Maven do their thing. If in doubt, simply run Ant specifying the build file and the <code>-projecthelp</code> option.</p>
<p>Good luck, and I hope this has helped you!</p>
<p><strong>Download:</strong> <a href="http://www.g3it.com/wp-content/uploads/2010/09/build.zip">SAP Deployment with Ant</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.g3it.com/blog/technical/java/sap-deployment-with-ant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code Reviews&#8230; One Month Later</title>
		<link>http://www.g3it.com/blog/technical/code-reviews-one-month-later/</link>
		<comments>http://www.g3it.com/blog/technical/code-reviews-one-month-later/#comments</comments>
		<pubDate>Fri, 10 Sep 2010 12:58:16 +0000</pubDate>
		<dc:creator>Stuart Gunter</dc:creator>
				<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.g3it.com/?p=936</guid>
		<description><![CDATA[It has been one month since we introduced formal code reviews as part of our development process, and I thought it fitting to do a review of the code reviews &#8211; effectively a Code Review Retrospective. Rather than creating a list of n reasons why you should be doing code reviews, I&#8217;m simply going to [...]]]></description>
			<content:encoded><![CDATA[<p>It has been one month since we <a href="http://www.g3it.com/technical/implementing-review-board-for-code-reviews/" target="_self">introduced formal code reviews</a> as part of our development process, and I thought it fitting to do a review of the code reviews &#8211; effectively a <strong>Code Review Retrospective</strong>. Rather than creating a list of <strong><em>n</em> reasons why you should be doing code reviews</strong>, I&#8217;m simply going to take you through our experiences over the last 4 weeks.</p>
<p>I guess the best place to start is to look at the goals I had for our code reviews. I&#8217;ve summarised them as follows:</p>
<ol>
<li>Improve quality <sup><em>[1]</em></sup></li>
<li>Share ideas</li>
<li>Share knowledge of the code</li>
<li>Share ownership of the code</li>
<li>Mentor junior programmers</li>
</ol>
<p>You&#8217;ll notice that most of these points can be summarised in one word&#8230; TEAMWORK!</p>
<h3>Teamwork</h3>
<p>I have already seen improvement in a number of these points in only a month. We have ensured that we always submit code for review before allowing it to be handed over for testing, and this has caught a variety of issues in the early stages of development. The issues we&#8217;ve identified so far range from subtle issues such as usability, terminology and coding standards to bigger issues such as EIS integration and design.</p>
<p>I also found that the code review process has stimulated more internal dialogue within the development team about how we should go about solving some of the user stories on our task list. As a result, we have achieved the goals of sharing knowledge and ownership of the code and sharing ideas. In turn, this has improved the quality of what we deliver to testing and ensured consistency in our approach as individuals within the same team.</p>
<p>When comparing code that has been reviewed against code that has not been reviewed, it is quite clear that the code reviews help us to deliver code in a consistent manner across the team. That&#8217;s quite a big strength in my opinion, as it means that we&#8217;re all playing by the same rules, abiding by the same standards, and finding consensus in our approach. Maintainability has improved because the code always looks familiar &#8211; so less time is spent figuring out what the last guy did before trying to fix a bug or develop a new feature.</p>
<h3>Personal Benefits</h3>
<p>I&#8217;ve found that I can keep a much better eye on our delivery by simply monitoring the code reviews. It gives me an incremental view of the changes to the codebase, and allows me to check that we&#8217;re meeting the standards we&#8217;ve set for quality, simplicity, maintainability, and so on. I think this is essential for any Tech Lead, and also achieves the goal with minimal interference. The productivity of the team should not suffer unnecessarily in order to meet standards &#8211; there is often a less disruptive way of achieving this.</p>
<h3>What to try next</h3>
<p>When we started the code reviews, we were unsure whether to do <strong>pre-commit</strong> or <strong>post-commit</strong> reviews. We decided to start with post-commit reviews, as this would be the least disruptive to a familiar development process and would allow us to focus on one new area at a time. Now that we&#8217;ve been doing code reviews for a while and have stabilised the process, I&#8217;m quite keen to try pre-commit reviews for a sprint or two. I&#8217;m sure there will be obstacles to overcome, but the best way to evaluate the two methods against each other is to try them both.</p>
<p><sup><em>[1]</em></sup> There are many different views on what &#8220;software quality&#8221; means. I personally like the points outlined in Wikipedia: <a href="http://en.wikipedia.org/wiki/Software_quality#Software_quality_factors">http://en.wikipedia.org/wiki/Software_quality#Software_quality_factors</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.g3it.com/blog/technical/code-reviews-one-month-later/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Implementing Review Board for Code Reviews</title>
		<link>http://www.g3it.com/blog/technical/implementing-review-board-for-code-reviews/</link>
		<comments>http://www.g3it.com/blog/technical/implementing-review-board-for-code-reviews/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 14:01:01 +0000</pubDate>
		<dc:creator>Stuart Gunter</dc:creator>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.g3it.com/?p=921</guid>
		<description><![CDATA[A few days ago I migrated our build server, aptly named Bob (the Builder), to Ubuntu 10.04 LTS and incorporated a new product to the existing suite. The new product is Review Board, which we&#8217;ll be using for regular code reviews within our development team. I&#8217;ve written previously on the various products we use as [...]]]></description>
			<content:encoded><![CDATA[<p>A few days ago I migrated our build server, aptly named Bob (the Builder), to <a href="http://www.ubuntu.com" target="_blank">Ubuntu 10.04 LTS</a> and incorporated a new product to the existing suite. The new product is <a href="http://www.reviewboard.org/" target="_blank"><strong>Review Board</strong></a>, which we&#8217;ll be using for regular code reviews within our development team. I&#8217;ve <a href="http://www.g3it.com/technical/continuous-integration-on-sap-using-subversion-maven-hudson-nexus-and-sonar/" target="_blank">written previously</a> on the various products we use as part of our continuous integration system, and Review Board has now joined their ranks as a much needed assistant helping us cast a human eye on code quality. We also use Sonar for code quality analysis, but that&#8217;s only one part of a very big picture. I&#8217;ve seen through experience how code reviews can significantly improve quality, and I know my own personal experience is very well supported by many <a href="http://www.amazon.co.uk/Peer-Reviews-Software-Addison-Wesley-Information/dp/0201734850/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1280506056&amp;sr=1-2" target="_blank">books</a> and <a href="http://www.codinghorror.com/blog/2006/01/code-reviews-just-do-it.html" target="_blank">blogs</a> on the subject.</p>
<p>One challenge we have is <em>fully </em>integrating this into our development environment, as some developers work in ABAP and others in Java. The Java developerment environment neatly integrates with Review Board, but the ABAP has some interesting obstacles. What we&#8217;ve done to overcome this challenge is to write a proof of concept application in ABAP that allows a developer to export ABAP code (in a neat human-readable form) into a Subversion repository. From there, the developer can request a code review using the post-review command line tool. It all works as expected, but it&#8217;s still quite a manual, time-consuming process. We hope to develop this further, making it much easier to use, and roll it out to the other development teams.</p>
<p>The next decision we have to make is to choose whether to do <a href="http://www.reviewboard.org/docs/manual/1.0/glossary/#term-post-commit-review" target="_blank">pre-commit or post-commit</a> reviews. Both have their strengths and weaknesses, so we&#8217;ve decided to try them both out before making a firm decision on how to take it forward.</p>
<p>Only a week or two in, and I&#8217;m already seeing the benefits of implementing Review Board! More updates to come as we iron out the creases in our review process&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.g3it.com/blog/technical/implementing-review-board-for-code-reviews/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Applying YSlow performance improvements within SAP NetWeaver</title>
		<link>http://www.g3it.com/blog/technical/java/applying-yslow-performance-improvements-within-sap-netweaver/</link>
		<comments>http://www.g3it.com/blog/technical/java/applying-yslow-performance-improvements-within-sap-netweaver/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 07:43:03 +0000</pubDate>
		<dc:creator>Stuart Gunter</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[SAP NetWeaver]]></category>

		<guid isPermaLink="false">http://www.g3it.com/?p=888</guid>
		<description><![CDATA[Having just finished reading Steve Souders&#8217; High Performance Web Sites, I thought it would be helpful to point out how some of the server-side rules can be configured on SAP NetWeaver. PS: Buy the book! It&#8217;s short and to the point, and very well written. I&#8217;ve already ordered his follow-up book Even Faster Web Sites to be [...]]]></description>
			<content:encoded><![CDATA[<p>Having just finished reading <strong>Steve Souders&#8217; </strong><a href="http://www.amazon.co.uk/High-Performance-Web-Sites-Essential/dp/0596529309/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1279549330&amp;sr=8-1" target="_blank"><strong>High Performance Web Sites</strong></a>, I thought it would be helpful to point out how some of the server-side rules can be configured on SAP NetWeaver.</p>
<p>PS: Buy the book! It&#8217;s short and to the point, and very well written. I&#8217;ve already ordered his follow-up book <a href="http://www.amazon.co.uk/Even-Faster-Web-Sites-Performance/dp/0596522304/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1279610336&amp;sr=8-2" target="_blank"><strong>Even Faster Web Sites</strong></a> to be delivered today!</p>
<p>The book covers <strong>14 rules for improving performance</strong> on web sites, concentrating  mostly on front-end optimisations that can dramatically improve the responsiveness and user experience of your site. However, some of the rules involve changes on the server &#8211; for example, enabling gzip compression. The full listing of the <strong>Yahoo! Performance Rules</strong> can be found <a href="http://developer.yahoo.com/performance/rules.html" target="_blank">here</a>.</p>
<p>Below is a brief summary of how to configure some of these rules in <strong>SAP NetWeaver</strong>. I&#8217;m using <strong>NetWeaver CE 7.1</strong>, so you may need to adjust these slightly if you&#8217;re running a different version. All configuration is done within <em>NetWeaver Administrator</em> &gt; <em>Configuration</em> &gt; <em>Infrastructure</em> &gt; <em>Java System Properties</em> &gt; <em>Services</em>, so I&#8217;m only going to mention that once to avoid repeating it many times over. I&#8217;ve also made an effort to reference the SAP Help docs that I&#8217;ve used to compile this summary, which you should find at the end of each section.</p>
<h3>Rule: Add an Expires or a Cache-Control Header</h3>
<p>The first thing to point out here is that NetWeaver has two cache control settings: one for the server and one for the client. Before understanding how to configure each of these, you need to know what it is that you&#8217;re configuring and the implications of the changes you&#8217;re about to make. I&#8217;ve included a diagram from the relevant SAP Help page (full reference below) to show the architecture of the ICM Server Cache.</p>
<p><a href="http://www.g3it.com/wp-content/uploads/2010/07/ICM-Server-Cache.gif"><img class="alignnone size-medium wp-image-889" title="ICM Server Cache" src="http://www.g3it.com/wp-content/uploads/2010/07/ICM-Server-Cache-300x225.gif" alt="" width="300" height="225" /></a></p>
<p>The full explanation that accompanies this diagram can be found here: <a href="https://cw.sdn.sap.com/cw/docs/DOC-107069" target="_blank">https://cw.sdn.sap.com/cw/docs/DOC-107069</a></p>
<p>Right&#8230; now that you have a better understanding of how caching works on the server, you&#8217;re ready to configure it. I assume you&#8217;re already familiar with the standard HTTP Cache-Control header, but refer you to the full explanation here if not: <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9" target="_blank">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9</a></p>
<p>In order to change the cache configuration, you need to find the <strong>HTTP Provider Service</strong> in NetWeaver Administrator and modify the following properties:</p>
<p><em>SapCacheControl</em> &#8211; This should be set to the expiration period (in seconds) of the cached resource.<br />
<em>CacheControl</em> &#8211; This can be set to any of the cache-response-directive values specified in the HTTP Specification (see link above for a reference to the section on Cache-Control).</p>
<p>You could argue that the server-side cache isn&#8217;t exactly what Steve Souders was talking about in his book &#8211; but when reading the documentation on the SAP Help site, you&#8217;ll see that the SapCacheControl value is also used as the Cache-Control max-age response directive&#8230; so it will have an impact on the cache status of web resources.</p>
<p>SAP Help Reference: <a href="https://cw.sdn.sap.com/cw/docs/DOC-100645" target="_blank">https://cw.sdn.sap.com/cw/docs/DOC-100645</a></p>
<h3>Rule: Gzip Components</h3>
<p>Enabling <strong>gzip compression</strong> is fairly straight-forward. Just find the <strong>HTTP Provider Service</strong> in NetWeaver Administrator and modify the following properties:</p>
<p><em>AlwaysCompressed</em> &#8211; This is a list of all the file extensions or MIME types that should always be compressed.<br />
<em>NeverCompressed</em> &#8211; This is a list of all the file extensions or MIME types that should never be compressed.<br />
<em>CompressedOthers</em> &#8211; Boolean value to indicate whether all other file extensions or MIME types (i.e. those not listed in either AlwaysCompressed or NeverCompressed) should be compressed.<br />
<em>MinimumGZipLength</em> &#8211; Specifies the minimum size required for gzip compression to be applied. This property works in conjunction with <em>AlwaysCompressed</em> and <em>CompressedOthers</em> (i.e. the resource must be listed for compression AND larger than MinimumGZipLength in order to be compressed).</p>
<p>Note: File extensions must be in the format &#8220;*.ext&#8221;. Any entries without an asterisk will be treated as MIME types.</p>
<p>SAP Help Reference: <a href="https://cw.sdn.sap.com/cw/docs/DOC-111485" target="_blank">https://cw.sdn.sap.com/cw/docs/DOC-111485</a></p>
<p>You can also dynamically enable compression for Servlet / JSP responses by passing special headers in the response. These headers are not sent to the client, but rather instruct the HTTP Provider Service to compress the response before sending it on to the client. These headers override the HTTP Provider Service configuration described above. If specified, the presence of these headers will force the HTTP Provider Service to either compress or not compress the response &#8211; regardless of what is configured elsewhere.</p>
<p>The header values themselves are configurable within the <strong>Web Container Service</strong>, and are described as follows:</p>
<p><em>HeaderForCompression</em> &#8211; Specifies the header name that must force compression when present in the response<br />
<em>HeaderForNoCompression</em> &#8211; Specifies the header name that must prevent compression when present in the response</p>
<p>To use this in your Servlet / JSP, simply set the relevant header to &#8220;true&#8221;.</p>
<p>SAP Help Reference: <a href="https://cw.sdn.sap.com/cw/docs/DOC-100076" target="_blank">https://cw.sdn.sap.com/cw/docs/DOC-100076</a></p>
<h3>Rule: Configure ETags</h3>
<p><strong>ETags</strong> are very elusive within the SAP Help docs. Despite much trawling, I could only come up with a few minor references to indicate that it exists &#8211; however no details could be found. I did find a SAP Note that mentioned a fix to ETag functionality in NW 7.0 &#8211; see <a href="https://service.sap.com/sap/support/notes/1020365" target="_blank">Note 1020365</a>.</p>
<p>If anyone manages to come across more information on this, please post a comment. I&#8217;d be interested in finding where it can be configured.</p>
<h3>Criticism</h3>
<p>While making all these configuration changes, it&#8217;s not hard to see that NetWeaver Administrator is lacking the user-friendliness that it should offer to administrators. It a fairly poor means of managing a system as it has been built to be as generic as possible. Unfortunately, in this case it means that there&#8217;s a lot it just doesn&#8217;t do very well because it&#8217;s trying to cater for everything in one go. To illustrate my point, simply try to modify the list of MIME types within the HTTP Service (see <em>Mime</em> property). This list is likely to be very long, regardless of how you configure it. What do you do if you want to add one extra MIME type? Well, in that case you need to copy the list already there and paste it into Notepad, add the item you want, then re-insert the entire list into an input field only wide enough for about 20 characters. To put that into perspective, the default list of MIME types is just under 4000 characters long. Not only is the input field far too small, but surely an administrator should be able to modify the existing list rather than recreating it to make a small change? Even worse than this is the fact the modified property text is not wrapped in the table cell. So if you do decided to add a MIME type, you lose all visibility of what has been configured as you can only see the first few characters before they disappear. I can&#8217;t say I&#8217;m surprised though. Usability has never been something that SAP do well&#8230; or at all, for that matter. However, taking visibility of the configuration of a system away from the administrator is a very dangerous thing to do. This issue very clearly illustrates how poor usability can have very far reaching consequences, and why it is so important to get it right!</p>
<p>This is by no means a comprehensive review of the how&#8217;s and why&#8217;s of each of these rules, nor does it go into much detail about each system property described. I intentionally kept this fairly straight forward so it can serve as a reference guide, and have instead provided links to more detailed documentation wherever I can. After all, the links are where I got the information in the first place &#8211; so it&#8217;s only right to give the original author full credit for it. I&#8217;m just hoping to save some of you time in finding the right resources.</p>
<p>I hope this has been helpful, even if it was nothing more than a prompt to look into other areas where NetWeaver can be configured to operate according to what you need.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.g3it.com/blog/technical/java/applying-yslow-performance-improvements-within-sap-netweaver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thoughts on Joining an Open Source Project</title>
		<link>http://www.g3it.com/blog/technical/thoughts-on-joining-an-open-source-project/</link>
		<comments>http://www.g3it.com/blog/technical/thoughts-on-joining-an-open-source-project/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 08:01:05 +0000</pubDate>
		<dc:creator>Stuart Gunter</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.g3it.com/?p=882</guid>
		<description><![CDATA[Since starting my career as a software developer back in 2002, I&#8217;ve wanted to join an open source project. A few things have held me back from doing this&#8230; including inexperience in my early career, lack of available time to commit properly to a project, and the inherent difficulty in finding that one project amongst [...]]]></description>
			<content:encoded><![CDATA[<p>Since starting my career as a software developer back in 2002, I&#8217;ve wanted to join an open source project. A few things have held me back from doing this&#8230; including inexperience in my early career, lack of available time to commit properly to a project, and the inherent difficulty in finding that one project amongst the thousands out there that I feel strongly about. Over the last few weeks I&#8217;ve been looking into this again and have now decided to join <a href="http://openmrs.org" target="_blank"><strong>OpenMRS</strong></a>. The experience of choosing a project and getting stuck in has prompted me to write about why I did it and hopefully spark some new ideas for other developers wanting to get involved in open source projects.</p>
<p><strong>Why join an open source project?<br />
</strong>Everyone has the capacity to get involved in something and help out, and software developers are no exception. I&#8217;ve always been involved in building software for business use, which has a lot of challenges and rewards &#8211; but it doesn&#8217;t really improve anyone&#8217;s life in any significant way. My reason for joining an open source project is to contribute to something that really matters&#8230; something that might genuinely improve the lives of other people. For this reason, I&#8217;ve focused on finding a project that has this as one of its core objectives.</p>
<p><strong>Why OpenMRS?</strong><br />
The answer to this question is pretty simple&#8230; I have fairly limited &#8220;free&#8221; time as it is, so I wanted to make sure I join a project that I believe in. OpenMRS is clearly focused on providing software that can improve the lives of millions of people &#8211; particularly in the developing world &#8211; so this immediately caught my attention. My original career plan was to study medicine and become a surgeon, but after finishing school I made the decision to study software engineering instead. I don&#8217;t regret that decision, but I&#8217;ve never lost my interest in medicine, and joining the OpenMRS project gives me the opportunity to work in both.</p>
<p><strong>What&#8217;s next?</strong><br />
When joining any new project there is always a lot to learn. Others may have been involved for years, but you have to learn the ropes before you can be of any use to the existing team. So my focus for the next few weeks will be to learn about OpenMRS from every conceivable perspective. What problem is the system trying to solve? How does it work for the user? How has it been designed? How is the data model structured? However, the biggest challenge will be gaining enough understanding of the medical domain for the system to make sense. Very fortunately, the technical foundation is quite familiar territory &#8211; so the biggest obstacle is domain knowledge.</p>
<p>I&#8217;ll follow up in the coming weeks with some details on how to contribute to an open source project &#8211; entirely based on my experience, rather than a definitive list of &#8220;do&#8217;s and don&#8217;ts&#8221;. Until then, I&#8217;ll be buried in documentation!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.g3it.com/blog/technical/thoughts-on-joining-an-open-source-project/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>What&#8217;s the longest class name you&#8217;ve ever seen?</title>
		<link>http://www.g3it.com/blog/technical/java/whats-the-longest-class-name-youve-ever-seen/</link>
		<comments>http://www.g3it.com/blog/technical/java/whats-the-longest-class-name-youve-ever-seen/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 13:40:27 +0000</pubDate>
		<dc:creator>Stuart Gunter</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.g3it.com/?p=861</guid>
		<description><![CDATA[When trying to do code completion for &#8220;Hashtable&#8221;, I was instead presented with this incredibly long class name! Priceless! HasThisTypePatternTriedToSneakInSomeGenericOrParameterizedTypePatternMatchingStuffAnywhereVisitor Believe it or not, it really does exist. It&#8217;s contained within package &#8220;org.aspectj.weaver.patterns&#8221;, and can be verified here: http://www.springsource.com/repository/app/bundle/version/export?name=com.springsource.org.aspectj.matcher&#38;version=1.6.8.RELEASE&#38;package=org.aspectj.weaver.patterns Has anyone else found anything longer than that? Now I&#8217;m curious to know what else is out [...]]]></description>
			<content:encoded><![CDATA[<p>When trying to do code completion for &#8220;Hashtable&#8221;, I was instead presented with this incredibly long class name! Priceless!</p>
<p><em>HasThisTypePatternTriedToSneakInSomeGenericOrParameterizedTypePatternMatchingStuffAnywhereVisitor</em></p>
<p>Believe it or not, it really does exist. It&#8217;s contained within package &#8220;org.aspectj.weaver.patterns&#8221;, and can be verified here: <a href="http://www.springsource.com/repository/app/bundle/version/export?name=com.springsource.org.aspectj.matcher&amp;version=1.6.8.RELEASE&amp;package=org.aspectj.weaver.patterns">http://www.springsource.com/repository/app/bundle/version/export?name=com.springsource.org.aspectj.matcher&amp;version=1.6.8.RELEASE&amp;package=org.aspectj.weaver.patterns</a></p>
<p>Has anyone else found anything longer than that? Now I&#8217;m curious to know what else is out there!</p>
<p>I&#8217;m also beginning to wonder whether a new site needs to be created called <a href="http://www.codecompleteme.com/">www.codecompleteme.com</a> in the same spirit as <a href="http://www.autocompleteme.com/">www.autocompleteme.com</a> <img src='http://www.g3it.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.g3it.com/blog/technical/java/whats-the-longest-class-name-youve-ever-seen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Maven plugin for creating a TargetProcess Build</title>
		<link>http://www.g3it.com/blog/technical/java/maven-plugin-for-creating-a-targetprocess-build/</link>
		<comments>http://www.g3it.com/blog/technical/java/maven-plugin-for-creating-a-targetprocess-build/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 15:34:07 +0000</pubDate>
		<dc:creator>Stuart Gunter</dc:creator>
				<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.g3it.com/?p=812</guid>
		<description><![CDATA[The development environment I use at work has a number of tools that all interoperate with each other in various ways. One of the tools central to our work is TargetProcess. This integrates with Subversion to pull through all associated code changes, and provides a nice view of where we are in our projects. Another critical [...]]]></description>
			<content:encoded><![CDATA[<p>The development environment I use at work has a number of tools that all interoperate with each other in various ways. One of the tools central to our work is <strong><a href="http://www.targetprocess.com" target="_blank">TargetProcess</a></strong>. This integrates with <strong><a href="http://subversion.tigris.org" target="_blank">Subversion</a></strong> to pull through all associated code changes, and provides a nice view of where we are in our projects.</p>
<p>Another critical part of our environment is our continuous integration system - <strong><a href="http://www.hudson-ci.org" target="_blank">Hudson</a></strong>. This is configured in a fairly standard way; checking for changes in Subversion, updating the local workspace, building, testing, deploying, etc. This automation takes away the tedious, repetitive tasks that a developer would otherwise have to do themselves. It also means that these tasks can be done in a controlled environment on the build server.</p>
<p>One particular piece of the puzzle is still missing, though. That&#8217;s the <strong>creation of a Build entity in TargetProcess</strong> upon successful deployment to our shared development server. Having this task automated will ensure that for every version of the product that is deployed to our shared environment, there is also a corresponding Build in Target Process &#8211; allowing any bugs to be logged against the correct build. This has the knock-on effect of adding a lot more value to the quality reports that are delivered with TargetProcess&#8230; effectively allowing me to monitor the bug trend across a number of builds.</p>
<p>To solve this problem, I&#8217;ve created a <a href="http://maven.apache.org" target="_blank"><strong>Maven</strong></a> plugin for this exact purpose. This has been hosted on <strong><a href="http://code.google.com" target="_blank">Google Code</a></strong> so anyone can suggest changes or participate in the project. I&#8217;m busy working on the first release, and will make this available on the central Maven repository as soon as it&#8217;s ready. In the meantime, if you have any interest in this, it would be great to hear your ideas. At the moment, my primary goal is to get the Build creation mojo complete &#8211; but I&#8217;ll then add other functionality if it seems suitable and there is interest.</p>
<p>You can have a look at the project here if you&#8217;re interested: <a href="https://code.google.com/p/maven-targetprocess-plugin/" target="_blank">https://code.google.com/p/maven-targetprocess-plugin/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.g3it.com/blog/technical/java/maven-plugin-for-creating-a-targetprocess-build/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Assessing the Single Responsibility Principle with LCOM4 with Sonar 2.0</title>
		<link>http://www.g3it.com/blog/technical/java/assessing-the-single-responsibility-principle-with-lcom4-and-sonar-2-0/</link>
		<comments>http://www.g3it.com/blog/technical/java/assessing-the-single-responsibility-principle-with-lcom4-and-sonar-2-0/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 15:57:22 +0000</pubDate>
		<dc:creator>Stuart Gunter</dc:creator>
				<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.g3it.com/?p=806</guid>
		<description><![CDATA[A while ago I mentioned that I&#8217;d set up Sonar as part of our continuous integration system here at G3. Every time I use it, I&#8217;m amazed at what a fantastic system it is. It&#8217;s incredible that such a seemingly small piece of software can be of such great value! One of my biggest combined [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago I mentioned that I&#8217;d set up <a href="http://sonar.codehaus.org" target="_blank"><strong>Sonar</strong></a> as part of our continuous integration system here at G3. Every time I use it, I&#8217;m amazed at what a fantastic system it is. It&#8217;s incredible that such a seemingly small piece of software can be of such great value!</p>
<p>One of my biggest combined strengths/weaknesses is that I&#8217;m a perfectionist in my work. This works to my advantage in that I simply refuse to deliver bad quality work – but it also works to my disadvantage in that I sometimes fix things that aren&#8217;t broken. Don&#8217;t get me wrong here – I&#8217;m very much in favour of <a href="http://www.refactoring.com/" target="_blank"><strong>refactoring</strong></a>. I&#8217;m just conscious of identifying when refactoring has degenerated into needless changes without adding any real value.</p>
<p>So how does this tie into Sonar 2.0, you ask? Well, I&#8217;ve recently upgraded to the latest version and was looking into the cool new features it brings – in particular, the <strong>LCOM4</strong> measures. This is excellent when used appropriately, but can also be the cause of the dangerous “refactoring” mentioned before.</p>
<p>For those of you who aren&#8217;t familiar with LCOM4, here&#8217;s the simple definition (as quoted from the <a href="http://docs.codehaus.org/display/SONAR/Metric+definitions" target="_blank">Sonar Metric Definitions</a> page):</p>
<blockquote><p><em>LCOM4 measures the number of &#8220;connected components&#8221; in a class. A connected component is a set of related methods and fields. There should be only one such component in each class. If there are 2 or more components, the class should be split into so many smaller classes.</em></p></blockquote>
<p>This is a great measure of the complexity of your code. Simply put, it helps you identify when your classes fail to meet the <a href="http://en.wikipedia.org/wiki/Single_responsibility_principle" target="_blank"><strong>Single Responsibility Principle</strong></a> (or are heading in that direction). Well – at least, that&#8217;s the basic idea. The problem comes in when you take the definition as gospel and forget that you need to do some interpretation of the metric yourself.</p>
<p>By ignoring the rule altogether, you run the risk of developing a product that grows in complexity and therefore becomes harder to maintain, troubleshoot, extend, etc. But by accepting the rule without question, you run the risk of adding complexity to an already decent design. You need to find the middle ground for your own situation.</p>
<p>To put this into a real world example, consider the <strong>design patterns</strong> that we all use in our software designs - in particular, the <a href="http://en.wikipedia.org/wiki/Abstract_factory_pattern" target="_blank"><strong>Abstract Factory</strong></a> pattern. When analysed according to LCOM4 rules, the Abstract Factory is likely to be a high scorer. I&#8217;ve seen this in one of the Abstract Factories in one of my own projects, but I&#8217;m not about to go changing my design or implementation to reduce the LCOM4 score for this particular class just yet. That&#8217;s not to say it can&#8217;t be improved – I just need to be clear about how reducing the LCOM4 score is going to improve my code. After all, the metrics attempt to expose problems that should be addressed in the design process in order to produce better code – not the code designed to make better metrics. While this process is cyclical to an extent&#8230; <span style="text-decoration: underline;">the desired outcome should be better code, not necessarily better metrics</span>.</p>
<p>Of course, there are good ways of reducing the LCOM4 score of an Abstract Factory through refactoring, but my point is that you must <strong>intelligently assess what the problem is</strong> and how to solve it before simply diving in and making changes.</p>
<p>Having seen the benefits of static code analysis performed regularly as part of a continuous integration process, I will never go back. Sonar is an amazing product, and I definitely recommend looking into it if you&#8217;re not already using it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.g3it.com/blog/technical/java/assessing-the-single-responsibility-principle-with-lcom4-and-sonar-2-0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Book Reviews: UML Distilled and Sun Certified Enterprise Architect Study Guide</title>
		<link>http://www.g3it.com/blog/technical/book-reviews-uml-distilled-and-sun-certified-enterprise-architect-study-guide/</link>
		<comments>http://www.g3it.com/blog/technical/book-reviews-uml-distilled-and-sun-certified-enterprise-architect-study-guide/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 16:28:00 +0000</pubDate>
		<dc:creator>Stuart Gunter</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.g3it.com/?p=709</guid>
		<description><![CDATA[One of my personal goals for 2010 is to do more reading – specifically related to software development, design and architecture. So far everything’s going pretty well! The plan actually started in December with Martin Fowler’s UML Distilled, which I found to be an excellent introduction to UML 2. January followed with Professional Apache Tomcat [...]]]></description>
			<content:encoded><![CDATA[<p>One of my personal goals for 2010 is to do more reading – specifically related to software development, design and architecture. So far everything’s going pretty well!</p>
<p>The plan actually started in December with Martin Fowler’s <em><a href="http://www.amazon.co.uk/UML-Distilled-Standard-Addison-Wesley-Technology/dp/0321193687/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1265386511&amp;sr=8-1" target="_blank">UML Distilled</a></em>, which I found to be an excellent introduction to <a href="http://www.uml.org/" target="_blank">UML 2</a>. January followed with <em><a href="http://www.amazon.co.uk/Professional-Apache-Tomcat-WROX-Guides/dp/0471753610/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1265386543&amp;sr=1-1" target="_blank">Professional Apache Tomcat 6</a></em> – which I’m admittedly still busy reading, although over half-way through. February then continued with <em><a href="http://www.amazon.co.uk/Certified-Enterprise-Architect-J2EE-Technology/dp/0130449164/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1265386562&amp;sr=1-1" target="_blank">Sun Certified Enterprise Architect for J2EE Technology Study Guide</a></em> (the book is actually shorter than the title though), which I have just finished reading.</p>
<p><strong>UML Distilled<br />
</strong>I’ve always been a big fan of Martin Fowler’s books. He has an excellent writing style that makes the content easily understandable, and he gets to the point clearly and succinctly. <em><a href="http://www.amazon.co.uk/UML-Distilled-Standard-Addison-Wesley-Technology/dp/0321193687/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1265386511&amp;sr=8-1" target="_blank">UML Distilled</a></em> is a brilliant introduction to UML 2 and goes into a reasonable level of detail for the most commonly used diagrams. Some of the less frequently used diagrams are also covered, but in only enough detail to give the reader a basic understanding of their purpose.</p>
<p>Fowler seems to approach UML, and pretty much everything else software-related, in a very pragmatic way. He clearly advocates the use of UML, but in a way that works for you in your environment. Every company is different, as is every project – and as such, your usage of the tools should reflect this. Although do bear in mind that if you deviate too far, you eventually get to the point where you’re not using a modified version of UML anymore – you’re using a custom language inspired by UML. This can be a bigger difference than it sounds!</p>
<p>I really enjoyed reading this book – and we now have two copies in the office so there’s no waiting time for anyone else that wants to read them. Highly recommended!!</p>
<p><strong>Sun Certified Enterprise Architect Study Guide<br />
</strong>I’ve just finished reading this book today. Well, I’ve read everything except the last chapter – but that’s preparation for the assignment part of the certification, which I’m not doing just yet. The first 7 chapters are intended as preparation for the <a href="http://www.sun.com/training/certification/java/scea.xml" target="_blank">SCEA Certification</a> Exam (Part 1 of 3) and provide a very good high-level overview of a number of topics, all of which are very relevant to modern software development.</p>
<p>Admittedly, the section on EJB was still based on the old version – referring to home &amp; remote interfaces, rather than annotations – but this could’ve easily been my fault in not properly reading the book overview on Amazon before buying it. That said, the explanation was still good and the rest of the book is very interesting.</p>
<p>I particularly like the fact that each chapter starts with a prerequisites section, which clearly establishes the knowledge you are assumed to have before continuing. This is very useful for professionals that have been involved in software development for many years and have a good understanding of the issues that affect it – which is exactly the target market for the certification itself.</p>
<p>It is a true study guide, in that everything is in summary form and assumes the reader already has more in-depth knowledge of the individual subjects, where required. This is not a course book designed to teach you everything – but you’re probably not ready for this certification if you don’t already have the in-depth knowledge anyway, whether by hands-on experience or otherwise.</p>
<p>Overall, I found this a very interesting read, and definitely worth the few hours it took to get through it – it’s only about 200 pages. Also highly recommended – although I haven’t taken the exam yet, so can’t vouch for how close it matches the exam content. Look out for the <a href="http://www.amazon.co.uk/Certified-Enterprise-Architect-Study-Guide/dp/0131482033/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1265387081&amp;sr=1-1" target="_blank">new edition</a> being released within the next month!</p>
<p><strong>LinkedIn Amazon Reading List and our Company Library<br />
</strong>In the last few months, I’ve started using the Amazon Reading List in <a href="http://www.linkedin.com" target="_blank">LinkedIn</a>. It’s a very useful app that allows you to tell everyone what you’re reading, and recommend books once you’ve read them. I’m already following two other reading lists of <a href="http://uk.linkedin.com/in/drewpreston" target="_blank">current</a> &amp; <a href="http://uk.linkedin.com/in/kevinpotgieter" target="_blank">past</a> colleagues, which gives me some interesting ideas of books that I may want to read in the coming months. I’d highly recommend that you participate in this, or perhaps some other shared list that you have access to within your company.</p>
<p>We’ve also set up a company library, which hopefully encourages people to read more and share what they’ve read with co-workers. The library is relatively small at the moment, but it is growing fast and we now have a somewhat regular order of new books to stock up the shelves.</p>
<p><strong>Next up&#8230;<br />
</strong>So, now that I’ve finished those books&#8230; what’s next?</p>
<p>In parallel, I’m starting on these two excellent books – both of which I’ve read before, but I honestly believe they are worth reading every few years!</p>
<p><em><a href="http://www.amazon.co.uk/Design-patterns-elements-reusable-object-oriented/dp/0201633612/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1265386801&amp;sr=8-1" target="_blank">Design Patterns: Elements of Reusable Object-Oriented Software</a></em><br />
<em><a href="http://www.amazon.co.uk/Core-J2EE-Patterns-Practices-Strategies/dp/0131422464/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1265386818&amp;sr=1-1" target="_blank">Core J2EE Patterns: Best Practices and Design Strategies</a></em></p>
<p>What are you reading? Got any suggestions that I can add to my “to-read” list?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.g3it.com/blog/technical/book-reviews-uml-distilled-and-sun-certified-enterprise-architect-study-guide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Which version of NetWeaver am I running?</title>
		<link>http://www.g3it.com/blog/technical/which-version-of-netweaver-am-i-running/</link>
		<comments>http://www.g3it.com/blog/technical/which-version-of-netweaver-am-i-running/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 15:43:54 +0000</pubDate>
		<dc:creator>Stuart Gunter</dc:creator>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[SAP NetWeaver]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://www.g3it.com/?p=589</guid>
		<description><![CDATA[I&#8217;ve seen this question asked a few times, so I thought I&#8217;d try put together a basic step-by-step guide on how to check which version of NetWeaver you&#8217;re running. Performing this check on an ABAP system and a Java system is obviously very different. In an ABAP system, you will look for the version information [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve seen this question asked a few times, so I thought I&#8217;d try put together a basic step-by-step guide on how to check which <strong>version of NetWeaver</strong> you&#8217;re running.</p>
<p>Performing this check on an <strong>ABAP system</strong> and a <strong>Java system</strong> is obviously very different. In an ABAP system, you will look for the version information within SAPGUI. However, a Java system provides a web interface for all administrative functions.</p>
<h3>Using SAPGUI to check the version of NetWeaver (ABAP Application Server)</h3>
<ol>
<li>Log on to the system using SAPGUI</li>
<li>On the main menu, choose System &gt; Status&#8230;</li>
<li>In the &#8220;System: Status&#8221; dialog that opens you&#8217;ll see a section in the middle-right called &#8220;SAP System data&#8221;. Click the icon next to &#8220;Component version&#8221; to show details of all the components installed on your system</li>
<li>The component you need to look for is called &#8220;SAP_BASIS&#8221; and is usually at the top of the list.</li>
</ol>
<p><strong>Release</strong> is used to identify the major release of NetWeaver, and <strong>Level</strong> is used to identify the support pack installed. The list below illustrates how to interpret the values in these fields:</p>
<table border="0" width="100%">
<tbody>
<tr>
<td><strong>Release</strong></td>
<td><strong>Level</strong></td>
<td><strong>In plain English?</strong></td>
</tr>
<tr>
<td>640</td>
<td>0000</td>
<td>You&#8217;re running NetWeaver 2004 (formerly NetWeaver 6.40) with no Support Packs</td>
</tr>
<tr>
<td>640</td>
<td>0019</td>
<td>You&#8217;re running NetWeaver 2004 (formerly NetWeaver 6.40) with Support Pack 19</td>
</tr>
<tr>
<td>700</td>
<td>0001</td>
<td>You&#8217;re running NetWeaver 7.0 (formerly NetWeaver 2004s) with Support Pack 1</td>
</tr>
<tr>
<td>701</td>
<td>0003</td>
<td>You&#8217;re running NetWeaver 7.0 (formerly NetWeaver 2004s) with Enhancement Package 1 and Support Pack 3</td>
</tr>
</tbody>
</table>
<h3>Using a web browser to check the version of NetWeaver (Java Application Server)</h3>
<p>Before you start: To access the URL below, you will need administrator privileges on the SAP system in question.</p>
<ol>
<li>Using your web browser, go to the following URL &#8211; http://&lt;hostname&gt;:&lt;portnumber&gt;/sap/monitoring/SystemInfo<br />
Be sure you replace your hostname and port number with the correct values. The port number (if unchanged from the default) will be 5XX00, where XX is the SAP system number.</li>
<li>Look for the section called <strong>Software Components</strong>. This will list the main components used to determine which version you&#8217;re running. You&#8217;ll most likely see entries for &#8220;sap.com/SERVERCORE&#8221; and &#8220;sap.com/J2EE-FRMW&#8221;, and their associated versions. You can click on the All Components link if you want to see more details.</li>
</ol>
<p>In the <strong>Version</strong> field, you&#8217;re likely to see something like this &#8220;7.11 SP1 (1000.7.11.1.0.20081122210100)&#8221;. The key info here is quite clearly the first part, where it has identified the version as NetWeaver 7.1 with Enhancement Package 1 and Support Pack 1.</p>
<p>In case it hasn&#8217;t already become obvious, the last number in the Release / Version identifies the Enhancement Package &#8211; e.g.<br />
701 = 7.0 Enhancement Package 1<br />
711 = 7.1 Enhancement Package 1</p>
<p>I&#8217;ve mentioned the term <strong>Enhancement Package</strong> in the list above, which is still quite foreign to most SAP users &#8211; largely due to the fact that the majority of SAP installations are not yet up to NetWeaver 7.0, which is the minimum version required to support this feature. I found the following article which explains what Enhancement Packages are, and would strongly recommend that this be added to your list of &#8220;must read&#8221; articles: <a href="http://saplab.org/2011/01/must-know-about-enhancement-packages/">http://saplab.org/2011/01/must-know-about-enhancement-packages/</a></p>
<p>There is a lot of content available on the <strong>Enhancement Framework</strong> and the <strong>Switch Framework</strong>, which are both available since NetWeaver 7.0. These are both important for the technical team to understand before migrating to NetWeaver 7.0. If you&#8217;re an ABAP developer&#8230; this is perhaps the most key new feature that you need to understand! It&#8217;s a very simple concept, but also very important to ABAP development (unless you&#8217;re only writing very basic programs) and equally important when implementing Industry Solutions, as these are all built using the Enhancement Framework and activated using the Switch Framework. If time allows, which it seldom does these days, I will try post more information on these two topics in the future.</p>
<p>I hope this has helped you find the information you were looking for. And as usual&#8230; if you notice anything above that looks incorrect, please let me know so I can correct it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.g3it.com/blog/technical/which-version-of-netweaver-am-i-running/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

