The Artima Developer Community
Sponsored Link

Java Community News
Crispy 1.1 Remote Call Framework Released

2 replies on 1 page. Most recent reply: Aug 29, 2006 2:30 PM by Frank Sommers

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 2 replies on 1 page
Frank Sommers

Posts: 2642
Nickname: fsommers
Registered: Jan, 2002

Crispy 1.1 Remote Call Framework Released Posted: Aug 28, 2006 1:21 PM
Reply to this message Reply
Summary
The Cripsy project aims to simplify Web service client development by exposing remote calls to a client as though those calls were local Java method invocations. The recently released 1.1 version promises better exception handling, as well as validation error wrapping for business methods.
Advertisement
The Crispy project released version 1.1 of its Web service invocation API. The new release features better handling of exceptions occurring in the process of remote calls, as well as validation error wrapping for business methods.

Crispy aims to abstract out the semantics, as well as the syntax, of remote Web service calls, alleviating the need to decide at development time whether to use SOAP, XML-RPC, RMI, or some other remote call framework:

Crispy is a simple Java codebase with an API that sits between your client code and the services your code must access. It provides a layer of abstraction to decouple client code from access to a service, as well as its location and underlying implementation... These calls are simple Java object calls (remote or local calls are transparent).

Crispy presently supports the following protocols

  • Web-Service (JAX-RPC)
  • XML-RPC (e. g., Apache XML-RPC)
  • Burlap and Hessian (Caucho)
  • RMI
  • EJB (with JNDI lookup)
  • JBoss Remoting
  • REST (REpresentational State Transfer)
  • Http invoker (HTTP call with serializable Java objects)
  • CORBA (experimental)

While Crispy's aim of making a developer's life easier seems useful, what do you think of the Crispy project's goal to make all remote calls appear as local method calls? Almost twelve years ago, the key architects of RMI and Jini, including Jim Waldo and Ann Wollrath, pointed out in A Note on Distributed Computing [PDF file] that local and remote call semantics are fundamentally different, and that making remote calls appear as local calls could only lead to unstable systems.

While all the remote method call frameworks Crispy supports share a similar goal, each framework has unique failure handing semantics. Doesn't Crispy's 1.1 release claims of providing protocol-level wrapping still leave the responsibility of handling protocol exceptions with the developer? What do you think of Crispy's goals of hiding remote call complexity from the client?


James Watson

Posts: 2024
Nickname: watson
Registered: Sep, 2005

Re: Crispy 1.1 Remote Call Framework Released Posted: Aug 29, 2006 1:29 PM
Reply to this message Reply
Like that paper you linked to says, it's like Deja Vu all over again.

Frank Sommers

Posts: 2642
Nickname: fsommers
Registered: Jan, 2002

Re: Crispy 1.1 Remote Call Framework Released Posted: Aug 29, 2006 2:30 PM
Reply to this message Reply
> Like that paper you linked to says, it's like Deja Vu all
> over again.


One of the criticisms of RMI, for instance, is what I think its creators may consider RMI's strength, which is that it exposes RemoteException in the remote interfaces, forcing a client developer to deal with that remote failure. I've seen very few examples of people actually knowing how to handle a RemoteException, and I suspect many people just handle it as if it was a RuntimeException - perhaps log it, and then have it bubble up the exception chain.

And handling RemoteException in any other way may not even be a good idea, because writing recovery code can be very tricky. You would want to factor remote failure handling out to a bigger unit of work, i.e., a transaction. Transactions were really invented to deal with failure of a computation, and are much better understood than someone's custom recovery code would be.

When any operation inside a transaction fails, you roll back the transaction. In that case, you don't really care to handle a remote exception, because the failure of that remote call inside the transaction appears to you as a transaction abort. In other words, there is not much point in that scenario to have RemoteException as a checked exception - a runtime remote exception signifying failure would suffice. BTW, note that in EJB 3, they removed the RemoteException declaration requirement from EJB business methods.

Flat View: This topic has 2 replies on 1 page
Topic: Crispy 1.1 Remote Call Framework Released Previous Topic   Next Topic Topic: Is Writing Code a Career Limiting Move?

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use