On Sun, 28 Oct 2001 20:39, Paul Hammant wrote:
> Peter,
>
> >>>Even if we were to create
> >>>Avalon Method Invocation we would still need a AMIException for the same
> >>>use anyways,
> >>
> >>Yes but extend RuntimeException not Exception.  GLUE does this and it is
> >>seamless.
> >
> >I like the fact that Remote is not a runtime exception. It forces the
> >developer to write code that behaves nicely in a distributed environment.
> > You should be catching this down low and dealing with them gracefully
> > IMHO ;)
>
> It forces the developer to catch RemoteException at each invocation of a
> remote method.  What to do with it? 

I usually do something like

Client.remoteException( "Description of what I was doing", 
                        myRemoteException );

> I catch a lot of coders declaring
> it in throws to decrease the amount of code they have to write, suddenly
> you find throws RemoteException proliferating around a system.  What to
> do with it? 

Bad programmers will write bad code regardless of what you do. 

> Try again? Hmm, Typically people have new exceptions like
> "QuoteServiceFailedException" and wrap the remote in that before
> throwing it.

Wrapping exceptions before propogating them up is a standard practice. I do 
it all through my code and avalons code ;)

For instance something I was debugging the other day had exceptions nested 
like

ActionException -> PersistenceException -> SQLException

>  I've had nothing but misery since 98 with RemoteException.
>  It's a major pain in the ass that, strictly speaking, you can't even
> test.  No I really do prefer handling wobbly connections at a single
> handler level in an API.

See above for an example of that. However choice - especially when it is more 
than a simple client-server setup is important.

> >They fixed this in EJBs because now EJBs no longer have to implement the
> >remote interface - yaya!!!!! I have thought about doing a
> > proxy/wrapper/stub compiler that just exported local version and was
> > automagically generated. In a perfect world the setup per class would be
> > something like
> >
> >interface Foo
> >{
> >  void doStuff();
> >}
> >class FooImpl implements Foo {}
> >
> >interface RemoteFoo extends Foo
> >{
> >  void doStuff() throws RemoteException;
> >}
> >class RemoteFooStub extends RemoteObject implements RemoteFoo { ]
> >
> >The first two would be human created while the second two would be
> > computer generated.
>
> I Just don't like it Peter.

I know ;)

> Now RMI should continue to be used for client to server comms (JAMES and
> FTPServer use it for admin), but I really donlt think we need it for the
> inter-sar communication.  Sun, sooner or later, are going to come along
> with a fresh replacement RMI.  They are not adverse to such efforts
> (look at nio package in JDK1.4).  That replacement is going to be a lot
> easier to use because it will be seamless.  The RMI registry needs an
> overhaul too.

RMI registry is only a toy API that grew as is some of the infrastructure. 
However what I am talking about is the model. Whether it actually uses any of 
the RMI code or rewrites it all (ie RMI/IIOP, RMI/JAXM, RMI/JRMP in EJB 
servers, etc). I still think that being forced to deal with errors where they 
are likely to occur is a good thing.

I guess we will have to agree to disagree ;)

-- 
Cheers,

Pete

When a stupid man is doing something he's ashamed of, he always 
declares that it is his duty.
                                         George Bernard Shaw 

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to