RSS Feed Subscribe to RSS Feed

 

Dynamically set Jenkins node

This post explains how to dynamically/programmatically set the node a Jenkins/Hudson job will run on. This is relatively easy to do statically, using the NodeLabel Parameter Plugin, but trickier to do programmatically.

(more…)

Tags: , , , , ,

ThoughtWorks Technology Radar

ThoughtWorks Technology Radar is out and definitely worth a read. Although I follow many of the ThoughtWorks folks, like Martin Fowler, Neal Ford and Jez Humble, this is the first time I have read their tech radar, but it won’t be the last.

(more…)

Tags: ,

Cloudbees

I’ve been using CloudBees a lot recently for deploying to ‘the cloud’.
There are a couple of things that attract me to CloudBees…
Read more

Tags: , , , , ,

Handsontable ‘Spreadsheet’ talking to SpringMVC

Handsontable is an Excel-like data grid utilizing JQuery. For example, it provides the ability to copy and paste directly to & from Excel. Handsontable itself if very easy to setup. The part I struggled with was passing the data to SpringMVC. So, this post shows how to send data from a Handsontable data grid on the client to a SpringMVC server.

Read more

Tags: , , , , , , ,

Spring MVC Hello World with Continuous Deployment

Oh dear, yet another ‘Hello World!’. But although the functionality is trivial, this little SpringMVC project is complete enough for me to use as a template to bootstrap more complex projects. It consists of:

  • HTML/JSP client
  • SpringMVC server using a Controller/Service/DAO design
  • Maven for build and dependency management

This is an updated version of an older project I created, with the following enhancements:

  • Added a full suite of automated tests (unit, integration and browser based)
  • Added placeholders for JavaScript and images (both can be a little tricky to put in the correct place with SpringMVC)
  • Incorporated into a continuous deployment environment

More details below, but you can find the full source code on this GitHub repository

(Previously I had the code deployed on a CloudBees instance at http://springmvc.shaunabram.cloudbees.net, but CloudBees have since unfortunately shut down their free tier).

Read more

Tags: , , , , , , , , , , ,

Running Jenkins jobs sequentially

I am a huge fan of the Jenkins continuous integration tool, using it not just for continuous integration, but also continuous delivery, server monitoring and performance testing.

Although using Jenkins is normally a breeze, I recently had a need to run several Jenkins jobs sequentially and it proved a little trickier than expected, so I thought worth posting about.

Basically, I wanted to call a database backup job before calling the deploy build job, which obviously shouldn’t be done in parallel. After a bit of research, I found a number of ways to have Jenkins run jobs sequentially.
Read more

Tags: , , , , ,

First experiment with Cloud Foundry

I’m at a Cloud Foundry conference today. Cloud Foundry is an open source “cloud” platform as a service (PaaS).

I decided to dive in and try to deploy the server we developed at GiveCamp last week for the ‘Big Brothers and Big Sisters’ charity project. I started by mavenizing the project, so I had a war to deploy.

Then, I created a free Cloud Foundry account, installed their ‘vmc’ command line tool and ran the ‘vmc push’ command to deploy my way to the cloud. And it worked straight off! Don’t you just love it when tools just work?

Our webservice is now running on a remote server that can be accessed by the iPhone and Android apps the team is developing. We still have some database work to complete, but this feels like a nice step forward.

In the mean time, I am now officially a Cloud Foundry fan…

Tags: , , ,

GitHub SSH key audit

Got this error recently when trying to do a fetch from github in Intellij:

fatal: The remote end hung up unexpectedly
ERROR: Hi sabram, it’s GitHub. We’re doing an SSH key audit.

Vague error but finally figured out that it is related to Github’s recent security compromise and that I needed to verify my SSH keys.

Couldn’t find much about the error on Google, so maybe this post will help someone else!

Tags:

Swing, Webstart and Maven – An Example

Following my introductory rant on the subject, this post is a working example of using Swing and Webstart with a multi-module maven project.

Complete source can be downloaded from here.
Read more

Tags: , , , , ,

Swing, Webstart, Maven – a difficult combination

I have spent the last few weeks struggling with a Swing app that I wanted to deploy via Webstart and build using Maven, via the the Webstart Maven Plugin. It has been a hugely painful process. I found the plugin documentation difficult to follow, struggled to understand the subtle config differences in jnlp, took longer than I expected to get jar signing working, had problems with webstart caching and suffered through a plethora of vague error messages. I found this posting where the author vowed to never use Webstart again, and I can empathize. Postings of people asking for help with Webstart problems certainly aren’t difficult to find. Using maven to build the jnlp provides some conveniences, but introduces new problems too. Overall, I’d prefer to avoid using a Swing/Webstart/Maven solution again.
Read more

Tags: , , , , ,

JavaOne: Comparing Java Web Frameworks

The first talk I attended at this year’s JavaOne was “Choosing Your Java Web Framework” by Richard Pack from salesforce.com

Overall, I found this a really interesting talk. It was lacking in any sales pitch, nor did it have the unquestioning devotion to one particular framework that I felt some of the Java FX talks had. Instead it seemed like an unbiased look at web frameworks in general and a handful of frameworks in more detail, based on Richard’s extensive and hands on experience and SalesForce and Hyperic.
Read more

Tags: , , , , , , ,

Spring MVC Hello World

There is a good Getting Started with Spring MVC blog post over on the Spring team blog.

I have created several Spring MVC projects for both work and play, and am attaching my own simple version of the HelloWorld example here, based on the Spring blog example.
Find my maven ready source here.
Like my previous JSP/Servlet example, I find these templates useful for getting prototypes up and running.

Tags: , , , , , ,

Spring Enterprise Recipes

I recently found out that this book has just been published:
Spring Enterprise Recipes: A Problem-Solution Approach
It is written by Josh Long and Gary Mak. I have heard Josh speak at several conferences, followed his articles on TheServerSide (as well as on his blog) and recently got to hang out with him at the SoCal Code Camp. He is very knowledgeable about Spring and enterprise integration and since Gary is already an author of one of the leading Spring books (Spring recipes), this should be a great book. I have just ordered my copy and will try to post a review when I am done with it.

Tags: ,

Data binding in Spring MVC

Two of the most important tasks carried out by Spring MVC when you submit a form are Data binding and validation.
The following article discusses data binding, including the use of custom PropertyEditors, and some of the options available for registering such editors. Most of the information discussed applies to Spring in general, but its application in Spring MVC is my primary interest.

In a future article I would like to discuss validation including the use of custom error messages.

Note that these notes relate to version 2.5.6 of Spring, the latest production code at time of writing, and depend heavily on the corresponding Spring reference docs.

Read more

Tags: ,

Apple’s MobileMe finally gets Killer App

It seems that Apple’s MobileMe has finally got it’s killer app in the form of its new ‘Find My iPhone’ feature. I have never been tempted to subscribe to MobileMe so far as none of the features seemed too attractive. For example, is the automatic synchronization of contacts really a big deal when the contacts synch up just fine each time I connect to my MacBook anyway? However, as someone who has lost an iPhone before, the ability to track it down (at least to an approximate area) is very attractive. And although experiences like this are probably somewhat ill advised, it is still a very cool story!

Tags: ,