
Changes since Last release
Changes in 1.3.b1 (96/09/13) since 1.2.1a
- Now horbc doesn't rename Server.run() to Server._run(). You have to
change your code if you call _run() remotely.
- You don't need to call a constructor of a remote object explicitely.
If you want, you can call a constructor after creating a proxy.
- HORBException becomes a subclass ob java.lang.RuntimeException. Thus,
you don't need to catch or declare HORBException explicitely. Remote methods
will never return IOException. NetException which is a subclass of HORBException
will be thrown in case of network error.
- Stub methods in a proxy are synchronous. Thus a proxy can be shared
by multiple threads. If you don't like synchronous methods for speed, compile
a server class with -nomethodsynch option with horbc.
- You don't need to instantiate horb.orb.HORB. But, the horb.orb.HORB
class will be removed in HORB 1.4, please remove "new HORB(param)".
To set default port number for outgoing connections, use "HORBClient.setPort(portnumber)"
instead of "new HORB(portnumber)". See examples/clientServer/Client2.java
- If your program invokes a HORBServer by "new HORB(true, portnumber)",
use "new HORBServer(portnumber, "HORBServerName", null)
instead of that.
- IOCI will be reorganized in HORB 1.4 for extensibility and durability.
- "new Server_Proxy()" can take a URL string as a parameter
as well as HorbURL. For example, you can write "new Server_Proxy("horb://host.etl.go.jp:8444");".
The URL string must begin with "horb:".
- Static variables are not copied during object passing.
- Transient variables must be declared as 'transient'. 'foo_Transient'
notation is obsolete.
- Some methods in horb.orb.HORBAgent changed their method name. getClientNetAddress()
-> getClientNetAddress_Local(), getClientINetAddress() -> getClientNetAddress_Local(),
getClientHostName() -> getClientHostName_Local().
- SOCKS is supported by the class Socket of JDK 1.0.2. Your standalone
HORB client can connect outside over a firewall, if you have a SOCKS server
on your firewall machine. I don't now where the documentation is. But I
found such coding in java.net.PlainSocketImpl.java or something like that.
Changes in 1.2.1a (96/08/30) since 1.2.1
- Now HORB works with Java JDK 1.0.2. Three 'public' were added in IOCICommon.java
so as to avoid runtime error.
- Proxy._wait() returns false when it timeouts.
Changes in 1.2.1 (96/05/15) since 1.2 (96/03/23)
- Persistent objects and invitation works fine.
horb.orb.FileIOCI and horb.orb.ObjectTable were compiled without -O option
of javac. javac in Java JDK 1.0.1 has a bug around optimization.
- HORBServer.startACL() becomes static.
Changes in 1.2 (96/03/23) since 0.2 (95/12/23)
- support inheritance in remote method call.
- support inheritance in object passing.
- add horbstat command.
- add HORBAgent interface for remote server management.
- horb -v displays stack dump of remote exception.
- object passing passes protected and static variables too.
- HORB.registerInstance() was moved to HORBServer.registerObject().
- a horb process can have multiple horb servers.
- ThreadServer catches ThreadDeath for cleanup.
- HORBServer has many local services such as debugging() and setDebug().
- Proxy._getThreadName() returns the thread name of the corresponding
server thread.
- stop, suspend, resume HORB threads.
- add distributed access control list.
- daemon object can specify port number. 0 for any port.
- hidl was renamed to horbc.
- horbc -delete works.
- constructor must be called after creating a remote object.
- _threadEndHook() is called when a client gone if the method exists.
- if remote object has explicit finalize() method, it can be called remotely
by _finalize() of the corresponding proxy object. finalize() might be called
twice.
- horbc -ignoresuper option ignores super class.
- Foo_Implement.java is renamed to Foo_Impl.java.
- IOCInterface is renamed to IOCI.
- BasicIOCI -> IOCICommon + BasicIOCI.
- add remote object storage.
- you can pass arbitrary structured objects.
- add fofrun command for persistent programs.
- ORB ignores reconnect failure during passing a remote object reference.
- BasicIOCI passes its signature and version number for version checking.
- horb -conf option for configuration file.
- server can call methods of applets by the invitation mechanism.
- Hooks. _reviveHook(), _freezeHook(), _threadEndHook().
- remote run() method should be called via _run().
- add asynchronous method call.
- version checking between proxy and skeleton. add version number by
horbc -major 3-minor 2.
- username, password check.
- toString() cannot be used as a remote method.
- Now you can send an array including nulls.
- add strict flag in IOCI. if this flag is false (default), ORB ignores
proxy not found error.
- String can be passed as an argument that is typed as Object.
- HorbURL(null, null) means "horb://localhost/".
- RemoteException.toString() returns the original message of remote exception.
- class name is checked during connectObject.
- BasicIOCI can be a superclass.
- proxy class inherits throws clauses from interface or class.
- horbc can generage proxy class from an abstract class.
- now horbc -d option works.
- source of orb and horbc was moved to classsrc.
Changes between Alpha 0.1 (95/11/29) to Alpha 0.2 (95/12/23)
---- Bugs Fixed ----
- throws clauses were ignored
- Class horb.idl.ClassFile.ClassFile now supports throws clause of method
definitions.
- hidl compiler on solaris couldn't call javac compiler
- Now hidl on Solaris can call javac compiler. Thanks, Xavier. hidl calls
class sun.tools.javac.Main instead of javac command.
- hidl causes class "foo_Implement" not found error when an
interface is used to pass an object.
- A skeleton class instantiates foo_Implement not by new but by Class.newInstance().
- proxy methods in proxy classes throw HORBException and IOException.
- Since Java JDK Beta2 doesn't allow ignoring exception, proxy methods
throws HORBException and IOException.