/ 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
Tråde endnu en gang
Fra : Maxi


Dato : 09-10-03 20:31

Jeg har lavet en tråd i min Test klasse som ikke kommer igang når jeg kobler
det med RMI. Det virker når jeg tester det uden RMI. Jeg har brugt meget
tid på det men kan ikke se hvorfor tråden ikke kommer igang når jeg benytter
RMI for jeg mener at jeg brugt den rette fremgangsmåde.

---------------------Testklasse---------------
public class TestKlasse implements Runnable
{
int tal=16;

public TestKlasse()
{
Thread t = new Thread(this);
t.start();
}

public int tal()
{
return tal;
}

public void run()
{
while(true)
{
tal = tal +1;
try
{
Thread.sleep(2000);
}
catch (Exception ex)
{}
}
}
}

---------ServerImpl------------------------
import java.rmi.*;
import java.rmi.server.*;
import java.util.Date;
import java.util.*;
import java.sql.*;

public class ServerImpl extends UnicastRemoteObject implements Server
{
public ServerImpl () throws RemoteException
{
}

public int test()
{
TestKlasse t1 = new TestKlasse();
return t1.tal();
}


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

----------Server----------------------
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------------------
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(2000);
}
catch (Exception ex){}
}

}
}





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


Dato : 09-10-03 20:41


"Maxi" <dilorjaan50@hotmail.com> wrote in message
news:3f85b76a$0$45323$edfadb0f@dread11.news.tele.dk...
> Jeg har lavet en tråd i min Test klasse som ikke kommer igang når jeg
kobler
> det med RMI. Det virker når jeg tester det uden RMI. Jeg har brugt meget
> tid på det men kan ikke se hvorfor tråden ikke kommer igang når jeg
benytter
> RMI for jeg mener at jeg brugt den rette fremgangsmåde.
[snip]
> public class ServerImpl extends UnicastRemoteObject implements Server
> {
> public ServerImpl () throws RemoteException
> {
> }
>
> public int test()
> {
> TestKlasse t1 = new TestKlasse();
> return t1.tal();
> }
>
Du instantierer jo en ny TestKlasse for hver test() kald.
Dette giver ikke den ønskede funnktionalitet, og det "leaker" en tråd for
hvert kald!

Prøv noget i retning af:
public class ServerImpl extends UnicastRemoteObject implements Server
{
private TestKlasse t1;
public ServerImpl () throws RemoteException
{
t1 = new TestKlasse();
}

public int test()
{
return t1.tal();
}

Mvh
Lars




Maxi (09-10-2003)
Kommentar
Fra : Maxi


Dato : 09-10-03 22:09

Det var lige her fejlen lå. Mange tak for hjælpen :)

"Lars M" <lamosfjern@dettepost8.tele.dk> wrote in message
news:3f85b9c0$0$30081$edfadb0f@dtext01.news.tele.dk...
>
> "Maxi" <dilorjaan50@hotmail.com> wrote in message
> news:3f85b76a$0$45323$edfadb0f@dread11.news.tele.dk...
> > Jeg har lavet en tråd i min Test klasse som ikke kommer igang når jeg
> kobler
> > det med RMI. Det virker når jeg tester det uden RMI. Jeg har brugt
meget
> > tid på det men kan ikke se hvorfor tråden ikke kommer igang når jeg
> benytter
> > RMI for jeg mener at jeg brugt den rette fremgangsmåde.
> [snip]
> > public class ServerImpl extends UnicastRemoteObject implements Server
> > {
> > public ServerImpl () throws RemoteException
> > {
> > }
> >
> > public int test()
> > {
> > TestKlasse t1 = new TestKlasse();
> > return t1.tal();
> > }
> >
> Du instantierer jo en ny TestKlasse for hver test() kald.
> Dette giver ikke den ønskede funnktionalitet, og det "leaker" en tråd for
> hvert kald!
>
> Prøv noget i retning af:
> public class ServerImpl extends UnicastRemoteObject implements Server
> {
> private TestKlasse t1;
> public ServerImpl () throws RemoteException
> {
> t1 = new TestKlasse();
> }
>
> public int test()
> {
> return t1.tal();
> }
>
> Mvh
> Lars
>
>
>



Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408196
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste