[Java] RMI clients statisch een poort laten gebruiken *

Pagina: 1
Acties:

  • Rempage0611
  • Registratie: December 2000
  • Laatst online: 23-09-2025

Rempage0611

9405 WP @ 2x SMA Sunny Boy

Topicstarter
Haloa, mijn probleem is het volgende:

Ik heb een linux bak met daarop een rmiregistry, deze draait op 1099, en er draait ook een server java programma op deze bak. Zover alles goed.

Het probleem is dat de clients dynamisch een poort innemen, iets wat ik ivm m`n firewall niet wil. Als ik de firewall uitzet werkt het wel, maar das uiteraard niet de oplossing.

De server code is als volgt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.rmi.*;
import java.util.Vector;
import java.net.ServerSocket; 


public class Server
{
static Vector resetInfo;
static boolean reset=false;

        public static void main(String[] argv)
                {
                System.setSecurityManager(new RMISecurityManager());
                try
                {


                   Impl implementation = new Impl("myRMIImplInstance");
                   Naming.rebind("rmi://127.0.0.1:1099/myRMIImplInstance" , implementation);
                   while(true)
                   {
                      Thread.sleep(1000);
                      resetInfo=implementation.getReset();
                   }

                        }

                catch (Exception e)
                        {
                        System.out.println("Exception occurred: " + e);
                        }
                }

}


De client is als volgt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import java.rmi.*;
import java.rmi.registry.*;
import java.rmi.server.*;
import java.util.Date;
import java.util.Vector;
public class Client
{
static Vector resetInfo;
        public static void main(String[] argv)
                {
                System.setSecurityManager(new RMISecurityManager());
                if (argv.length != 2)
                        {
                                                System.exit(0);
                        }
                String hostIP = argv[0];
                String clientName = argv[1];
                try
                        {
                           while (true)
                           {
                              TaskBag myServerObject = (TaskBag) Naming.lookup("rmi://"+hostIP+":1099/myRMIImplInstance");
                              resetInfo=myServerObject.getReset();
                              {
                                  myServerObject.resetDone();
                              }

                            }
                       // System.out.println("Date on server is " + d);
                        }
                catch(Exception e)
                        {
                        System.out.println("Exception occured: " + e);
                        System.exit(0);
                        }
                System.out.println("RMI connection successful");
                }


}


En de implementatie class

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
import java.util.Vector;

public class Impl extends UnicastRemoteObject implements TaskBag
{
   Vector resetInfo;
        public Impl(String name) throws RemoteException
                {
                super();
                resetInfo = new Vector(2);
                try
                        {
                        Naming.rebind(name, this);

                        }
                catch(Exception e)
                        {
                        System.out.println("Exception occurred: " + e);
                        }
                }
        }
 }


Hoe krijg ik het voor elkaar dat de clients een statische poort krijgen?

Thnx.

ps. sorry van de layout

[ Voor 4% gewijzigd door Rempage0611 op 15-08-2003 02:37 ]


  • B-Man
  • Registratie: Februari 2000
  • Niet online
Zie http://groups.google.nl/g...ws.boulder.ibm.com&rnum=1

Je kunt RMI over HTTP tunnelen, is dat een oplossing voor je?

Voorzover ik weet worden de daadwerkelijke connectie-poorten dynamisch toegewezen, en kunt je -buiten een HTTP tunnel- niet instellen welke poort gebruikt moet worden.