Thursday, July 12, 2007

SAT for Eclipse 3.3 (Europa)

Now that Eclipse 3.3 (Europa) is released, SAT has been rebuilt and a link to the build has been posted on the SAT Downloads section.

Monday, May 14, 2007

SAT Steps Up to Eclipse 3.3 M7

As the release date of Eclipse 3.3 quickly approaches, SAT has stepped up to M7. The SAT Downloads section, on the right, now includes links for both Eclipse 3.2.2 and Eclipse 3.3 M7.

Eclipse 3.3 is shaping up to be an important release for everyone that cares about OSGi. The PDE team has out done themselves by addressing over 900 bugs reports. I am particular pleased to see strides towards making the PDE tooling more friendly towards the needs of OSGi developers. Here's a list of PDE bug reports in which I have been involved.

If you're just getting to Eclipse 3.3 now, be sure to check out the New and Noteworthy document for M7 and for the earlier milestones.

Saturday, April 21, 2007

The Simplest Thing That Could Possibly Work

Motivated by a recent thread on the osgi-dev mailing list, here's the infamous Buns 'n Wieners example of building an OSGi service-oriented bundle activator using SAT.

This is a good showcase for SAT since it demonstrates the simplicity of building a bundle that imports multiple dynamic services as a prerequisite to exporting a service.

public class Activator extends BaseBundleActivator {
private HotdogVendor vendorService;
public Activator() {
vendorService= new HotdogVendor();
protected String[] getImportedServiceNames() {
return new String[] {
protected void activate() {
System.out.println("Hotdog Vendor has been activated");
BunService bunService = getBunService();
WienerService wienerService = getWienerService();
vendorService.bind(bunService, wienerService);
addExportedService(VendorService.SERVICE_NAME, vendorService, null);
protected void deactivate() {
System.out.println("Hotdog Vendor has been deactivated");
private BunService getBunService() {
return (BunService) getImportedService(BunService.SERVICE_NAME);
private WienerService getWienerService() {
return (WienerService) getImportedService(WienerService.SERVICE_NAME);

  • The method getImportedServiceNames() returns the names of the imported services. The SERVICE_NAME field is the fully qualified name of the service interface and is an SAT convention.

  • The methods getBunService() and getWienerService() are helper methods; another SAT convention.

  • The activate() method is a hook method that only gets called when all the bundle's imported services have been acquired. When called from the activate() method, the getBunService() and getWienerService() method are guaranteed to not return null.

  • The deactivate() method is a hook method that only gets called when the bundle loses one of its imported services.

  • The use of a bind method in activate() and an unbind method in deactivate() is another SAT convention that simplifies the binding and unbinding of imported services. It would be equally valid to call setter methods instead.

  • The methods activate() and deactivate() are a pair and will get called multiple times during the lifetime of the bundle as its imported services change.

Historically this has always been the first example used to teach SAT since everyone understand that you're not selling hotdogs without both buns and wieners!

Credit for this example goes squarely to Paul Vanderlei, my colleague and buddy at IBM. Paul has been involved with SAT from the very start while developing it at OTI and later at IBM. Paul is the first person to tell me when "it's too hard for the caveman". Much of SAT's simplicity is thanks to Paul and his alter-ego, the caveman, who has existed long before the Geico ad campaign.

To learn more about SAT, check out the introductory tutorial.

Monday, April 2, 2007

Implementing Equinox's CommandProvider to Extend the Console

The Equinox console can be extended by any bundle that registers a CommandProvider service. SAT now includes such a bundle that adds the following commands to the console:

---SAT Bundle Dependencies---
  depend <id> - show dependents the specified bundle
  dependall <id> - show all dependents of the specified bundle
  prereq <id> - show prerequisites of the specified bundle
  prereqall <id> - show all prerequisites of the specified bundle
---SAT Logging---
  loglevel {(debug|info|warning|error)} - query and control log level
  trace {(on|off)} - query and control tracing

The bundle is called org.eclipse.soda.sat.equinox.console.cmdprov, and is optional and specific to the Equinox console.

Chris Aniszczyk has a good article on developerWorks titled "Explore Eclipse's OSGi console".

Thursday, March 29, 2007

Service-Oriented Device Architecture at

The Eclipse Open Healthcare Framework project has recently added a page that describes SODA, of which SAT is a part.

"Service-Oriented Device Architecture (SODA) is an initiative to standardize and simplify the integration of devices with enterprise solutions by introducing a services-based programming model. SODA leverages existing and emerging standards from both the embedded-device and IT domains to provide well-defined interfaces for hardware devices to a service-oriented architecture (SOA)."

On the page you'll also find links to Device Kit and SAT resources, and you can find the official OHF downloads for SODA here.

Monday, March 12, 2007

A Successful OSGi Tutorial at EclipseCon

The EclipseCon tutorial Building Service Oriented Bundle Architectures was a huge success and generated a lot of positive publicity for SAT. At the tutorial the attendees learned how to build service-oriented bundles and worked with both fake and real hardware devices.

If you missed the tutorial, the materials are available here at the Band XI site.

Thank you John, Brett, Patrick, Paul, Randy, Bill and Kristen for developing the materials and doing such a fantastic job at the conference. See you next year!

Saturday, March 3, 2007

EclipseCon Tutorial: Building Service Oriented Bundle Architectures

Going to EclipseCon next week? Then be sure to sign up for the tutorial Building Service Oriented Bundle Architectures to learn more about how to use SAT.

The tutorial, presented by BandXI International and IBM, is going to a great opportunity to learn more about how best to use Eclipse to build OSGi applications and the benefits of being service oriented.

Friday, March 2, 2007

SAT is Now Available at

The Service Activator Toolkit source is now available in the Open Healthcare Framework technology project of

SAT started life in 2001 as an IBM/OTI technology developed to make building OSGi service-oriented bundles easier. From its inception SAT has always been about writing less OSGi plumbing code, leaving more time to worry about writing the business logic of your application.

An Eclipse 3.2.2 compatible binary download of the latest runtime and tooling update sites is also available. Once you have installed the tooling into your Eclipse IDE, read the documentation for instructions on how to use the runtime bundles. For more information on SAT, take a look at the documentation online.

Planet Eclipse

Jazz Community News