RMI Objects Help

R

rajatag

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());
}
}
}
 
J

jupiter

rajatag said:
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.
 
P

Patrick May

rajatag said:
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
 
L

Lew

Patrick said:
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
 
R

rajatag

Hi,

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

Regards,
Rajat
 
R

rajatag

Hi,

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

Thanks!

Regards,
Rajat
 
E

Esmond Pitt

rajatag said:
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)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,015
Latest member
AmbrosePal

Latest Threads

Top