On Tue, 07 Oct 2003 21:49:03 +0200, Maxi wrote:
> Jeg forsøger at få en simpel RMI eksempel til at virke. Det er meningen at
> på serveren skal jeg implementere en tråd der køre efter en tids mellemrum.
> Men tråden køre slet ikke i min "serverimpl.java" filog jeg kan ikke se hvad
> det skyldes. Nogen der har en ide om hvad det kan være?
Se kommentarer i koden (det er lang tid siden jeg har rodet med tråde og
RMI, så min svar skal nok rettes lidt til).
> Her er al koden:
>
> ServerImpl.java
> ------------------------------------------------------------
> import java.rmi.*;
> import java.rmi.server.*;
> import java.util.Date;
> import java.util.*;
> import java.sql.*;
>
> public class ServerImpl extends UnicastRemoteObject implements Server ,
> Runnable {
> int test;
>
> public ServerImpl () throws RemoteException
> {
> Thread t = new Thread();
> t.start();
> }
Her opretter du et nyt tråd objekt, som ikke har nogen sammenhæng med
ServerImpl. Da du erklærer at ServerImpl implementerer Runnable regner jeg
med at du mener nedenstående (this er givet med som argument til
konstruktøren).
public ServerImpl () throws RemoteException {
Thread t = new Thread( this );
t.start();
}
> public int test() {
> return test;
> }
>
> public void run() {
> test = 200;
> try
> {
> Thread.sleep(1000);
> }
> catch (Exception ex)
> {}
>
> test = test +100;
> }
Jeg er ikke helt sikker på, hvad du ønsker af din tråd, men ovenstående
kører kun én gang, når run bliver kaldt. Dette hænger ikke helt sammen med
din klient, som vi blive ved med at få 300 returneret (måske 200 første
gang). Det er hellere ikke så pænt, at du fanger Exception i stedet for
InterruptedException men dette er vist en smagssag.
<SNIP resten af koden>
Så mit råd er først at få det til at fungere hver for sig og derefter
tilføje RMI
--
Mikkel Bundgaard
Student at IT University of Copenhagen
Codito, Ergo Sum