RMI Objects Help  
Author Message
rajatag





PostPosted: 2007-2-3 15:00:00 Top

java-programmer, RMI Objects Help Hi,

I'm having a little problem with compiling the RMI Stub. Getting the
following error. Have attached all relevant source code below. Hope
someone can help!

Thanks,
Rajat

ERROR
======
D:\Projects\TreeServer\TreeServer_Stub.java:6: class
TreeServer.TreeServer_Stub must be declared abstract. It does not
define java.lang.Object getChild(char, TreeServer.Nodes, short,
java.lang.String) from interface TreeInterface.TreeInterface.
public final class TreeServer_Stub

===========
TreeServer.java
===========
package TreeServer;

import java.rmi.Naming;
import java.rmi.RMISecurityManager;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

import TreeInterface.*;

public class TreeServer extends UnicastRemoteObject implements
TreeInterface {
static final long serialVersionUID = 10000;

NodeManagement nm = new NodeManagement();

public static void main(String[] args) {
try {
if (System.getSecurityManager() == null) {
System.setSecurityManager(new RMISecurityManager());
}
TreeServer q = new TreeServer();
Naming.rebind("rmi://localhost/TreeService", q); // sets the
// handle
System.out.println("Start Main RMI Server");
} catch (RemoteException er) {
System.out.println("Exception in Main RMI Server: " + er);
} catch (Exception err) {
System.out.println("Exception occurred: " + err);
}
}

public TreeServer() throws RemoteException {
// do the init here.
super();
}

public Nodes getChild(char c, Nodes nod, short difficulty, String
dictionary)
throws RemoteException {
return nm.getChild(c, nod, difficulty, dictionary);
}
}

=============
Nodes.java
=============

package TreeServer;

public class Nodes{
public char letter;

public int first_Child_offset = 1000;

public boolean isTerminal = true;

public boolean isLastSibling = true;

public int NodeNo;

public Nodes() {

}

public Nodes(int NodeNo, char letter, boolean isTerminal,
int first_Child_offset, boolean isLastSibling) {
this.NodeNo = NodeNo;
this.letter = letter;
this.isLastSibling = isLastSibling;
this.first_Child_offset = first_Child_offset;
this.isLastSibling = isLastSibling;
this.isTerminal = isTerminal;
}
}

=================
NodeManagement.java
=================

package TreeServer;

import java.io.*;
import java.util.*;

public class NodeManagement {

public NodeManagement() {
}

public Nodes getChild(char c, Nodes nod, short difficulty, String
dictionary) {

/// this returns a node object. code is just too big to paste here.
}

}

=============
TreeInterface.java
=============

package TreeInterface;

import java.rmi.*;
import TreeServer.*;

public interface TreeInterface extends java.rmi.Remote {

public Nodes getChild(char c, Nodes nod, short difficulty, String
dictionary)
throws RemoteException;
}

============
TreeClient.java
============

package TreeClient;

import java.rmi.*;

import TreeInterface.*;
import TreeServer.Nodes;

public class TreeClient {
TreeInterface rq;

public TreeClient() {
try {
rq = (TreeInterface) Naming.lookup("rmi://localhost/TreeService");
} catch (Exception e) {
e.printStackTrace();
}
}

public Nodes getChild(char c, Nodes nod, short difficulty, String
dictionary) {
try {
return rq.getChild(c, nod, difficulty, dictionary);
} catch (Exception e) {
return (new Nodes());
}
}
}

 
jupiter





PostPosted: 2007-2-4 11:11:00 Top

java-programmer >> RMI Objects Help
"rajatag" <email***@***.com> wrote in message
news:email***@***.com...
> Hi,
>
> I'm having a little problem with compiling the RMI Stub. Getting
> the
> following error. Have attached all relevant source code below.
> Hope
> someone can help!
>
> Thanks,
> Rajat
>
> ERROR
> ======
> D:\Projects\TreeServer\TreeServer_Stub.java:6: class
> TreeServer.TreeServer_Stub must be declared abstract. It does not
> define java.lang.Object getChild(char, TreeServer.Nodes, short,
> java.lang.String) from interface TreeInterface.TreeInterface.
> public final class TreeServer_Stub
>
I don't know RMI, Rajat, but it appears as though TreeServer_Stub
should be declared as abstract, not final. Yes, no?

You either have to declare it as abstract or fulfill the contract
of implementing the methods.

I think.


 
rajatag





PostPosted: 2007-2-4 15:54:00 Top

java-programmer >> RMI Objects Help Not sure about this .... seem to have implemented the methods as
required.

 
 
Patrick May





PostPosted: 2007-2-4 22:29:00 Top

java-programmer >> RMI Objects Help "rajatag" <email***@***.com> writes:
> I'm having a little problem with compiling the RMI Stub.

Can you move to Java 1.5 to eliminate the need for an explicit
stub class?

Regards,

Patrick

------------------------------------------------------------------------
S P Engineering, Inc. | Large scale, mission-critical, distributed OO
| systems design and implementation.
email***@***.com | (C++, Java, Common Lisp, Jini, middleware, SOA)
 
 
Lew





PostPosted: 2007-2-4 22:43:00 Top

java-programmer >> RMI Objects Help "rajatag" <email***@***.com> writes:
>> I'm having a little problem with compiling the RMI Stub.

Patrick May wrote:
> Can you move to Java 1.5 to eliminate the need for an explicit
> stub class?

Java 5 is almost two-and-a-half years old. Java 6 is out. Java 1.3 has already
passed its "End of Life". Java 1.4, over five years old, is next to go.

Enterprises rush out to get the latest version of Windows, of MS development
tools and the like. But they hang on to obsolete and moribund Java versions
longer than the involved managers would keep their cars.

- Lew
 
 
rajatag





PostPosted: 2007-2-4 22:55:00 Top

java-programmer >> RMI Objects Help Hi,

We are using Java 1.5 .... The error comes up when try to run the rmic
command

Regards,
Rajat

 
 
rajatag





PostPosted: 2007-2-4 23:43:00 Top

java-programmer >> RMI Objects Help Hi,

I solved the problem by transferring the Nodes class to outside the
TreeServer package.

Thanks!

Regards,
Rajat


 
 
Esmond Pitt





PostPosted: 2007-2-5 7:16:00 Top

java-programmer >> RMI Objects Help rajatag wrote:

> I solved the problem by transferring the Nodes class to outside the
> TreeServer package.

Actually you solved the problem by forcing TreeInterface.java to be
recompiled. You had some date problem which made the out-of-date object
file with the old definition of getChild() look to be newer than the source:

old definition as per the compiler error message:

Object getChild(char, TreeServer.Nodes, short,
java.lang.String)

new definition as per your source code:

Nodes getChild(char c, Nodes nod, short difficulty, String
dictionary)