tag:blogger.com,1999:blog-24497784163894906792024-03-21T20:14:10.399-07:00zoe's blogZoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.comBlogger41125tag:blogger.com,1999:blog-2449778416389490679.post-48592095537987354102011-04-14T05:10:00.000-07:002011-04-14T05:10:46.596-07:00JAX London April 2011JAX London was a great conference. The venue was better than before and they have refined the speaker selection to suit the target London audience. There were many good talks, these were the highlights:<br />
<br />
Dan North, keynote talk on the Agile day was totally absorbing. I think we are at the stage where 'Agile' is the norm for good development teams; when IBM's RTC has good support for Agile that means it's mainstream :-). So, it's time to look beyond Agile - Dan talked about patterns that he observed in 'insanely productive' teams. I particularly liked 'Fits in my Head' - keeping design small or modular enough so that you can reason about the whole thing. I also liked his observation that OSGi <b>done well</b> is 'fantastic in this space'. <br />
<br />
In the past I always wanted to go to Ted Neward's talks but somehow they always seemed to conflict with something else I had to do. So this time I went to the 'Busy Developers Guide to Scala' and the 'Busy Developers Guide to Gamification'. The Scala talk was perfect for me as I know nothing about Scala, the gamification one was a mystery. The thesis was that you can make work more fun by making it like playing games somehow. It may work if you like game playing but as a game-hating manual-reader it made no sense to me. However - looking round the room I think I may have been the only person that wasn't buying the idea.<br />
<br />
Holly and Valentin (from the Apache Aries project) did a good review of the range of freely available OSGi tooling - the PAX stuff is particularly interesting. I also enjoyed Richard Nicholson's (Paremus) talk - 'Modularity meets the Cloud'. Paremus are doing really interesting leading edge work, leading edge in the sense that they are getting to and solving problems before most of us realise they are problems. Well worth having a look at their products if you are serious about OSGi. Neil Bartlett's OSGi live coding challenge was great too - a bit scary in places - but absolutely the best one of these that I've seen done for OSGi.<br />
<br />
Chris Aniszczyk gave a beautifully constructed talk and demonstrated seamless integration of Git, Mylyn, Eclipse and Hudson (Jenkins or whatever).<br />
<br />
Finally - Martijn Verburg gave the only talk on Java at JAX. Nice introduction to Java 7 - there are some pretty compelling new features, not headline stuff, but things that will make Java code smaller and tidier. For example being able to have strings in case, separate long numbers with underscores, better file IO features. Not exciting maybe but <b>so</b> important. Great to see the Java language catching up with PHP in terms of usability :-).<br />
<br />
<br />
I hope JAX maintain this standard, I talked to many attendees in the breaks and everyone I spoke was both enjoying the conference and deriving value from it. Well done to the JAX team - keep it up!Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com1tag:blogger.com,1999:blog-2449778416389490679.post-35674975652161000302010-12-13T03:16:00.000-08:002011-03-03T08:11:59.063-08:00Remote servicesRecently I experimented with OSGi remote services using Apache Aries (blueprint services) with either Apache Tuscany or Apache CXF to provide the remoting capability. <br />
<br />
I was trying to find the simplest and most flexible way to do this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH48Biivq4kckH2mAUoDk7kD-blKeRC8xOWv5zlukYY6NfQGfyCHQ8ImIfmPMLeuF8aXR_WO3dlN6eyorQMgqR7NKzCnMmX-clxPhW25gzChXiOOqcGfiD1i5V99Hh2uA6_AcuM64th6zF/s1600/wsdl.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="116" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH48Biivq4kckH2mAUoDk7kD-blKeRC8xOWv5zlukYY6NfQGfyCHQ8ImIfmPMLeuF8aXR_WO3dlN6eyorQMgqR7NKzCnMmX-clxPhW25gzChXiOOqcGfiD1i5V99Hh2uA6_AcuM64th6zF/s400/wsdl.png" width="400" /></a></div><br />
There are two OSGi runtimes (R1 and R2), a bundle in R1 is using a service supplied by a bundle in R2.<br />
<br />
For those of you who don't want to do a lot of reading the short summary is:<br />
<ul><li> The <b>simplest</b> way to do this is Apache CXF</li>
<li>The <b>most flexible</b> way to do this is to use Apache Tuscany</li>
</ul>Let's start with a few words about CXF. The part you need to do this is <a href="http://cxf.apache.org/distributed-osgi.html">Distributed OSGi </a>. There are very good samples with the project and I only encountered two issues with achieving what I wanted to. The first of these is that the multi-bundle distribution doesn't run on <a href="https://issues.apache.org/jira/browse/DOSGI-83">Equinox</a> so you have to use the single bundle distribution or use Felix. I elected to use the single bundle distribution on Equinox.<br />
The second issue was that I had a web bundle in one framework and had some problems with conflicts on http port which I didn't properly resolve. I found that I could work around them by configuring the http port to anything except 8080, for example:<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">org.osgi.service.http.port=6969</div><br />
in the Equinox config.ini file. If you are trying to debug an application which uses CXF it is also worth understanding that the consumer runtime (R1) registers a proxy service based on the WSDL produced from the provider (R2) runtime - this proxy service is not registered <b>until</b> something in R1 tries to use it.<br />
<br />
Apache Tuscany provides the same functionality as CXF and a lot more besides. I wanted to use Tuscany because I want to get onto the other things I can do with it later, for example Tuscany supports other component models (eg EJB) and other bindings (JMS, JCA, json-rpc and so on). I used a sample banking application (developed by Graham Charters <i>et al</i>. for the <a href="http://www.osgi.org/CommunityEvent2010/Speakers">2010 OSGi Community Event</a>), the code for the application and all of the SCA configuration is checked in <a href="https://svn.apache.org/repos/asf/incubator/aries/trunk/samples-sandbox/bank/">here</a>. The application had already been run on IBM's WebSphere Application Server so all I had to do was figure out how to do it on a pure open source stack. How hard could it be?<br />
The application itself and the SCA configuration are both very simple. The picture below shows the relationships between bundles and how the bundles are distributed between OSGi runtimes. The API bundle is, of course, installed in both runtimes.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX1-80hQOXP4r7DmxBQvWAM7vYEixmJXSE4Ewt5eTNaBRlkadUavdIUKXKM_U3dtApG01jpjX5tUTioFIfnRo-Daai9aH0QISAEO_z1jBkyAs2JB-LfmvOQkFCXvn2P30ShqmpheQBwkAl/s1600/BankApp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="288" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX1-80hQOXP4r7DmxBQvWAM7vYEixmJXSE4Ewt5eTNaBRlkadUavdIUKXKM_U3dtApG01jpjX5tUTioFIfnRo-Daai9aH0QISAEO_z1jBkyAs2JB-LfmvOQkFCXvn2P30ShqmpheQBwkAl/s400/BankApp.png" width="400" /></a></div><br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div><br />
As usual with Apache Aries samples, I have tried to make it as simple as possible to run. If you want to run this sample you will currently (it is not released) need to check out and <a href="http://incubator.apache.org/aries/buildingaries.html">build Aries</a>, then from the ~/samples-sandbox/bank directory just use 'mvn clean install' to build the sample.<br />
<br />
<br />
To run the sample, change directory to bank-assembly/target and run:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">sh runclient.sh</span> - to start the client runtime (Runtime 1)<br />
<span style="font-family: "Courier New",Courier,monospace;">sh runserver.sh</span> - to start the server runtime (Runtime 2)<br />
<br />
(apologies - I don't have equivalent .bat files)<br />
<br />
You can check that the server is producing WSDL by navigating to:<br />
<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">http://localhost:8081/creditcheck?wsdl</div><div style="font-family: "Courier New",Courier,monospace;">http://localhost:8081/lineofcredit?wsdl</div><div style="font-family: "Courier New",Courier,monospace;">http://localhost:8081/chequing?wsdl</div><br />
<br />
And that the client is running navigating to:<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">http://127.0.0.1:9090/bank/index.html</div><br />
That all looks wonderfully simple - and it is. So why did I imply this was hard?<br />
<br />
Tuscany is a big project and I just wanted to use a bit of it - all of the difficulties I had were connected with putting together an OSGi Tuscany runtime that had what I needed. Of course, if I had used a commercial application server (like IBM's WAS) someone would have done all this for me and there would have been no pain at all.<br />
<br />
If you look at the bank-assembly/pom.xml you will see that I am actually downloading an entire Tuscany distro, unpacking it and then using the Equinox config file to pull in the bundles that I need for the OSGi runtime.<br />
Finding the correct bundles would have been very difficult without the help of the Tuscany team - they told me what I'd need.<br />
<br />
This solution is far from ideal. A slightly better solution would be to specify the list of bundles that I need in the pom.xml and have Maven get them for me as we do in all the other Aries samples. The reason that I can't do this is that Tuscany found that many of the OSGi bundles they wanted didn't exist or were badly put together - so they have fixed them - which is great! But they have fixed them in the Tuscany distro only - which is slightly less great from the point of view of a consumer. It would have been nice if they had followed the <a href="http://repo2.maven.org/maven2/org/apache/servicemix/bundles/">ServiceMix</a> model and simply made the fixed bundles available.<br />
<br />
The best solution (which we don't have at all yet) would be to have a proper bundle repository somewhere and use a resolver to go to it and get the OSGi bundles I needed - whatever they might be. One day there will be such a repository - but it's going to take some effort to build :-) Until then hacking-it-up is the only way.<br />
<br />
The other thing that I hope will happen sometime soon is for Apache Tuscany to be able to work with the recently implemented Aries Application model. As it stands, I don't use the Aries Application model in the Bank sample, it is just a set of OSGi bundles. <br />
<br />
In summary, I like Tuscany and I'll go on to try and use other bindings with OSGi applications. The fact that it wasn't easy to pull together the right OSGi platform says more about where we are with OSGi today than about Tuscany. For wide scale enterprise OSGi adoption to happen we need a bundle repository. Tuscany have implemented a workaround (which I don't like), ServiceMix have implemented a work around which is much better - but the right answer is a bundle repository and as soon as possible, yesterday even.Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-8880172605492482802010-11-30T05:06:00.000-08:002010-11-30T05:06:29.564-08:00Oracle meet IBM at the LJCOpenConferenceThe LJC Open Conference last Saturday was the best! We had 75 people and a packed agenda with talks ranging from the "Java Roadmap" through to "The Diabolical Developer". Martijn Verburg, captured below, was the diabolical developer:<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUIMzrKW3aCOsFpS3XoctNnHIGeuTFJol7cgjHxHb7-If9DXNAXvB-hiaVZPg6OXPEKrYrUbAueheyYoDcWaIdPBcewas1WmoM-WciWxdZyHkKmGX0HeouRnQizySoF2-dSyeSaa1Gb3iE/s1600/Diabolical.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUIMzrKW3aCOsFpS3XoctNnHIGeuTFJol7cgjHxHb7-If9DXNAXvB-hiaVZPg6OXPEKrYrUbAueheyYoDcWaIdPBcewas1WmoM-WciWxdZyHkKmGX0HeouRnQizySoF2-dSyeSaa1Gb3iE/s320/Diabolical.jpg" width="207" /></a></div><br />
And he was, in fact, awesome...and very diabolical. <br />
<br />
Steve Elliot from Oracle and Steve Poole IBM answered questions on their future together in Java:<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCnLzVA0by5uWexrF6Wqig_lL4JJ855I49KPPHiDkuVJ4dEU4tRpPFgslIHgK-2zXTKmTn03LlXXlrfZhK2TAJSEAYqo0cDHO7HHTTG8M39sa59FOjG_DmuOv0nOEgCpoDLmf5DPHGszJv/s1600/panel.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="239" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCnLzVA0by5uWexrF6Wqig_lL4JJ855I49KPPHiDkuVJ4dEU4tRpPFgslIHgK-2zXTKmTn03LlXXlrfZhK2TAJSEAYqo0cDHO7HHTTG8M39sa59FOjG_DmuOv0nOEgCpoDLmf5DPHGszJv/s320/panel.JPG" width="320" /></a></div><br />
It's still early days and the LJC organisers clearly thought it was prudent to separate the Steves with Martijn and Ben - although I'm not sure if they were worried about them getting too friendly or the reverse. Nice touch to have coordinated the names though - if you want become a contribute to the OpenJDK being called 'Steve' looks like a good first step.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL4tyBzXdtb3F3ahJAxDHv04TXQUWHu6o6D6Wiq28hTuJ9q2nthMhRQqbMj1ztYu8lbnUKktKWtJ_6pRNxrFVjoCG5uCVfslNuo6kgJfUH0tJuSNs34PFMV3idXrs-WpSkeceMntgh1GE0/s1600/ZSOnTable.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div>Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-72103621311724013672010-11-10T03:35:00.000-08:002010-11-10T03:35:04.870-08:00Igor - have you watered the brains today, Igor?In his keynote at ApacheCon 2010, <a href="http://www.zdnet.com/blog/open-source/apache-knights-at-round-tables/7716">Dana Blankenhorn</a> noticed 'middle aged men dressed like college students' and then went on to liken us to the Knights of the Round Table.<br />
<br />
I won't dispute the Camelot analogy - but I do want to take issue with 'middle aged men'. Middled aged is probably justifiable on average but it ignores the fact that there were a reasonable percentage of both old and young - and - no kidding - some of us are even female.<br />
<br />
The youth were brought in by a wonderful organisation that I knew little about till earlier year - the <a href="http://www.apache.org/travel/">Apache TAC</a> . The TAC enables great programmers early in their career who are unlikely to be able to get employers to sponsor their travel and even more unlikely to be able to pay for themselves get a chance to come along and participate. This is great for them but it's also very necessary for the future of the ASF a good dose of wild youth counters the tendency of these organisations to turn crumbly and nostalgic.<br />
<br />
After the conference a few of us (including Igor of the blog title) had to hang out in Atlanta for the weekend and ended up in <a href="http://www.blindwilliesblues.com/">Blind Willies</a>, Atlanta's finest blues bar. We, Igor and I, danced till the early hours to the music of House Rocker Johnson. So in future I would like to suggest another question on the TAC form:<br />
<ul><li> Are you prepared to dance like nobody is watching?</li>
</ul>Anyone who can't commit (without a reasonable excuse) should be consigned to the 'encroaching middle age bucket' and discarded. <br />
<br />
By the way - for those of you who are almost certainly too young to recognise it - the title quote is a reference to '<a href="http://www.youtube.com/watch?v=Sa1i375FuGw">The Monster Mash</a>' from the 1969 Bonzo Dog album 'Tadpoles'. I like the idea that younger delegates might inject a bit of life into the proceedings and don't intend to extend the analogy any further than that :-)Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-21827006071973885152010-11-10T01:25:00.000-08:002010-11-10T01:25:52.463-08:00ApacheCon AtlantaSo that was my first ApacheCon - if you don't count the one in Dublin at which I drank far too much Guiness and decided on a career change which took me on a slightly circuitous route through PHP and back to Apache again.<br />
<br />
It was a pretty amazing conference all round - great to meet Lin Sun, Jarek Gawor, Kevan Miller and others from IBM. Also great to meet new Apache people - and catch up with the ones I already knew.<br />
<br />
AWESOME that IBM is a gold sponsor of the ASF - well done whoever made that happen!<br />
<br />
As usual I learned a lot about technology - Kevan had a nice slide explaining which other Apache projects are used in Geronimo - I had no idea. I do like this philosophy - no need to re-invent wheels when there are Apache projects which provide spokes, hubs, rims and tyres.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-gSSDW8UWq6Ni8m9ewbFEH9vtUlk712G_NX7Sl__XR70DiM8ug_4UVeFKV6sSfrSmVann_N4vojusg5M7Tu8-I6n8NqabOm7AnN-ARFQxZjpXDGzfKhbyUT5gIsMVq0UBTYJ_PQzTX_FF/s1600/Geronimo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="206" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-gSSDW8UWq6Ni8m9ewbFEH9vtUlk712G_NX7Sl__XR70DiM8ug_4UVeFKV6sSfrSmVann_N4vojusg5M7Tu8-I6n8NqabOm7AnN-ARFQxZjpXDGzfKhbyUT5gIsMVq0UBTYJ_PQzTX_FF/s320/Geronimo.png" width="320" /></a></div>Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-80850585253642662010-10-29T05:43:00.000-07:002010-10-29T05:43:48.029-07:00Send your developers to JAX!Last month I, and a number of developers from IBM's Hursley labs, went to <a href="http://jaxlondon.com/">JAX London</a>; I'm delighted to say that we were a gold sponsor this year. I was going to write about the conference before but sadly I didn't get to see (m)any of the sessions because I was responsible for the IBM demo area and spent most of my time talking to people about what IBM does with <a href="http://www.ibm.com/software/websphere/osgi">OSGi</a>. <br />
<br />
In between talking to people, my view of the conference was mainly looking at the other sponsor's stands. So, here are some observations based on what I saw:<br />
<br />
<ol><li>This is a great UK conference to sponsor if you want to reach Java developers.</li>
<li>The busiest stands were the ones that had tools demos and/or were able to sell interesting stories about work that they were involved in - or they were hiring :-)</li>
</ol>If you are going to sponsor a developer conference, which I strongly recommend, send your developers to run the stand....or at least your tech sales people. Don't send the salesmen. Seriously, no-one will walk away from this conference with a bunch of orders - you won't close a sale here. The aim is inspire people with a vision of how working with you and your products will make their life easier, more profitable and more fun (in a tech sort of way) - that message <b>will</b> get back to the people with hard cash. Trust me.<br />
<br />
Here's my favourite image from the conference - taken at about 19:00 by a slightly wobbly photographer - I have appropriated the Microsft stand - which was looking a little lonely. <br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5l7F7ppR7zyZc6uRswrkajP-GNJuf76HrkyWFinmRu66nYWSfjVwbNgdDs1he-C6vd5UBgWyTt8fI34VtUbKH-o8pQ-kFHUov7lFEHuUO__-8EEhOOcL9j2vOJ5-XRZo_AMrWOtzkecZz/s1600/LateAtJAX.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="263" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5l7F7ppR7zyZc6uRswrkajP-GNJuf76HrkyWFinmRu66nYWSfjVwbNgdDs1he-C6vd5UBgWyTt8fI34VtUbKH-o8pQ-kFHUov7lFEHuUO__-8EEhOOcL9j2vOJ5-XRZo_AMrWOtzkecZz/s320/LateAtJAX.jpg" width="320" /></a></div><br />
By the way, I am a recovering Windows user - I've been free for nearly three years now, so it took me several beers to get this close....Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-29960563605741433162010-10-20T06:41:00.000-07:002010-10-20T06:41:24.500-07:00Testing bundles with PAX ExamFor integration testing OSGi bundles there is pretty much only one option - it's <a href="http://wiki.ops4j.org/display/paxexam/Pax+Exam">PAX Exam</a>. This week, as part of preparing a talk for <a href="http://na.apachecon.com/c/acna2010/sessions/549">ApacheCon</a> I decided I wanted to have a simple 'HelloWorld' test showing the use of PAX Exam. It was all pretty straightforward - except for one thing that took hours to resolve - I thought the one thing might be worth mentioning.<br />
<br />
I use Maven to build with, the application I was trying to write a test for was a stand alone version of this <a href="https://svn.apache.org/repos/asf/incubator/aries/trunk/samples/blueprint/helloworld/">OSGi Blueprint Hello World</a> sample. The application is pretty trivial and so is the test case. I used Craig Walls' <a href="http://java.dzone.com/articles/putting-osgi-test-pax-exam">tutorial</a> to get me started.<br />
<br />
<br />
So, what was the problem? This was what happened when I ran 'mvn install' in my test project in an attempt to run my test case:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8ibm72IukUmcp6CUppl-Vm9BrqxrLBLBZU17cEO9in9Eq7NPr6lwbKsdZawVWQmVCrozqSYpWJSTzxWaHELJz3R634reMUpaxO38-Gm5Xv0WCIZwxFFWyH-2aYb5YDsBdaSAfh43CcRT3/s1600/PAXFail.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="83" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8ibm72IukUmcp6CUppl-Vm9BrqxrLBLBZU17cEO9in9Eq7NPr6lwbKsdZawVWQmVCrozqSYpWJSTzxWaHELJz3R634reMUpaxO38-Gm5Xv0WCIZwxFFWyH-2aYb5YDsBdaSAfh43CcRT3/s400/PAXFail.png" width="400" /></a></div><br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div><br />
<br />
I had no idea why anything was looking for com/sun/jdmk/jmxtools/1.2.1/jmxtools-1.2.1.jar, it certainly wasn't something I'd specified as a dependency in the project pom. Eventually, after much searching around, I looked at the <a href="https://svn.apache.org/repos/asf/incubator/aries/trunk/parent/default-parent/pom.xml">Apache Aries default-parent pom</a> and noted that some 'exclusions' had been added to the pax-logging section. I copied the same exclusions into my test project's pom and everything just worked. The relevant sections of the pom are highlighted below:<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSSuA0WHx5fQzhY4yjD65vb9KNHFRCHsiTh-Qx_0_IvyK8aH0v122cDiOfNp47l26s0qGeD8yZuozjM5YsTfXWrLRgJ3ENQNPE8H9__bcVgoEvBzxx9YxVYQ0_q3-UurdJ35bWzj8WXwwS/s1600/PAXFix.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="323" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSSuA0WHx5fQzhY4yjD65vb9KNHFRCHsiTh-Qx_0_IvyK8aH0v122cDiOfNp47l26s0qGeD8yZuozjM5YsTfXWrLRgJ3ENQNPE8H9__bcVgoEvBzxx9YxVYQ0_q3-UurdJ35bWzj8WXwwS/s400/PAXFix.png" width="400" /></a></div><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Hope this helps - apart from that small problem I really like PAX Exam :-)Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-52717253787440828482010-09-22T13:21:00.000-07:002010-09-22T13:21:49.455-07:00GOAT (Graphical OSGi Analysis Tools) is one of the Apache Aries samples. It's not released code but can be found in SVN and is easily built. Check <a href="http://incubator.apache.org/aries/buildingaries.html">building Aries</a> to see how.<br />
<br />
When you have built the project, navigate to the samples/goat/goat-assembly/target directory and run the sample by typing:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">java -jar osgi-3.5.0.v20090520.jar -console </span><br />
<br />
Have a look at the bundles (using 'ss'), you should see several 'goat' bundles active. Now, so that you can look at it later, install the Aries JDBC blog sample into the same framework. You should be able to do this just by copying the samples/blog/blog-jdbc-eba/target/*.eba into the goat-assembly/target/load directory.<br />
<br />
Check that the blog sample is running by navigating to http://localhost:8080/org.apache.aries.samples.blog.web/, you should see this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipCnZ8bzxZQOi2o_ARzD4B0XEjrG71GQm_i7w_XtBPxZAAEgMfNslytOlQLOfB3hD9HLwky_7-ebW8kmqCReolGX2x1fKZmelJ7vVGTTWxM_gKI_ydK7uz6fAbLlzl4dXLtUNQvACNVQWF/s1600/Blog.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="120" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipCnZ8bzxZQOi2o_ARzD4B0XEjrG71GQm_i7w_XtBPxZAAEgMfNslytOlQLOfB3hD9HLwky_7-ebW8kmqCReolGX2x1fKZmelJ7vVGTTWxM_gKI_ydK7uz6fAbLlzl4dXLtUNQvACNVQWF/s400/Blog.png" width="400" /></a></div>Click on 'Create Author' and create an author.<br />
<br />
Now, in a different browser window, navigate to http://127.0.0.1:8080/org.apache.aries.samples.goat.web/web/. You should see this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTBO2ZCzIjbkebf6UzXZFwF3oQ8SJL3ct3s4hsgiGj7mZziqmspSVLZglIQtn5MF3hStjVf05BopaupL_89HPn-uSlCDplB40qjGLwZaVn6Qzx7KOsXdZ6EvLAKywtd9ha7q0eCQNUkUh5/s1600/Goat.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="37" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTBO2ZCzIjbkebf6UzXZFwF3oQ8SJL3ct3s4hsgiGj7mZziqmspSVLZglIQtn5MF3hStjVf05BopaupL_89HPn-uSlCDplB40qjGLwZaVn6Qzx7KOsXdZ6EvLAKywtd9ha7q0eCQNUkUh5/s400/Goat.png" width="400" /></a></div><br />
Not very exciting. Click on the drop-down beside 'DummyProvider' and select 'BundleContextModel', then click 'Use Provider'. Wait a few seconds while the screen builds itself, it should look like this:<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjUQkVeOJPl-U38gAJPPW6Ho7Fb6638p1njwRGSjhLWwXLVOCmHRkswLGRRQ9fDd1y9RG43KbrnqNbh41VQNaHdRFGCxpExZX5DxH90x4RhmhzohaJl5Gq-kEQY-XPK8u_zEdAAp3j_9Re/s1600/Goat2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="97" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjUQkVeOJPl-U38gAJPPW6Ho7Fb6638p1njwRGSjhLWwXLVOCmHRkswLGRRQ9fDd1y9RG43KbrnqNbh41VQNaHdRFGCxpExZX5DxH90x4RhmhzohaJl5Gq-kEQY-XPK8u_zEdAAp3j_9Re/s400/Goat2.png" width="400" /></a></div><br />
<br />
On the left hand side you'll the same list of bundles as you saw with 'ss' from the command line, in the right hand area you can see each bundle drawn as an oblong shape. Since we are displaying all the bundles in the platform this is probably a bit too much information. Hit the 'Hide all' button at the top to get rid of them.<br />
<br />
Use the slider to move down the list of bundles on the left until you get to the blog sample bundles. Click on 'show' for each blog sample bundle, grab the bundles and move them around to get to this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilsyf4zsk3ym-yLTW-3qjUWxoGfUDrLhaWISXRCW40HEVpgUMzG0j3qTxz3SvN8Xxg4WmhM39pYDz2GclhL1VeEfVm5OYZVYJnwbA3tqA9ltZ-1elloH1VKuEVEepKx7LfjmFb3wgAIiML/s1600/Goat3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilsyf4zsk3ym-yLTW-3qjUWxoGfUDrLhaWISXRCW40HEVpgUMzG0j3qTxz3SvN8Xxg4WmhM39pYDz2GclhL1VeEfVm5OYZVYJnwbA3tqA9ltZ-1elloH1VKuEVEepKx7LfjmFb3wgAIiML/s400/Goat3.png" width="400" /></a></div><br />
Now you can see the four bundles that comprise the Blog sample and you can see a bit of information about how they are related to each other. Try clicking on the 'twisties' to expand information about packages and services.<br />
<br />
This is really prototype code, we wrote it to get round the problem of using a mixture of the OSGi console and slides to explain how the blog sample works. GOAT works by having an OSGi bundle in the framework which spits out information to a web front end which we deal with in JavaScript - that's what allows you to move bundles around. Even though it's at the prototype stage at the moment I think it's worth mentioning in a post. I haven't found anything similar, Knopflerfish do have a graphical display but it's static - you can't grab things and move them around.Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-29780448850773559512010-09-22T05:55:00.000-07:002010-09-24T07:34:31.768-07:00Running the Aries samples on Apache GeronimoThe Aries samples, which demonstrate the use of Enterprise OSGi components, also run on Apache Geronimo.<br />
<br />
To run the samples, get the Geronimo V3-M1 release from <a href="http://geronimo.apache.org/apache-geronimo-v30-m1-release.html">here.</a> Either the one based on Tomcat or Jetty will do.<br />
<br />
Extract it and change directory to geronimo-jetty8-javaee6-3.0-M1 (or geronimo-tomcat7-javaee6-3.0-M1)<br />
<a href="http://repo2.maven.org/maven2/org/apache/aries/samples/blog/org.apache.aries.samples.blog.jdbc.eba/0.2-incubating/org.apache.aries.samples.blog.jdbc.eba-0.2-incubating.eba"> </a><br />
I found it useful to change the default http port from 8080 to something else (I have too many things that use 8080). To do this, edit the file ./var/config/config-substitutions.properties.<br />
<br />
<br />
Grab these pre-reqs (may not be needed in the next Geronimo release):<br />
<ul><li><a href="http://mirrors.ibiblio.org/pub/mirrors/maven2/org/tranql/tranql-connector-derby-embed-xa/1.6/tranql-connector-derby-embed-xa-1.6.rar"></a><a href="http://mirrors.ibiblio.org/pub/mirrors/maven2/org/tranql/tranql-connector-derby-embed-xa/1.6/tranql-connector-derby-embed-xa-1.6.rar">tranql-connector-derby-embed-xa-1.6.rar</a></li>
<li><a href="https://cwiki.apache.org/GMOxDEV/apache-aries-samples-running-in-geronimo-30.data/aries-datasource.xml">aries-datasource.xml</a></li>
</ul> And the two versions of the Aries blog sample:<br />
<ul><li><a href="http://repo2.maven.org/maven2/org/apache/aries/samples/blog/org.apache.aries.samples.blog.jdbc.eba/0.2-incubating/org.apache.aries.samples.blog.jdbc.eba-0.2-incubating.eba">org.apache.aries.samples.blog.jdbc.eba-0.2-incubating.eba</a> </li>
<li><a href="http://repo2.maven.org/maven2/org/apache/aries/samples/blog/org.apache.aries.samples.blog.jpa.eba/0.2-incubating/org.apache.aries.samples.blog.jpa.eba-0.2-incubating.eba">org.apache.aries.samples.blog.jpa.eba-0.2-incubating.eba</a> </li>
</ul>Start the Geronimo server,<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">./bin/geronimo run</div><div style="font-family: "Courier New",Courier,monospace;"><br />
</div>to run in the foreground. In a different window, from the same directory, deploy the pre-reqs:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">./bin/deploy -u system -p manager deploy tranql-connector-derby-embed-xa-1.6.rar aries-datasource.xml</span><br />
<br />
<br />
Then deploy one or other version of the blog sample (but not both :-))<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">./bin/deploy -u system -p manager deploy org.apache.aries.samples.blog.jdbc.eba-0.2-incubating.eba</span><br />
<br />
Navigate to http://localhost:XXXX/blog where XXXX is your HTTP port and check that the blog is running.<br />
<br />
Navigate to http://localhost:XXXX/console and log in, uid 'system' , pwd 'manager'. Use the menu under Applications-> System Modules to start, stop, uninstall the blog sample.<br />
<br />
More extensive documentation can be found <a href="https://cwiki.apache.org/GMOxDEV/apache-aries-samples-running-in-geronimo-30.html">here</a>.Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-49831490761004129222010-09-19T09:43:00.000-07:002010-09-19T09:43:45.085-07:00SVN Git shootout at the Apache Retreat<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuUQD6kCEmuzLBxt_VMxe8ReQoZ7j7OGn8tSoCrMDSUXOm7REHgloQ7FavVdWuvV_BCOvu0NC9ptt8W73e6l_4Xiete-92iFHlK5Iuol1viKLGXltVTrkZdSvoZo7f75s3r0R5bTr9nvFv/s1600/yall.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuUQD6kCEmuzLBxt_VMxe8ReQoZ7j7OGn8tSoCrMDSUXOm7REHgloQ7FavVdWuvV_BCOvu0NC9ptt8W73e6l_4Xiete-92iFHlK5Iuol1viKLGXltVTrkZdSvoZo7f75s3r0R5bTr9nvFv/s400/yall.jpg" width="242" /></a></div>Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-21827532000363286582010-09-18T13:43:00.000-07:002010-09-19T02:46:50.665-07:00Apache Retreat, Hursley September 2010<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhallDbbC8XTJMCEVm1BPDibOIndJLIoRPOtOriD8nhnAo7iabmQAqXq_oU1uSSwNILsGa2PDaIPK0wTf6cQvGsoSL4nhZugzyoASI4y71Er_CqrxRC-W1t_ResZ4rArVWLhgo31L14Gq9/s1600/ApacheRetreat.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="298" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhallDbbC8XTJMCEVm1BPDibOIndJLIoRPOtOriD8nhnAo7iabmQAqXq_oU1uSSwNILsGa2PDaIPK0wTf6cQvGsoSL4nhZugzyoASI4y71Er_CqrxRC-W1t_ResZ4rArVWLhgo31L14Gq9/s400/ApacheRetreat.png" width="400" /></a></div><br />
<br />
<br />
<br />
Photo credit: Rainer JungZoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-57933290970470564492010-09-17T03:27:00.000-07:002010-09-22T07:28:23.908-07:00Apache Aries JPA samplesThere are two things that I almost always get caught by when developing samples for Apache Aries which use the JPA capabilities. The first is to do with datasources, the second is to do with enhancing persistence entities.<br />
<br />
I get caught out because these two things would normally be provided by a JEE compliant container - something like the WebSphere App server - so, as an application developer I would not normally have to think too much about them. However, all of the Aries samples need to be able to run in an OSGi platform built up using a set of readily available open source bundles so we need to find ways to do things that an app server would normally do for us.<br />
<br />
<b>Datasources</b> <br />
<br />
If you look at the source for the <a href="https://svn.apache.org/repos/asf/incubator/aries/trunk/samples/blog/">Apache Aries blog sample</a> you will find that the JPA persistence bundle depends on being able to use two other bundles. The relationships are like this:<br />
<div class="separator" style="clear: both; text-align: center;"><br />
</div><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbkoYOsdM4NZiFNJje1gan4o57JuSsgZrvuseYAZJtxsuYs2ScuYWPZm9Zt01iqX9bbIKjHDVe19qq8epO2vqyCdyS8vn0rhHvmADlVC34ZeutiUcr8FqyBQan2366dFbE3uek3oJNkry5/s1600/DataSource.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="287" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbkoYOsdM4NZiFNJje1gan4o57JuSsgZrvuseYAZJtxsuYs2ScuYWPZm9Zt01iqX9bbIKjHDVe19qq8epO2vqyCdyS8vn0rhHvmADlVC34ZeutiUcr8FqyBQan2366dFbE3uek3oJNkry5/s400/DataSource.png" width="400" /></a></div><br />
<br />
On the left, shown in yellow, is the blog-jpa-persistence bundle. This is part of the blog sample application. Inside that bundle there are two important xml files, one with blueprint configuration, the other with persistence information. Configuration in these two files points to things supplied by the other two bundles.<br />
<br />
The middle (green) and right hand side bundles (mauve) are both providing function that would normally be part of an app server. The green one (transaction-wrappers) is available as part of Aries, it's a really simple implementation of function to enlist a data source. This is provided in Aries as a convenience for people writing samples. The 'datasource' bundle is something that needs to be provided by the application developer but is not part of the application, there is no Java code to write - just a little blueprint which points to your database. For an example - look at the <a href="https://svn.apache.org/repos/asf/incubator/aries/trunk/samples/blog/blog-datasource/src/main/resources/OSGI-INF/blueprint/dataSource.xml">blueprint</a> configuration in the blog sample data source. If you were using an app server you would normally configure data sources through an admin screen - providing the data source bundle is doing just the same thing.<br />
<br />
When you assemble the OSGi platform that you will use to run your application you will need to make sure that both the transaction-wrappers bundle and your datasource bundle are running in the platform before you drop your OSGi application onto the load directory to be run. If you are in any doubt about how to assemble the kind of OSGi platforn you will need have a look at the <a href="https://svn.apache.org/repos/asf/incubator/aries/trunk/samples/blog/blog-assembly/">blog-assembly</a> project in Aries.<br />
<br />
<b>Enhancing persistence entities</b> <br />
<br />
The other part of JPA that I always get bitten by is the need to <a href="http://people.apache.org/%7Emprudhom/openjpa/site/openjpa-project/manual/ref_guide_pc_enhance.html">enhance</a> persistence entities. Enhancing means running a utility that takes the byte code for persistence entities, processes it and spits out another, vastly more efficient and much larger, set of byte codes. This is again something that a fully compliant JEE container be expected to do for you - so you probably wouldn't be aware of it. There are various ways to enhance persistence entities, in the Aries samples we use Maven, look at the <a href="https://svn.apache.org/repos/asf/incubator/aries/trunk/samples/blog/blog-jpa-eba/pom.xml">pom.xml</a> in samples/blog/blog-persistence-jpa/ to see how. Sadly, not everyone likes Maven as much as I do, so here is how to do it using Eclipse.<br />
<br />
In this example I'm using the Eclipse JEE (Helios) development platform with the "IBM Rational Development Tools for OSGi Applications 0.6" installed. This is convenient because I can work on the code, build it and then export it as an OSGi application (.eba file). The .eba file can be dropped into the 'load' directory of my Aries platform to be run.<br />
<br />
My Eclipse screen looks like this: <br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9bDOVUqBDvF-XREMdyNIeeSzImj4fvTqnLvTMd49qU5uQj9pZ4TuaM_uGodXy2eZYJHyK74eGmsqW_Hh31a94xMlC53BcC-RzL21y0yqx1FS2BrjcTXyQ_0fkzgN41sR7YkXjJH8iFlTS/s1600/Eclipse1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="377" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9bDOVUqBDvF-XREMdyNIeeSzImj4fvTqnLvTMd49qU5uQj9pZ4TuaM_uGodXy2eZYJHyK74eGmsqW_Hh31a94xMlC53BcC-RzL21y0yqx1FS2BrjcTXyQ_0fkzgN41sR7YkXjJH8iFlTS/s400/Eclipse1.png" width="400" /></a></div><br />
<br />
<br />
I'm using a sample Stocks application; the biz module has some persistence entities and the persistence xml is in it's default location in the META-INF directory. To enhance the entities we need to run en external tool. Click on the external tools drop-down (the thing with a little red suitcase in the top bar) and then external tools configuration. From the next screen, select 'Program' and then 'new' (a white rectangle with a yellow cross in the corner). You should see something like this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg54EgEuo_aWC1JQhWZFdsorOA8jgrgZqym5VSd3ApV6YEEQnUne4bZ9ndcLhsIhvw9bzzzMjLRouT3TdXqugMUPFSmheVkKkk1iBm6fpBjryl7JY85i8ADFeXfu4P0qGqwPupR0RcdVcVy/s1600/Eclipse2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg54EgEuo_aWC1JQhWZFdsorOA8jgrgZqym5VSd3ApV6YEEQnUne4bZ9ndcLhsIhvw9bzzzMjLRouT3TdXqugMUPFSmheVkKkk1iBm6fpBjryl7JY85i8ADFeXfu4P0qGqwPupR0RcdVcVy/s400/Eclipse2.png" width="397" /></a></div><br />
For 'Name', type in JPA_enhancer. Then, in the 'Location' field add the location of your Java executable. For me this is: /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/bin/java.<br />
<br />
Now the fun begins. Under 'Arguments' you will need to add the command to run the JPA enhancer, for me this looks something like:<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">-cp MYJARS/commons-collections-3.2.1.jar:MYJARS/geronimo-jta_1.1_spec-1.1.1.jar:MYJARS/geronimo-jpa_2.0_spec-1.0.jar:MYJARS/openjpa-2.0.0.jar:MYJARS/commons-lang-2.5.jar:MYJARS/org.apache.servicemix.bundles.serp-1.13.1_2.jar:MYWKSP/org.apache.stocks.biz/bin:MYWKSP/org.apache.stocks.api/bin:MYWKSP/org.apache.stocks.biz/src org.apache.openjpa.enhance.PCEnhancer </div><br />
where MYJARS is the path to a directory where I have copies of all the jars I need. MYWKSP is the path to the sample code.<br />
<br />
It's easiest to think about this in three parts. First, all the jars that the enhancer need on the classpath, these are:<br />
<br />
<ul><li>commons-collections-3.2.1.jar</li>
<li>geronimo-jta_1.1_spec-1.1.1.jar</li>
<li>geronimo-jpa_2.0_spec-1.1.jar </li>
<li>openjpa-2.0.0.jar</li>
<li>commons-lang-2.5.jar </li>
<li>org.apache.servicemix.bundles.serp-1.13.1_2.jar</li>
</ul><br />
Then you'll need the class files and the source for your persistence entities and the class files for any API they depend on, thus:<br />
<br />
<ul><li>org.apache.stocks.biz/bin</li>
<li>org.apache.stocks.api/bin</li>
<li>org.apache.stocks.biz/src</li>
</ul><br />
Finally the name of the program that you are going to run :<br />
<br />
<ul><li>org.apache.openjpa.enhance.PCEnhancer </li>
</ul><br />
Adding that command (with your own paths of course) and saving the configuration should get you to the point where you can run your JPA_enhancer. The easiest way to check that it has worked (apart from there being no obvious errors) is to look at the size of the class files - they should be much larger than the unenhanced versions.<br />
<br />
Before exporting the OSGi application you will need to modify the MANIFEST.MF of your persistence bundle to make sure that the import-package contains:<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">org.apache.openjpa.enhance;version="[2.0,3)",org.apache.openjpa.util;version="[2.0,3)"</div><br />
Don't worry if Eclipse complains about this. Finally - just export the project as an OSGi Application (EBA) and run it by adding it to the load directory of your OSGi platform.Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-82192077871853911682010-09-14T00:41:00.000-07:002010-09-14T13:15:27.636-07:00Colliding worlds: Development and MarketingDuring my career in the software industry I've worked in both marketing departments and in development labs. Now, as a technical advocate, I'm part of the development organisation but I work with marketing. <br />
<br />
As a software developer my first reaction to any kind of marketing information, no matter who it comes from, is that it is likely to be junk. I wouldn't feel this way if I felt the material was aimed at me and was telling me about tools or products that would help me. But all too often it isn't. And yet, whose fault is that? We, as developers, can't expect marketing to 'just know' about cool stuff we are working on. <br />
<br />
Really, development and marketing should talk to each other. And now we do - a little bit :-)<br />
<br />
To illustrate the issues for both sides, this is the story of trying to create a marketing message that both organisations were happy with. We were trying to find an illustration to go with the phrase "Turning developers into superheroes", this was the starting proposal from my marketing colleagues:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdvBEggp1zUO1RzEqV2_jCVRktTx2HnE9Su52AsrzlZTg5M76-Yll9izQQzcLLktokaXGigJqNCA2gbBcH_yddIBLFXfMvl5ZvxFosEy2jQ09Rhl39tVsxvtgddYXbrDn40IovLzxhf4k9/s1600/SalesmanSuperhero.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdvBEggp1zUO1RzEqV2_jCVRktTx2HnE9Su52AsrzlZTg5M76-Yll9izQQzcLLktokaXGigJqNCA2gbBcH_yddIBLFXfMvl5ZvxFosEy2jQ09Rhl39tVsxvtgddYXbrDn40IovLzxhf4k9/s320/SalesmanSuperhero.png" /></a></div><br />
<br />
<br />
What's wrong with that? Seriously, just about everything. This might work if the caption was "Turning salesmen into superheroes". No developer I know would come to work dressed like that - well, the cape maybe, but the shirt and tie? Forget it.<br />
<br />
Development's counter proposal for the image was this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDSHvDWwyJOSoNXCec7Bk_bPs_hQ8UnjOX6_hyphenhyphen-H2XgKcOA08Xx38P08MV_Zk6OTLQnr9AWgfHYjcLmfsSaDwWj5hoD9mGtn7G7C9hPl6EUaFkroyqV5oX8-7tu1e3hWicldTZQU-dMysz/s1600/SuperHeroIan.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDSHvDWwyJOSoNXCec7Bk_bPs_hQ8UnjOX6_hyphenhyphen-H2XgKcOA08Xx38P08MV_Zk6OTLQnr9AWgfHYjcLmfsSaDwWj5hoD9mGtn7G7C9hPl6EUaFkroyqV5oX8-7tu1e3hWicldTZQU-dMysz/s320/SuperHeroIan.png" /></a></div><br />
<br />
Somewhat predictably, my colleagues in marketing issued an immediate veto. Underwear on display is apparently unacceptable even if it's worn over the top of other clothes and other underwear is being worn underneath. Actually I don't know that other underwear was being worn underneath, I'm not on that kind of terms with the model. Although I can safely assert that he is, in fact, a real developer.<br />
<br />
Impasse.<br />
<br />
I spent the weekend 'gimping up' the aforementioned unmentionables and came up with this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgl453fyx6xD-wvgolzR_vlaZimOhN0BXOLqnzkudNsTY2gm4SRLqJ7JgyysK1FLsPAPlWmvEVBl71EyDgVtDkKI8KaLrNru8APvTQxGixJ7u__JDmWHM5MwEIHe96JPhQTwfR_XDYRVm9g/s1600/WithCape2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgl453fyx6xD-wvgolzR_vlaZimOhN0BXOLqnzkudNsTY2gm4SRLqJ7JgyysK1FLsPAPlWmvEVBl71EyDgVtDkKI8KaLrNru8APvTQxGixJ7u__JDmWHM5MwEIHe96JPhQTwfR_XDYRVm9g/s320/WithCape2.png" /></a></div><br />
<br />
However, I never got to show it to marketing because they produced this:<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEHHenpPc9yqj6PTx9JFqBUMb24HvE6K5Nqh8EPr2YW7mC-gUcvxgcmE8uM8pu4taVlHDVgDQbBlEuGhozrlSz41E7b0rIO_dj32454zEn8jwGKBLveU5n7tcK9Hu101fXh5HvDjM2HDuX/s1600/IncredibleHulk.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEHHenpPc9yqj6PTx9JFqBUMb24HvE6K5Nqh8EPr2YW7mC-gUcvxgcmE8uM8pu4taVlHDVgDQbBlEuGhozrlSz41E7b0rIO_dj32454zEn8jwGKBLveU5n7tcK9Hu101fXh5HvDjM2HDuX/s320/IncredibleHulk.png" /></a></div><br />
<br />
which I like a lot. The use of a QR code was a great idea and the guy doesn't look like a salesman. The image is a bit more "Incredible Hulk" than "Superman" but it works fine. I'm really happy with this outcome, I think that we've got a much better result by working across an organisational boundary than either of us could have achieved on our own.<br />
<br />
Next challenge - depict the benefits of Enterprise OSGi in the style Marvel comics :-) I will be SpiderWoman.Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-16084101158505323872010-06-15T06:28:00.000-07:002010-06-15T11:04:46.954-07:00Install the WAS OSGi Feature packIt's easy and free - these are minimal (Ubuntu based) instructions for starting with no WAS installation and getting to an installation of WAS with the OSGi feature pack. If the steps aren't clear look at the rather more verbose instructions in an earlier post in this blog :-). <br />
<br />
<ul><li>Install WebSphere </li>
<ul><li> Download from <a href="http://www.ibm.com/developerworks/downloads/ws/wasdevelopers/">here</a></li>
<li>Unzip this was.cd.7000.wasdev.nocharge.linux.ia32.tar.gz </li>
<li> sudo ./launchpad and follow the fairly obvious screens. Uncheck the box that asks if you want additional security.</li>
</ul>
<li>Download Fix pack 7.0.0.9 </li>
<ul><li>Download from <a href="http://www-01.ibm.com/support/docview.wss?rs=180&uid=swg24025886">here</a> </li>
<li>The file will be called something like: 7.0.0-WS-WAS-LinuxX32-FP0000009.pak</li>
</ul>
<li>Download the SDK upgrade pack</li>
<ul><li>Download from <a href="http://www-01.ibm.com/support/docview.wss?uid=swg24025889">here</a> </li>
<li>File will be called something like: 7.0.0-WS-WASSDK-LinuxX32-FP0000009.pak</li>
</ul>
<li>Install the update installer</li>
<ul><li>Download from <a href="http://www-01.ibm.com/support/docview.wss?uid=swg24020446">here</a>. </li>
<li>Extract 7.0.0.9-WS-UPDI-LinuxIA32.tar.gz </li>
<li>cd to the top level directory of the installation</li>
<li>sudo ./install to make it install itself</li>
<li>After installing it will launch itself and you can go on to install the two 7.0.0.9 packs that you downloaded above.</li>
</ul>
<li>Get the OSGi Feature pack from <a href="http://www-01.ibm.com/software/webservers/appserv/was/featurepacks/osgi/instopt/index.html">here</a>.</li>
<ul><li>Download Installation Manager, 1.3.4.1-WS-IM-LinuxX86.zip. (86MB)</li>
<li>Unzip it</li>
<li>cd to the top level installation directory</li>
<li>sudo ./install to make IM install itself. IM will lead you through the next three steps</li>
<li>Import your WAS installation. </li>
<li>Install the OSGi Feature pack. </li>
<li>Launch the profile management tool and augment your profile</li>
</ul>
<li>Check your installation</li>
<ul><li>cd /opt/IBM/WebSphere/AppServer/bin</li>
<li>sudo ./startServer.sh server1</li>
<li>navigate to http://localhost:9060/ibm/console/ and check that you can see the WAS console.</li>
<li>sudo ./stopServer.sh server1</li>
</ul></ul>At this stage I would normally install the database for the blog sample and run the set up script for it.<br />
<ul><li> cd /opt/IBM/WebSphere/AppServer/feature_packs/aries/samples/blog</li>
<li>sudo /opt/IBM/WebSphere/AppServer/derby/bin/embedded/ij.sh createBlogDb.sql</li>
<li>sudo /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/wsadmin.sh -f blogSampleInstall.py setupOnly server1 ubuntuNode01 </li>
</ul>Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-50519703090747155092010-06-01T03:30:00.000-07:002010-06-01T03:30:34.383-07:00Talking about Apache AriesThe number of OSGi related talks seems to be increasing - which can only be a good thing. I'm going to <a href="http://skillsmatter.com/event/os-mobile-server/osgi-workshop-become-a-certified-bundle-manager-today">this one</a> tonight and looking forward to it!<br />
<br />
I thought I'd look at who was talking about <a href="http://incubator.apache.org/aries/">Apache Aries</a> and where for the next month, I'm sure this isn't a comprehensive list so let me know if I've missed anything.<br />
<br />
June 2nd - Tim Ward will be talking about JPA and OSGi at <a href="http://jazoon.com/Conference/Wednesday/Ward">Jazoon</a> in Zurich<a href="http://jazoon.com/Conference/Wednesday/Ward"></a><br />
<br />
June 8th - Holly Cummins will be at the <a href="http://www.parisjug.org/">Paris JUG</a> giving an Apache Aries presentation<span style="color: black;"><span style="font-size: x-small;"><span style="font-family: Geneva,serif;">.</span></span></span><br />
<br />
June 19th (*) - Zoƫ Slattery will be at the <a href="https://wiki.sdn.sap.com/wiki/display/events/SAP%20Inside%20Track%202010%20London">SAP Inside Track</a> talking about Enterprise OSGi in Apache Aries<br />
<div style="line-height: 100%; margin-bottom: 0cm;"><span style="color: black;"><span style="font-family: Geneva,serif;"><span style="font-size: x-small;"><br />
</span></span></span></div>June 26th(*) - Mark Nuttall will be giving an Apache Aries presentation at the <a href="http://skillsmatter.com/event/java-jee/london-java-community-unconference-02">London Java Community Unconference.</a><br />
<div style="line-height: 100%; margin-bottom: 0cm;"><span style="color: black;"><span style="font-family: Geneva,serif;"><span style="font-size: x-small;"><br />
</span></span></span></div>July 1st - Andrew Osbourne will run a <a href="http://uk.osgiusers.org/Main/MeetingsandEventsCalendar#nextmeet">Blueprint tutorial</a> at the OSGi Users' forum based on the implementation of Blueprint in Apache Aries<br />
<br />
<br />
* These are both unconference style events so although presentations have been offered there is of course no guarantee that they will be delivered. However both events look pretty well worth attending whether there is Aries there or not :-)<br />
<br />
<div style="line-height: 100%; margin-bottom: 0cm;"><span style="color: black;"><br />
</span></div>Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-74176569635575010342010-05-01T00:55:00.000-07:002010-05-01T01:45:04.002-07:00Women's appointmentsA couple of weeks ago I was helping my mother move some furniture and found a newspaper from Saturday December 23rd 1967 which had been used as drawer lining. I skimmed through it and eventually found the "Women's Appointments" section.<br /><br /><br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoGUKO7obZ4d52wGlTdaaQV2iiznukdwt0uu4E2sZZjhJnRDEdlx7ynfwuK-fL0h3ChvSeSiIYa6SuskEvYaMk3aPXVQ5d4HfiNmnLXZwxf-eJ9PWhGDWOL0dzoP0YWplyNjdlRYjaEYFE/s1600/WomensAppointmentsCropped.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 397px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoGUKO7obZ4d52wGlTdaaQV2iiznukdwt0uu4E2sZZjhJnRDEdlx7ynfwuK-fL0h3ChvSeSiIYa6SuskEvYaMk3aPXVQ5d4HfiNmnLXZwxf-eJ9PWhGDWOL0dzoP0YWplyNjdlRYjaEYFE/s400/WomensAppointmentsCropped.jpg" alt="" id="BLOGGER_PHOTO_ID_5466209812147454434" border="0" /></a><br /><br />Of course you would never see anything like this in the UK now, not since the sex discrimination act in 1975. The weird thing is that I would not have seen anything odd about this section in a newspaper in 1967. In fact, I applied for a job in 1973 as a lab technician for a chemical company and was not even mildly annoyed when they wrote back and said the job was only available to men. It makes me wonder how much I accept now without thinking too much about it.<br /><br />Thirty five years after the act there are clearly still things wrong in the UK. For example, why do so few girls go into computer science? For any teenage girl with a flair for maths it should be such an obvious career choice. My daughter obtained her degree in computer science last year and is very happily working for <a href="http://assanka.net/">Assanka</a> in London. However, I suspect that she might never have followed that route if I hadn't worked for IBM. It's also probably true that I wouldn't have pursued a career in science if my mother had not been a doctor. How long will it take to push through enough role models to even things out? Generations?<br /><br />It's not all bad though, my son is a dancer and currently touring with <a href="http://www.swanlaketour.com/">Matthew Bourne's Swan Lake</a>. I cannot imagine what would have happened in the the 1960s if a child of intellectual middle class parents had insisted that all he wanted to do was dance.Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-1058971640787465512010-04-18T12:46:00.000-07:002010-04-18T13:20:01.437-07:00Reflections on Open Source Jumpstart #GDCOSJ1When you work on an Open Source project most of your communication with colleagues will be through the mailing list or maybe on IRC. This works great 90% of the time but I think everyone understands that occasionally it's really helpful to meet and talk to the people you work with. Traditionally this has happened at conferences, for example ApacheCon, EclipseCon and so on.<br /><br />That's fine for people that are established committers - but what about people who want to start? Those mailing lists are pretty intimidating aren't they? Then when you do screw up the courage to write a note sometimes it never gets answered and you don't know why not. Or sometimes people don't read your question properly and answer something else. It can seem very unwelcoming. Initiatives like GSOC do a good job but they also miss the face to face element.<br /><br />It was just because of this that we decided to run Open Source Jumpstart. We wanted students to meet committers face to face, just once. It's amazing how many of those getting started barriers can be broken down with one day's work. It would be great if any of the students from Saturday carried on working on Open Source projects - however, even if they don't, in that one day's work bugs were fixed in every project and students learnt about how code is developed.<br /><br />There isn't much that's more satisfying than bringing two groups of people together and seeing both of them get something out of the experience. Have a look at the <a href="http://www.meetup.com/grad-dc/calendar/12708772/#comments">Meetup</a> to see feedback from the event.Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-79054831415014450472010-04-17T23:51:00.000-07:002010-04-18T00:27:24.090-07:00Open Source Jumpstart #GDCOSJ1Yesterday's GDC Open Source Jumpstart was amazing!<br /><br /><span style="font-weight: bold;">Thanks </span>to all the open source projects that came:<br /><br /><ol><li><a href="http://incubator.apache.org/aries/">Apache Aries</a></li><li><a href="http://harmony.apache.org/">Apache Harmony</a></li><li><a href="http://tomcat.apache.org/">Apache Tomcat</a></li><li><a href="http://tuscany.apache.org/">Apache Tuscany</a></li><li><a href="http://incubator.apache.org/wookie/">Apache Wookie</a></li><li><a href="http://code.google.com/p/citrine-scheduler/">Citrine</a></li><li><a href="http://sourceforge.net/projects/ikasaneip/">Ikasan</a></li><li><a href="http://code.google.com/p/impala/">Impala</a></li><li><a href="http://www.php.net">PHP</a></li></ol><br />You guys worked so hard all day!<br /><br /><span style="font-weight: bold;">Thanks </span>to all the students that came along and fixed bugs, wrote tests and documentation. Well done! I can't believe how far people came (from Edinburgh in one case) - you represent the future of software development and it was great to meet you.<br /><br /><span style="font-weight: bold;">Thanks </span>to IBM for letting us use their wonderful Southbank location and to the <a href="https://www-304.ibm.com/isv/spc/europe/hursley.htm">IBM Innovation Centre in Hursley</a> for providing the food. The Innovation Centre have some great (free) resources for students, if any of you missed the links, here they are again:<br /><br /><ol><li><a href="www.ibm.com/developerworks/mydeveloperworks">Mydeveloperworks</a> - all sorts of resources for creating groups, wikis etc </li><li><a href="www.ibm.com/students">Student portal</a> - competitions, stuff about jobs etc<br /></li></ol><br />Finally - thanks to <a href="http://uk.linkedin.com/in/barrycranford">Barry Cranford</a> for being a continual positive inspiration and to the rest of the <a href="http://graduatedevelopmentcommunity.wordpress.com/">GDC</a> organising committee for pulling yesterday's event together.<br /><br />Yes, I really think we might do this again!Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-9210489650629620062010-04-11T23:25:00.000-07:002010-04-12T12:22:20.515-07:00Apache programmers study Leech Farming in IrelandFor the last three days I've been in a Youth Hostel in rural Ireland with a bunch of programmers. Sounds like hell? Actually quite the reverse. It was probably the best 'unconference style' event that I've been to. So many things made it work - here are a few:<br /><ul><li>Beautiful countryside (most of us did a couple of hours walk on Saturday)</li><li>Everyone staying overnight for two days - no splitting up to go out to different pubs/restaurants etc</li><li>The weather - yes, it was sunny - in Ireland - in April - for three consecutive days.</li><li>Great mixture of projects, people, talks and coding time.</li><li>The only use of PowerPoint was in 'Presentation Karaoke' - a right and fitting use for PowerPoint. This is where the Leech Farming came in.<br /></li></ul>Thanks go to Noirin Shirley for the organisation, not only for doing the normal hassle stuff (booking the hostel, organising the food) but also for roping in her husband to collect us from Bray station and persuading her parents to turn up with home baked bread on the last day.<br /><br />Here is a shot of Andrus Adamchick at breakfast on the last day - just to give an idea of what the place was like.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6w0bjeHFYUzdmU8tqfG8UQZcAdWDEr0FxDyZxaNBubMpEWYLrFiA8-wuBxFsSCyHVPtFUegnJfknnFoa9QiZXLXA9K_BVvgclBBN0whsiGGf1PG9Sbw8esLJ9W3T2wFJVebVTeTtLzkW5/s1600/Andrus.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 300px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6w0bjeHFYUzdmU8tqfG8UQZcAdWDEr0FxDyZxaNBubMpEWYLrFiA8-wuBxFsSCyHVPtFUegnJfknnFoa9QiZXLXA9K_BVvgclBBN0whsiGGf1PG9Sbw8esLJ9W3T2wFJVebVTeTtLzkW5/s400/Andrus.jpg" alt="" id="BLOGGER_PHOTO_ID_5459329157939547474" border="0" /></a><br /><br />These events are somehow much more satisfying than the huge, expensive conferences. I come away feeling that I've learned something and met some great people. I'm looking forward to the next one already.Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-47873674732243894212010-03-08T04:37:00.000-08:002010-03-08T06:09:49.799-08:00Persistence layers in the Apache Aries Blog SampleWhen we first added the Blog Sample to <a href="http://incubator.apache.org/aries/">Apache Aries</a> there was no support in Aries for JPA, so the sample was written with a JDBC persistence layer. Over the past month or so JPA support has been added to Aries, as a result I spent some time last week getting a new JPA version of the blog persistence layer to work on Aries components.<br /><br />The samples in Aries are deigned so that they run on an OSGi platform which pulls in just enough components to run the application, for the blog sample we use Equinox as a base and build up from there.<br /><br />Here are a couple of small statistics comparing the JPA and JDBC persistence implementations in the Aries blog sample:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVOcNuT_kW5M4swKOmlpv7VAJjcFGrgPm2ZvF3zu7inrjinKqZtqhd8X7pStse96glSS7sI5Fz3I4V7lQYpIsHmKZLm3xbxgcy0drXDhbEyG1RtrUjddH0odMWYQoS_Fo88LDUTvI-xkxr/s1600-h/Screen+shot+2010-03-08+at+13.57.56.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 90px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVOcNuT_kW5M4swKOmlpv7VAJjcFGrgPm2ZvF3zu7inrjinKqZtqhd8X7pStse96glSS7sI5Fz3I4V7lQYpIsHmKZLm3xbxgcy0drXDhbEyG1RtrUjddH0odMWYQoS_Fo88LDUTvI-xkxr/s400/Screen+shot+2010-03-08+at+13.57.56.png" alt="" id="BLOGGER_PHOTO_ID_5446262331524265394" border="0" /></a>The Java code is much more concise using JPA, the complexity has all moved into the platform. Which is, of course, the right way to go.Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-64697039023808086432010-02-12T02:49:00.000-08:002010-02-13T05:33:33.672-08:00WebSphere from the ground up - part twoA week or so ago I posted on how to do an 'assume nothing' installation of WebSphere in order to run the OSGi Alpha Feature pack. Today the <a href="https://www14.software.ibm.com/iwm/web/cc/earlyprograms/websphere/wasfposgiajp/">Open Beta of the OSGi</a> Feature Pack was released and the requirements and installation process differ slightly from those required by the Alpha.<br /><br />The basic steps are pretty much the same, differences are shown in <span style="color: rgb(102, 0, 204);">this color</span>:<br /><br /><ol><li>Install the free-for-developers WebSphere Application Server Version 7</li><li>Install the 7.0.0.7 Fix pack and<span style="color: rgb(102, 0, 204);"> an update to the Java SDK for WAS</span><br /></li><li>Install the Open Beta OSGi Feature pack <span style="color: rgb(102, 0, 204);">using the IBM Installation Manager.</span></li></ol>Following the instructions for the Alpha works up to half way through step 2. But here, as well as downloading the 7.0.0.7 Fix pack you will need to download an SDK update from <a href="http://www-01.ibm.com/support/docview.wss?rs=180&uid=swg24024588">here</a>. The file will be called something like 7.0.0-WS-WASSDK-LinuxX32-FP0000007.pak. Put this file in the same directory as you put the 7.0.0.7 Fix pack, then run the UpdateInstaller as directed in the previous post to install both fixes.<br /><br />To install the Open Beta you will need to start with <a href="https://www14.software.ibm.com/iwm/web/cc/earlyprograms/websphere/wasfposgiajp/download.shtml">this link</a> . Scroll down till you find these two links:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBgGmM6iJX7L2TShNvxIWR1wTcWz7haOiuMhcSbK-_kfCWGf-YV8pJnck8KIWqsyF81JHJaQM4MKdV4pnoMVJPk9PaKa1gpAMxy-fFhFkdwtcomxIsOYCf08XAuZJcnxvcDSOl-Y_NJqZU/s1600-h/Screen+shot+2010-02-12+at+11.29.57.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 59px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBgGmM6iJX7L2TShNvxIWR1wTcWz7haOiuMhcSbK-_kfCWGf-YV8pJnck8KIWqsyF81JHJaQM4MKdV4pnoMVJPk9PaKa1gpAMxy-fFhFkdwtcomxIsOYCf08XAuZJcnxvcDSOl-Y_NJqZU/s400/Screen+shot+2010-02-12+at+11.29.57.png" alt="" id="BLOGGER_PHOTO_ID_5437389635231599634" border="0" /></a><br />The first link (Web install...) is the one you want. You will download a preconfigured version on the installation manager which already has links to the repositories containing the Beta download.<br /><br />Click on the Web install link and follow through the next screens till you find an option to download the IBM installation manager. It is about 86MB and will be called something like iim.linux.x86_20100128.zip. Download it and unzip it in a temporary directory, then run the install script in that directory.<br /><br />The installation manager will start up and ask if you want to install Version 1.3.4 of the installation manager. Continue with the installation of V1.3.4 through to the end when you will be asked if you want to restart, accept this option. When the installation manager restarts you will be prompted for an ID and password, these will be the same ones as you would have used to download WAS in the first place.<br /><br />The next two steps are to 'Import' your existing WAS installation into the installation manager. After that you will be able 'Install' the Beta code from a remote repository which has already been configured in the Installation Manager.<br /><br />At the end if the Beta installation the profile management tool will be launched, you will need to augment your profile with the OSGi feature pack. Again, the screens are easy to follow.<br /><br />This is a fairly high level view of the instructions, there are excellent and very detailed steps available from <a href="https://www14.software.ibm.com/iwm/web/cc/earlyprograms/websphere/wasfposgiajp/library.shtml">here</a> in the getting started guide.Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-87248200462197313482010-02-02T07:08:00.000-08:002010-02-13T05:41:33.755-08:00WebSphere Application Server - from the bottom up.Recently I installed the IBM WebSphere Application Server from scratch so that I could look at the <a href="http://ianrobinson.blogspot.com/2009/12/websphere-up-to-its-ears-in-osgi.html">OSGi support for enterprise applications</a> available in WebSphere. Google was not my friend in this instance - I couldn't find a quick summary of the instructions for installing the WebSphere Application Server anywhere. It is actually all quite easy, not to mention free. In this post I'll provide a brief overview of the steps and links to download sites. If you want more detail, look <a href="https://www14.software.ibm.com/iwm/web/cc/earlyprograms/websphere/iwsasosgia/">here</a> for information on every supported operating system. I used an unsupported operating system (Ubuntu**) and for the purposes of experimenting with the OSGi support this works just fine. Although I use Linux commands throughout this, the same thing will work on Windows with the appropriate modifications to paths and exchanging .bat for .sh files.<br /><br />There are three steps:<br /><ol><li>Install the WebSphere Application Server Version 7</li><li>Install the version 7.0.0.7 Fix Pack<br /></li><li>Install the Alpha OSGi Feature Pack<br /></li></ol><br /><h3>1. Install the WebSphere Application Server Version 7 </h3><br />This is free for development use and all you have to give IBM is your name and an email address, which they will not use unless you check the boxes saying that you want to be contacted. You will also have to read and accept some license terms. The link you need is <a href="http://www.ibm.com/developerworks/downloads/ws/wasdevelopers/">here</a>, there are Windows and Linux downloads, no Mac version (sorry). You will need version 7, and the download is 800 MB so you need to allow plenty of time and make sure you have enough disk space.<br /><br />Installing is straightforward. Extract the file you downloaded (it will be called something like was.cd.7000.wasdev.nocharge.linux.ia32.tar.gz). In the top level directory you will find a 'launchpad' file. Launch the installer like this:<br /><br /><span style="font-family:courier new;">sudo ./launchpad.sh</span><br /><br />The screens are fairly self explanatory, just make a note of where you install the AppServer (default on my system is /opt/IBM/WebSphere/AppServer) and, if all you want is an experimental installation, I suggest not configuring security. I'll refer to the place that you installed the AppServer as WAS_HOME for the rest of this post.<br /><br />Skip the final screen asking if you want to launch the AppServer, it's better to get used to the command line. Change directory to WAS_HOME/bin, then run<br /><br /><span style="font-family:courier new;">sudo ./startServer server1</span><br /><br />this will start up the server. To shut it down again,<br /><br /><span style="font-family:courier new;">sudo ./stopServer.sh server1</span><br /><br /><br /><h3>2. Installing the 7.0.0.7 Fix Pack.</h3><br /><br />This is a two step process. You will need to download both the fix pack and an installer. The steps are detailed <a href="http://www-01.ibm.com/support/docview.wss?rs=180&uid=swg27017010#steps">here</a>. If this is a new installation all you need are steps 5 and 6.<br /><br />The installer that you download will be called something like 7.0.0.7-WS-UPDI-LinuxIA32.tar.gz and the fix pack will be 7.0.0-WS-WAS-LinuxX32-FP0000007.pak. Extract the installer somewhere temporary, then<br /><br /><span style="font-family:courier new;">cd UpdateInstaller</span><br /><span style="font-family:courier new;">sudo ./install</span><br /><br />The screens which follow will take you through installing the installer and then onto installing the fix pack. The screens are easy to follow - you will just need to point the installer to the location of the fix pack at some point.<br /><br />After installing, try stopping and starting WebSphere again to make sure everything has gone according to plan.<br /><br /><h3>3. Installing the Alpha OSGi feature pack </h3><br />You will need to download the feature pack from <a href="https://www14.software.ibm.com/iwm/web/cc/earlyprograms/websphere/iwsasosgia/">this site</a>. Select the 'Download' tab then scroll down till you find 'Download OSGi Applications Alpha'. You will have to register and accept another license, then you should find a screen that allows you to download 'OSGi-Applications-Open-Alpha-20100111.zip'. Copy the .zip file into the WAS_HOME directory and then extract it. To complete the installation you will need to run:<br /><br /><span style=";font-family:courier new;font-size:85%;" ><span style="font-size:100%;"><span style="font-family:courier new;">cd WAS_HOME/feature_packs/aries/bin/</span></span><br /><span style="font-size:100%;">sudo ./complete_installation.sh</span></span><span style="font-size:100%;"><br /></span><span style=";font-family:courier new;font-size:100%;" >sudo ./augmentProfile.sh AppSrv01</span><br /><br />This assumes that 'AppSrv01' is the name of the profile you want to use; if this is stand alone test installation using AppSrv01 will be fine.<br /><br />Finally - restart the AppServer, and point your web browser at http://localhost:9060/ibm/console, which will give you the WebSphere admin console, like this:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRP6AvdH_y63Rl9ZiSkoCQghR3FC-M9XYyn9gK3hft0KikIh2spCAeXXImsbNqj4c10J_mCjJOXtWljYCaMtt7x0niehNzTV3kkFYOqdD-Mmh7iMft_IxzNoTUTGGGUWELJDRqBQwGueRW/s1600-h/Screen+shot+2010-02-03+at+15.23.46.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 170px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRP6AvdH_y63Rl9ZiSkoCQghR3FC-M9XYyn9gK3hft0KikIh2spCAeXXImsbNqj4c10J_mCjJOXtWljYCaMtt7x0niehNzTV3kkFYOqdD-Mmh7iMft_IxzNoTUTGGGUWELJDRqBQwGueRW/s320/Screen+shot+2010-02-03+at+15.23.46.png" alt="" id="BLOGGER_PHOTO_ID_5434038693626708690" border="0" /></a><br /><br />If you didn't set up security you will just be able to click the 'Login' button, if you did you will have to enter an ID and password.<br /><br />You should now be in a position to experiment with the OSGi Alpha as described <a href="http://ianrobinson.blogspot.com/2009/12/websphere-up-to-its-ears-in-osgi.html">here</a><br /><br /><h3>Finally...</h3><br />This is all quite easy to work through but there are some additional things that it's helpful to know:<br /><br />You will find the log files here:<br /><br />WAS_HOME/profiles/AppSrv01/logs/server1<br /><br />the one you are most likely to want if things don't go according to plan is SystemOut.log.<br /><br />OSGi bundles are cached here:<br /><br />WAS_HOME/profiles/AppSrv01/config/bundlecache<br /><br />It can be useful to look and see what is in there.<br /><br />The OSGi samples (and their source code) can all be found here:<br /><br />WAS_HOME/feature_packs/aries/<br /><br />** If you do use Ubuntu to run WebSphere you will need to make sure that /bin/sh is linked to /bin/bash, not /bin/dash.Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-32164311739589738472009-11-30T01:15:00.000-08:002009-12-01T06:05:32.821-08:00UnconferencesA year of hosting weekend events at IBM's Southbank location culminated last Saturday with the <a href="http://londonjavacommunity.wordpress.com/">London Java Community </a>Unconference. This was the most successful event so far - all the others were good, but this was the highlight of the year. Have a look at <a href="http://twitter.com/#search?q=%23LJCUC1">twitter</a> for comments.<br /><br />Having gained some experience over the past year I thought it was worth writing a few words on hosting unconferences from the point of view of a $BIGCORP. In the future I hope we will see many more companies welcoming technology groups into their offices at weekends.<br /><br />Here are my suggestions for a successful event:<br /><br /><br /><br /><br /><span style="font-weight: bold;">1. Remember your place</span><br /><br />We ($BIGCORP) are really only providing a location - the event is all about the group that wants to run it and about what their members want. The LJC - led by <a href="http://uk.linkedin.com/in/barrycranford">Barry Cranford</a> - has a clear mission, they are passionate about all things Java - all we are doing is providing a place to meet. This is not the sort of event that can be used to promote commercial products - leave that to the marketing teams.<br /><br /><br /><span style="font-weight: bold;">2. Work with a good team</span><br /><br />In fact, three good teams in my case. The IBM team that turns up on the day (<a href="http://blog.soal.org/">Robin Fernandes</a>, Cath Hope, Mark Hindess, <a href="http://antblah.blogspot.com/">Ant Phillips</a>) - we are all developers from <a href="http://www-05.ibm.com/uk/locations/hursley_details.html">IBM's labs</a> in Hursley and have worked with each other for a few years; I know I can trust them to do whatever they say they will. The second IBM team, led by the Hursley <a href="http://www-200.ibm.com/partnerworld/pwhome.nsf/weblook/mkt_innovation.html">Innovation Centre</a>, are people you don't see at the event - they work hard in the weeks running up to the event to ensure that we have catering, security, networks, projectors etc. Finally, the user group team. In this case <a href="http://martijnverburg.blogspot.com/">Martijn Verburg</a> and Barry Cranford from the LJC who displayed an exceptional level of trust in our ability to pull this off, especially given Barry's inclination to plan everything.<br /><br /><br /><span style="font-weight: bold;">3. Keep it small</span><br /><br />One of the great things about last Saturday was watching people talk to each other over lunch and in breaks. This is something that I feel is sadly missed at big conferences, at least half the point of these events is to encourage people to talk to each other.<br /><br /><br /><span style="font-weight: bold;">4. What not to organise</span><br /><br />Resist the temptation to organise the speakers in advance. Whatever happens on the day it will work out right. It really is up to the attendees to provide the content and I have yet to go to an event where there were too few talks. Perversely I also find that the quality of talks is much higher at unconferences than at mainstream conferences - I don't really understand why - perhaps because the audience are involved the atmosphere tends to be friendly and supportive towards presenters.<br /><br /><br /><span style="font-weight: bold;">5. What to organise</span><br /><br />Registration, sponsors, badges, projectors, wireless network, flip charts, white boards, pens, food (40% vegetarian, 10% vegan), directions, cleaning equipment, twitter tag, 'the grid'. That's it really. Oh, and some signs:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWP1R6zjts8NxP1hyphenhyphenln9hge6lgL_fEZhr3C1cPYNaf8E6qmWV6Dw4voa1oEnXVwvMbypHYgln-WebSW2VdM8npXmDYrU63ZZoLBAG9Rrom0QG0VAnByznC3oDYdFpau9UPYDlgnd4SvT0z/s1600/door.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWP1R6zjts8NxP1hyphenhyphenln9hge6lgL_fEZhr3C1cPYNaf8E6qmWV6Dw4voa1oEnXVwvMbypHYgln-WebSW2VdM8npXmDYrU63ZZoLBAG9Rrom0QG0VAnByznC3oDYdFpau9UPYDlgnd4SvT0z/s320/door.jpg" alt="" id="BLOGGER_PHOTO_ID_5410257868798771506" border="0" /></a><br /><br />Thanks to <a href="http://blog.spiralarm.com/richard/2009/11/london-java-community-unconference-1.html">Richard Dallaway</a> for the image.Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-64231261528801936112009-10-27T03:57:00.000-07:002009-10-27T06:14:34.586-07:00The other side of IBMLast week was full of 'firsts' for me. It started with my first ever commit to an <a href="http://incubator.apache.org/aries/">Apache project </a>. This was a career milestone for me, I will be writing a lot more about that project in the future, but not in this post.<br /><br />The other 'firsts' were all associated with <a href="http://www.barcamplondon.org/">BarCamp London </a>which ran from Saturday morning through to Sunday evening at IBM's Southbank location. It was the the first time I had ever been to BarCamp and I was enormously impressed by the level of organisation. I've been to a few big conferences and they could learn a lot from the BarCamp organisers who pulled the whole event together <span style="font-style: italic; font-weight: bold;">in their spare time</span><span style="font-weight: bold;">.</span><br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinvcoQu1WBMAMT0L4v0n4x9vaSGrW-x9yRriVLIAu1gzb_zpUbk9QA5d5U8xqmDByqXUG15QSRyv68zcKJDZRM6cf2OoHh2qYw2VEdXvjSEPYwImH_y5aDOfkdVeppTXqPuOuqxcXXyXtP/s1600-h/IBM.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinvcoQu1WBMAMT0L4v0n4x9vaSGrW-x9yRriVLIAu1gzb_zpUbk9QA5d5U8xqmDByqXUG15QSRyv68zcKJDZRM6cf2OoHh2qYw2VEdXvjSEPYwImH_y5aDOfkdVeppTXqPuOuqxcXXyXtP/s320/IBM.jpg" alt="" id="BLOGGER_PHOTO_ID_5397243196034916658" border="0" /></a><span style="font-style: italic;">The other side of IBM<br />Image courtesy of Adewale Oshineye - check out his other photos of the event </span><a style="font-style: italic;" href="http://www.flickr.com/photos/adewale_oshineye/sets/72157622531294067/">here</a><br /></div><br />It was also the first time that IBM UK has ever hosted a BarCamp and it's hard to describe the level of nervousness that was permeating the corporate psyche prior to the event. As it happens, apart from one small(s) problem, the weekend went entirely smoothly. So many people helped to pull this together that I can't list them all. I will however mention three companies that I bet no-one else will talk about, <a href="http://www.g4s.com/">G4S</a>, <a href="http://www.johnsoncontrols.co.uk/publish/gb/en.html">Johnson Controls</a> and <a href="http://www.compass-group.co.uk/">Compass</a> . Their employees were on site for much of the weekend ensuring that the building was safe to sleep in, kept clean and comfortable and that people were fed. Well done!<br /><br />I think IBM gained a great deal of respect for trusting BarCamp to use their premiere London location knowing that they would be entertaining clients there on Monday. The developers from IBM who attended also gained from meeting a different and diverse set of people. When you work for a big company it's too easy to develop a language and way of communication that only makes sense inside the company - getting out once in a while at least makes you realise you are becoming institutionalised.<br /><br />Someone asked me why I got involved with organising BarCamp - it's a simple answer. I've seen so many complex problems solved by bringing highly technical and creative people together and allowing them time to communicate. Sadly there aren't that many places where 200+ people can meet and share ideas. IBM has a great location which is not often used at weekends, how could I <span style="font-weight: bold;">not</span> have got involved?Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0tag:blogger.com,1999:blog-2449778416389490679.post-25721950933734537522009-07-31T07:13:00.000-07:002009-07-31T12:30:14.094-07:00Does my PHP app run on Project Zero?As the PHP implementation in Project Zero gets more complete it's possible to run quite a few <a href="http://www.projectzero.org/wiki/Development/PhpWebApplications">significant applications</a>. It would be nice to know in advance how likely it is that a PHP application would run on Project Zero - without investing a whole lot of time in trying to run it. Well, now you can.<br /><br />There is a new Project Zero application which will scan your application and tell you whether it thinks it will run on Project Zero. The way it does this is to extract information from the Project Zero PHP parser - for instance it finds out the names of functions that are declared in the application and compares them with the names of functions that are invoked. If the application scanner finds that a function is invoked by the application but is not declared by it, it uses function_exists() to figure out if it is implemented in Project Zero's PHP. Similar analysis is carried out for classes and methods in the application.<br /><br />The instructions for extracting and running the scanner are <a href="http://www.projectzero.org/wiki/Development/PHPAnalysis">here</a>. They assume that you already have a working version of Project Zero.<br /><br />One of the reasons that I wrote this was that I wanted to figure out if PHPUnit would run on Project Zero. This led to a horrible chicken and egg situation in that I can't write PHP without PHPUnit and most of the scanner is written in PHP. In the end I had to inch forward on both tasks simultaneously, with the final benefit that I worked out how to use PHPUnit at the same time as writing the scanner. The instructions for running PHPUnit are <a href="http://www.projectzero.org/wiki/Development/PhpPHPUnit">here</a>. I'm not claiming full support for PHPUnit in Project Zero - but there is enough to be able to test PHP classes as you write them.<br /><br />The application scanner can't say definitely whether an application will run or not, this is because it is using static analysis. However it gives enough information to be able to tell whether it's worth trying or whether you should mail the Project Zero team with your scan results and ask them when they think they will have support for your app :-)Zoe Slatteryhttp://www.blogger.com/profile/13506933003824869000noreply@blogger.com0