2011-12-17 5 views
1

Java RMIを使用しているサーバーとクライアントがあります。 簡略化のため、Task(iTask)を返してiTaskを受信するサーバ上のメソッドです。例えば 、サーバー:

interface iTask extends Remote{ 
    void publicMethod(); 
} 

class Task extends UnicastRemoteObject implements iTask 
{ 
    public void publicMethod(){...} //interface 
    void packageMethod(){...} //not interface 
} 

そして、いくつかのメソッドがクラス(何でもかまいません):クライアントで

iTask getTask(){ 
    return new Task(); 
} 

void doSomethingSecret(iTask task){ 
    Task needthis = (Task)task; //BOOM! ClassCastException: $Proxy9 cannot be cast to nextQuest.server.Task 
    needthis.packageMethod(); // I need this... 
} 

を、私はちょうど

iTask tsk = abc.getTask() 
def.doSomethingSecret(tsk); 

ABCを行うdefはリモートオブジェクトです!

"packageMethod"を呼び出す方法はありますか?どうもありがとうございます。 Mike S.(cz)

答えて

1

できません。それをリモートインターフェイスにキャストする必要があります。 は元のクラスではありません。それはプロキシです。呼び出したいメソッドがある場合は、そのメソッドをリモートインターフェイスで定義する必要があります。

関連する問題