[RCP] Per Button einen RMI Server starten bzw. beenden

Prengepower

Mitglied
Hi!

Ich stehe vor einem GROßEN Problem...
Nachdem ich mich hier im Forum stark über RMI informiert hab und nun auch schon selbst erfolgreich ein paar Tests abgeschlossen hab, entstand hier schon wieder ein ziemlich großes problem!

Über einen Button in einer View wollte ich den Server starten. Das Problem dabei ist, dass auf den Button nichts reagiert. Absolut garnichts! Wenn ich den Server in einem extra Projekt starte funktioniert alles bestens. Ich kann in den Button auch einfach nur einen System.out.Println-Befehl schreiben und nichts erscheint auf der Konsole o_O

Begreife das nicht!

Wollte jetzt den Server und den Client halt jeweils in einem Thread starten lassen mit

Code:
server.start();
server.join();
client.start();
client.join();

Hier mal der Server-Thread:

Code:
import java.net.MalformedURLException;
import java.rmi.*;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class Server implements Runnable{
	@Override
	public void run() {
		try {
		LocateRegistry.createRegistry(Registry.REGISTRY_PORT); //RMI-Port 1099
		Registry registry = LocateRegistry.getRegistry();
	  
		Remote remote = new ManagerImpl();
		
			Naming.rebind("server", remote);
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		System.out.println("Server gestartet ...");
	}
      
}

Hier der "Inhalt" der View wo der Server aufgerufen werden soll (Client ist noch nicht implementiert):

Code:
import java.io.File;
import java.io.IOException;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.part.ViewPart;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.swt.widgets.TreeColumn;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;

import de.hwrberlin.jemm.Datei;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import com.swtdesigner.SWTResourceManager;

public class Browser extends ViewPart {
	public static final String ID = "de.hwrberlin.jemm.views.Browser";
	private Text text;
	private static Tree tree;
	private static TreeItem treeItem;
	private Text text_1;
	public static Label lblStatus;
	public Thread server = new Thread(new de.hwrberlin.jemm.net.Server());


	public Browser() {
		// TODO Auto-generated constructor stub
	}

	@Override
	public void createPartControl(Composite parent) {
		parent.setLayout(null);
		{
			tree = new Tree(parent, SWT.BORDER);
			tree.addMouseListener(new MouseAdapter() {
				@Override
				public void mouseDoubleClick(MouseEvent e) {
					String aktiv = tree.getSelection()[0].getText();
					Integer position = de.hwrberlin.jemm.views.editor.position(aktiv);
					Datei dateien = de.hwrberlin.jemm.views.editor.dateioeffnen(position);
					File datei = dateien.datei;
					try {
						de.hwrberlin.jemm.views.editor.oeffnen(datei);
					} catch (IOException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
				}
			});
			tree.setBounds(0, 0, 194, 547);
		}
		{
			Composite composite = new Composite(parent, SWT.NONE);
			composite.setBounds(0, 548, 194, 121);
			composite.setLayout(null);
			{
				Label lblVerbindenZu = new Label(composite, SWT.NONE);
				lblVerbindenZu.setBounds(10, 10, 100, 13);
				lblVerbindenZu.setText("Verbinden zu...");
			}
			{
				text = new Text(composite, SWT.BORDER);
				text.setBounds(10, 29, 100, 19);
			}
			{
				Button btnConnect = new Button(composite, SWT.NONE);
				btnConnect.setBounds(116, 54, 68, 23);
				btnConnect.setText("Verbinden");
			}
			{
				Button btnHostSein = new Button(composite, SWT.NONE);
				btnHostSein.addSelectionListener(new SelectionAdapter() {
					@Override
					public void widgetSelected(SelectionEvent e) {
						server.start();
						try {
							server.join();
						} catch (InterruptedException e1) {
							// TODO Auto-generated catch block
							e1.printStackTrace();
						}
					}
				});
				btnHostSein.setBounds(10, 54, 68, 23);
				btnHostSein.setText("Hosten");
			}
			{
				text_1 = new Text(composite, SWT.BORDER);
				text_1.setBounds(116, 29, 68, 19);
			}
			{
				Label lblPort = new Label(composite, SWT.NONE);
				lblPort.setText("Port");
				lblPort.setBounds(116, 10, 68, 13);
			}
			{
				lblStatus = new Label(composite, SWT.NONE);
				lblStatus.setFont(SWTResourceManager.getFont("Tahoma", 11, SWT.NORMAL));
				lblStatus.setBounds(10, 82, 174, 29);
			}
		}
		{
			Label label = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
			label.setBounds(10, 567, 174, 2);
		}
	}


	@Override
	public void setFocus() {
		// TODO Auto-generated method stub

	}
	
	public static void hinzufuegen(String name){
		treeItem = new TreeItem(tree, SWT.NONE);
		treeItem.setText(name);
	}
}

vielen dank für eure hilfe :)

mfg
 
Zurück