Gervas Douglas wrote: > --- In [email protected] > <mailto:service-orientated-architecture%40yahoogroups.com>, Patrick May > <[EMAIL PROTECTED]> wrote: > > One day a few weeks after the new system was in place, the head of > > Web sales came running down to complain that "The OMS is broken! We > > haven't received any orders from the Web in 18 hours!" I looked in > > the grid and found a large number of orders waiting to be processed by > > the, you guessed it, ERP system. Once quick phone call to ask ops to > > reboot the ERP app and we were back in business without losing a > > single order. > > > > That's the kind of capability that businesses will pay for. > > This recalls observations I have made in the distant past that rather > than expose Jini/JavaSpaces in the raw to unimaginative programmers, > it would have been more fruitful to dress the technology up in a form > with whose interfaces they were more philosophically familiar. Mind > you, that was before middleware had sematically transmogrified into > that vague all-embracing entity known as an ESB...
I don't think that the issue is anything more complex than a standard API. If there is a pluggable stack mechanism wrapped with an interface specification, then implementation is abstracted and developers can have at it. On of the powers of Java mobile code is the use of a "SmartProxy". A downloaded SmartProxy does things in the client space, that don't have to be visible to the programmer. As an example, the "listener" pattern is common in eventing system. You need to register a listener, process some events, and the deregister when you are done. I have a smart proxy listener in a production system that uses UDP for the events because they are informative, but not necessary for the system to operate. They go out fast enough, that the "queuing" of a TCP stream would delay "timing" of events arrival under certain loads. The "addListener()" and "removeListener()" methods mediate the use of a Lease to let the server know that the client is no longer there since their won't be a "SocketException" from the UDP socket on write. The client doesn't ever see the "Lease", it just adds its listener, and removes it. I also use the Java languages GC interfaces to "lost references" to cancel leases if the client is no longer referencing the smart proxy. If the client shutsdown without removing the listener, the lease expires on the server eventually and it deregisters the listener. Not every programming platform has these kinds of facilities, and will have a more difficult time using a system designed to operate with this kind of responsibility control. Gregg Wonderly
