/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
RMI og tråde
Fra : Maxi


Dato : 07-10-03 20:49

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?

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

}

public int test()
{
return test;

}

public void run()
{
test = 200;
try
{
Thread.sleep(1000);
}
catch (Exception ex)
{}

test = test +100;
}

public static void main (String[] args) throws Exception
{
ServerImpl milcomServer = new ServerImpl();
Naming.bind ("Server", milcomServer);
}
}

server.java
------------------------------------------
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.*;
import java.util.Date;

public interface Server extends Remote
{

public int test() throws RemoteException;

}

Client.java
---------------------------
import java.rmi.Naming;
import java.util.Date;

public class Client
{

public static void main (String[] args) throws Exception
{

Server server = (Server) Naming.lookup ("rmi://" + "localhost" +
"/Server");

while(true)
{
System.out.println(server.test() );

try
{
Thread.sleep(10000);
}
catch (Exception ex){}
}

}
}
----------------



 
 
Lars M (07-10-2003)
Kommentar
Fra : Lars M


Dato : 07-10-03 21:58


"Maxi" <dilorjaan50@hotmail.com> wrote in message
news:3f8318ae$0$125$edfadb0f@dread11.news.tele.dk...
> 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?
>
> Her er al koden:
[snip]

> {
> Thread t = new Thread();
>
Du skal her angive den Runnable du vil have tråden til at udføre, i dette
tilfælde 'this'.
Thread t = new Thread(this);

Mvh
Lars



Mikkel Bundgaard (07-10-2003)
Kommentar
Fra : Mikkel Bundgaard


Dato : 07-10-03 22:04

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

Trygleren [9000] (08-10-2003)
Kommentar
Fra : Trygleren [9000]


Dato : 08-10-03 11:28

> Så mit råd er først at få det til at fungere hver for sig og derefter
> tilføje RMI

Hvor enig kan man være? =)

--
"Sic gorgiamus allos subjectatos nunc"
Lars 'Trygleren' Winther
www.hesteskelet.dk <-- SpaSS igang igen!



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste