Skip to content


RESTFul services registry

Today my team started a new Sprint, with several very interesting technical stories. We are progressively migrating an architecture that uses EJB 2.1 for client-server communication and also for transaction control. Our new architecture uses RESTFul services (currently with Jersey 0.7) for communication and Spring + Ibatis underneath.

One of the main issues with the old architecture is the tight coupling between the server and the clients. The way it was designed, our server platform is limited by the oldest client’s platform.  To have more flexibility and loose coupling between server and clients, we decided to have an XML contract in the communication.

In this Sprint we must finish the implementation of a Java client to be distributed to the client applications. We have some optimization and refactoring tasks for this Sprint, and one of them includes a RESTFul registry. We don’t want the clients to have our URIs configured via properties files. This approach limits our flexibility to manage URIs, so a different approach is desirable.

Our client will access a repository to ASK FOR the URI corresponding to a given service AND version. That means: the client willing to access the login service will ask the repository for the URI of this service, in the client’s version. The client could ask for /repository/login/v2.0 and then receive back the URI http://login.globo.com/login/v2.0.

We could have several different versions of the same services, each of them with different contracts. Introducing the repository as an extra layer of indirection, we also have the flexibility to take down several server machines for a while and even update URIs if desired (although that’s unlikely).

I checked Mule Galaxy and WSO2 Registry, but unfortunately they don’t give me what I need. They’re both open source registries, but they index SOAP services and some other things, but not RESTFul URIs. They offer a REST API to interact with their registries (unlike UDDI, which uses SOAP), but don’t index RESTFul URIs at this moment.

After this analysis of both, i decided to implement my own RESTFul registry. It shouldn’t be too sofisticated for this first release, but since it’s a frequent need in my team, I’m probably going to take some off-time to develop a nice registry that might be useful for a wider range of applications. My goal with this post is to gather some requirements for this registry and also its client. Features that would be useful for other people too.

The initial set of requirements that I wanna deliver in this Sprint is:

  • Must have a RESTFul API to search for services
  • Should be possible to browse published services with a web browser (even IE, if you call it a browser)
  • Ajax clients should be able to access the registry easily
  • Java client must run on JDK 1.4 and above
  • Java client should require as few libraries as possible
  • Registry should access the database through a JDBC datasource
  • Offer an authenticated user interface to publish the services (probably with Java EE authentication)

An extra list of desirable features (not for this Sprint) is:

  • Import service URIs from WADL document
  • Allow database access without a JDBC datasource
  • Show history of modifications in the registry
  • Registry should be distributed as .war
  • Offer other ways of authentication

Well, that’s the first ideas that come to my mind. My intention is to implement a nice registry and offer it for everyone to use it. If you think of some other features that would be nice in the registry, please let me know. The idea of this post is to be an asynchronous brainstorm, so please help! :)

Posted in design, java, open source.

Tagged with , , , , , , , , , , , .


4 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. Glen Daniels says

    Hi Bruno!

    I’m Glen Daniels, Director of Java Platforms at WSO2 – noticed your post, and had a few quick comments.

    First off, we’ve had several discussions within WSO2 about how to make the Registry directly support URLs. Although we don’t have any special tooling for this, you can do it now by either using text/plain documents or coming up with your own media type. If you go this route, you’ll just get back a URL as follows:

    request – GET /wso2registry/resources/someURL

    response – “http://whatever.is.stored/here”

    We’ve also talked about being able to store a URL in such a way that a GET of the Registry URL will redirect your browser to the stored URL – we’ve got a number of potential uses for that sort of thing.

    The other important point I’d like to make is that our Registry is very much a true open source project. All the code is Apache-licensed (hence usable without encumbrance), and we would be delighted if you felt like swinging by registry-dev@wso2.com to comment or better yet, help us make it better! We don’t want to dissuade you from doing your own thing (let many flowers bloom!) but it sounds to me like we’re already pretty far down the road you’re about to travel, and we might be able to get there faster together.

    Thanks,
    –Glen

  2. Phillip Calçado "Shoes" says

    I’m not sure if I understood your problem.

    First I question the very registry itself. If I have to know the resource I want by its name (“/repository/login/v2.0″) I can’t really think of any big benefit in adding just some intermediate step to get to the resource. As the client already knows an Id to the service it wants, I would prefer it to know where to find it. Changing URIs in RESTful architectures is a big deal in spite of using a Registry or not so I would expect those to not change that often. When that happens it wouldn’t be a problem to return an HTTP 301 to tell the new location to the clients. I think that would be enough for most cases I’ve ever faced.

    That said, I understand that sometimes functional or nonfunctional (i.e. sysadmins) requirements make it hard to not have a centralised point that knows all services in the ecosystem. In this case I would recommend that instead of going for a specialised solution you apply the same RESTful principle. In the end your Registry is just a RESTful webservice that manages a catalogue of other webservices. It’s probably a very simple CRUD-like implementation.

    cheers

  3. blpsilva says

    Hi Phillip, you’re right about the simplicity. Our requirements are not complicated, and something CRUD-like will do it just fine.

    However, we find interesting to have this intermediate step, because it’ll make easier for us to update and migrate stuff. The client would know the registry URI to ask stuff and some very basic information like the name of the service and the client’s version. The registry would answer with the URI of the service and possibly some configuration parameters that we want to update on the client (we will provide the client for all Java applications).

    At first glance it may seem that putting the registry in the middle is not necessary, but our current architecture (Java contract with EJBs) has a very tough problem with old client applications that are no longer maintained.

    Introducing the registry and the service versioning will give us flexibility to keep avaiable several different versions of the same service. The older applications can keep using their legacy versions. The newer applications can update their services as needed. With our legacy Java client this was not possible in a clean way, and this is a much desired feature.

    Well, that’s about it. I appreaciate your feedback, and will surely consider these discussions to decide the best way to design our architecture.

    Regards,

    Bruno

Continuing the Discussion

  1. Bruno Pereira » Blog Archive » RESTFul Registry update linked to this post on 23/09/2008

    [...] as I said recently, we want to use a registry to keep URIs of our services and also some configurations that are [...]



Some HTML is OK

or, reply to this post via trackback.



  • anxiety medications
  • buy augmentin
  • treatment of congestive heart failure
  • prescription pills
  • skin care treatment
  • naturally lower cholesterol
  • natural teeth whitening
  • how does levitra work
  • hard stool constipation treatment
  • hepatitis b symptoms treatment
  • anti-smoking websites
  • tadalafil professional
  • alcoholism treatment program
  • dog thyroid
  • antibiotics pregnancy
  • generic for zocor
  • body building product
  • hair loss
  • zoloft 50mg
  • buy body building prescription
  • how sleeping helps
  • muscle spasms
  • cancer medication
  • cholesterol zocor
  • parkinson's drugs
  • arrhythmias and treatments
  • muscle pain treatment
  • osteoporosis help
  • cialis cheap
  • natural dog remedies
  • hypertension medications pharmacy
  • elavil dose
  • most effective weight loss products
  • celebrex buy online
  • health product woman
  • living with heart failure
  • weight loss after preganancy
  • diabetes treatment drugs
  • low back pain relief
  • prevention of lung diseases
  • treatment of aids
  • viagra on-line
  • online medications without a prescription
  • buy acto plus
  • antidiabetic medications
  • generic plavix
  • pain med without a prescription
  • levaquin urinary
  • on line pharmacy
  • osteoarthritis medicine knees
  • 5mg cialis generic
  • discount viagra generic
  • canadian pharmacies
  • treating hair loss
  • new drug for arthritis
  • help with snoring problems
  • natural medicine for bone loss
  • pravastatin
  • alcoholism treatment
  • antibiotics no prescription
  • order perscription drugs online
  • discount birth control perscriptions
  • cheap phentermine online
  • arthritis of the neck
  • womens hair loss
  • buy diabetes drugs
  • propecia for hair loss
  • zantac prevacid
  • weight loss supplements that work
  • little penis
  • buy kamagra jelly
  • heart attack woman
  • dog skin remedies
  • cholesterol reducing medicines
  • cost of clomid
  • drugs used for hypertension
  • pain cure
  • over-the-counter diuretics
  • women body building
  • propecia pharmacy
  • levitra facts
  • discount medicine
  • attention deficit hyperactive disorder
  • prescription drugs on line
  • online medication
  • drugs that reduce swelling
  • tramadol generic name
  • cat hairball remedies
  • alternative hair loss cures
  • women taking viagra
  • drugs fda
  • viagra and buy
  • treatment of breast cancer
  • benefits of vitamin d
  • cure acne
  • what are the effects of klonopin
  • list of free prescription drugs
  • anxiety celexa
  • problems breathing
  • prescription clonazepam
  • cure hypertension
  • prescription drugs without prescription
  • infertility treatment
  • muscle burning pain
  • menopause cures
  • med orders
  • dementia treatment
  • types of blood pressure medicine
  • bodybuilding drugs
  • aids treatment
  • buy valium in uk
  • buy 10 mg cialis
  • buy medication
  • metronidazole dose
  • prozac and pregnancy
  • rapid hair loss
  • side effects of valium
  • treatment for hepatitis c
  • sildenafil kamagra
  • viagra with out prescription
  • help for sleeping problems
  • phentermine without prescription
  • fast weight loss cheap pills
  • sleep aids
  • next day medication
  • diet pills without a prescription
  • online generic drugs
  • retin a buy
  • buy viagra soft online
  • control blood pressure
  • online pharmacies no prescriptions
  • withdrawal zoloft
  • sleep disorders
  • cialis cheap
  • blood cholesterol
  • dog antibiotics
  • trental drug
  • where to get viagra
  • cures for hair loss
  • list of antibiotics drugs
  • order diovan
  • claritin versus zyrtec
  • drug discount codes
  • viagra cheap prescription
  • discount stop smoking prescription
  • allegra drug
  • viagra users
  • obesity diet help
  • hair loss product treatment price
  • phentermine pills
  • prozac pill
  • retin a cheap
  • strong erection
  • zoloft discount
  • prescription pain medicines
  • best male enhancement drugs
  • help with snoring problems
  • prevention of lung diseases
  • canada drug pharmacy
  • female sexual enhancement pills
  • where to buy ambien
  • effects side viagra
  • buy all drugs
  • healthy dog foods
  • plan b pregnancy
  • new adhd drugs
  • body building sites
  • cheap pain medications
  • alzheimers drugs
  • levitra effect
  • phentermine 90 pills
  • smoking cessation drugs
  • online drug stores
  • how do you prevent bone loss
  • mexican pharmacy online
  • thyroid pill pet
  • medical heart failure
  • viagra for sale without a prescription
  • diabetes meds
  • cholesterol and health
  • chronic itching and swelling in skin
  • discount anxiety drugs
  • cheap viagra in uk
  • quitting zyban
  • order phentermine diet pill
  • online pharmacy carisoprodol
  • how to relieve back pain
  • medications to help clot blood
  • new adhd drugs
  • what is valium used for
  • taking zoloft
  • doxycycline dose
  • order diovan
  • gaining muscle mass
  • discount medicine
  • coreg dosage
  • drugs for pain
  • cheap no prescription viagra
  • coupon claritin
  • soma price