UnmarshalException | RMI

_Truck_

Erfahrenes Mitglied
Was mache ich falsch wenn ich folgende Fehlermeldung erhalte:
Java:
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
	java.rmi.UnmarshalException: invalid method hash
	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:325)
	at sun.rmi.transport.Transport$1.run(Transport.java:153)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:466)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707)
	at java.lang.Thread.run(Thread.java:595)
	at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
	at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
	at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:126)
	at net.dsb.configImport.ConfigVhs3Import_Stub.overrideData(Unknown Source)
	at net.dsb.swingConfigImport.GUIConfigVhs3Import.actionPerformed(GUIConfigVhs3Import.java:561)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:5501)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3135)
	at java.awt.Component.processEvent(Component.java:5266)
	at java.awt.Container.processEvent(Container.java:1966)
	at java.awt.Component.dispatchEventImpl(Component.java:3968)
	at java.awt.Container.dispatchEventImpl(Container.java:2024)
	at java.awt.Component.dispatchEvent(Component.java:3803)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
	at java.awt.Container.dispatchEventImpl(Container.java:2010)
	at java.awt.Window.dispatchEventImpl(Window.java:1778)
	at java.awt.Component.dispatchEvent(Component.java:3803)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Caused by: java.rmi.UnmarshalException: invalid method hash
	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:266)
	at sun.rmi.transport.Transport$1.run(Transport.java:153)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:466)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707)
	at java.lang.Thread.run(Thread.java:595)

Client:
Java:
public void actionPerformed(ActionEvent e) {
		
		Object src = e.getSource();
		if (src instanceof JButton) {
if (src == btnUpdate) {

				List guiList = new List();
				
				guiList.add(edtAborFlag.getText(),0);
				
				guiList.add(edtToEmAddr.getText(),1);
				guiList.add(edtExcLvl.getText(),2);
				guiList.add(edtBccEmAddr.getText(),3);
				guiList.add(edtFromEmAddr.getText(),4);
				guiList.add(edtEmailServ.getText(),5);
				guiList.add(edtSendFrequ.getText(),6);
				
				guiList.add(edtLogConsoleEn.getText(),7);
				guiList.add(edtLogLevel.getText(),8);
				guiList.add(edtLogMaxBupIn.getText(),9);
				guiList.add(edtLogMaxFiSize.getText(),10);
				
				guiList.add(edtDbDriver.getText(),11);
				guiList.add(edtDbUrl.getText(),12);
				guiList.add(edtDbUser.getText(),13);
				guiList.add(edtDbPassword.getText(),14);
				guiList.add(edtObsoleteAID.getText(),15);
				guiList.add(edtDelCascading.getText(),16);
				guiList.add(edtClCCodeType.getText(),17);
				
				guiList.add(edtReImportEn.getText(),18);
				guiList.add(edtReImportDate.getText(),19);
				
				guiList.add(edtTabImportEn.getText(),20);
				guiList.add(edtXmlImportEn.getText(),21);
				guiList.add(edtSapImportEn.getText(),22);
				
				guiList.add(edtClServProv.getText(),23);
				guiList.add(edtClServProvEn.getText(),24);
				guiList.add(edtClientList.getText(),25);
				
				guiList.add(edtClMachCheck.getText(),26);
				guiList.add(edtClSpRecImpl.getText(),27);
				guiList.add(edtClLastTranID.getText(),28);
				guiList.add(edtClFileFormat.getText(),29);
				guiList.add(edtClFilename.getText(),30);
				guiList.add(edtClLastFileID.getText(),31);
			
				guiList.add(edtAuthorEn.getText(),32);
				guiList.add(edtAuthorSAddr.getText(),33);
				
				guiList.add(edtLocalTransEn.getText(),34);
				guiList.add(edtLocalDir.getText(),35);
				
				guiList.add(edtFtpTransEn.getText(),36);
				guiList.add(edtFtpServName.getText(),37);
				guiList.add(edtFtpUser.getText(),38);
				guiList.add(edtFtpPassword.getText(),39);
				guiList.add(edtFtpPassMode.getText(),40);
				guiList.add(edtFtpDir.getText(),41);
				
				try {
					  
					  Registry registry = LocateRegistry.getRegistry();
					  ConfigVhs3ImportService service = (ConfigVhs3ImportService) registry.lookup("ConfigVhs3Import");
					  service.overrideData(guiList);
					  
				    }
				      catch (Exception exc) {
							exc.printStackTrace();
				      }
				 }
		 }


Serviceinterface:
Java:
import java.awt.List;
import java.rmi.Remote;


 public interface ConfigVhs3ImportService extends Remote {

	 public void overrideData(List guiList) throws Exception;
	
 }



Danke im Voraus,

Truck
 
Moin!
Zuersteinmal, du musst nicht nach nach nur 2 Stunden nochmal fragen, ob dir jemand helfen kann. Die Antwort kommt sobald jemand eine Idee hat, und nicht wann es dich drängt, okay?

Laut Api besagt die Fehlermeldung folgendes:
if the method hash is invalid (i.e., missing method).
Hast du überprüft, ob Client und Serverseite jeweils die identischen Interfaces besitzen?

Und warum verschickst du eine awt.List? Das sollte eher eine util.List sein denke ich mal..

*grüssle*
MeinerEiner
 
Ich habe es nun einmal mit einem Objekt versucht und diesmal diese Fehlermeldung erhalten:

Java:
java.rmi.MarshalException: error marshalling arguments; nested exception is: 
	java.io.NotSerializableException: net.dsb.configImport.ConfigVhs3ImportDTO
	at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:122)
	at net.dsb.configImport.ConfigVhs3Import_Stub.overrideData(Unknown Source)
	at net.dsb.swingConfigImport.GUIConfigVhs3Import.actionPerformed(GUIConfigVhs3Import.java:551)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:5501)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3135)
	at java.awt.Component.processEvent(Component.java:5266)
	at java.awt.Container.processEvent(Container.java:1966)
	at java.awt.Component.dispatchEventImpl(Component.java:3968)
	at java.awt.Container.dispatchEventImpl(Container.java:2024)
	at java.awt.Component.dispatchEvent(Component.java:3803)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
	at java.awt.Container.dispatchEventImpl(Container.java:2010)
	at java.awt.Window.dispatchEventImpl(Window.java:1778)
	at java.awt.Component.dispatchEvent(Component.java:3803)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Caused by: java.io.NotSerializableException: net.dsb.configImport.ConfigVhs3ImportDTO
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1081)
	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
	at sun.rmi.server.UnicastRef.marshalValue(UnicastRef.java:258)
	at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:117)
	... 26 more

Vielleicht könnt ihr mir da helfen !


Danke Truck
 
Erledigt !
Danke für deine Mühe Meiner!

Edit: Zu umfangreich um die Lösung zu präsentieren!


Danke

Gruß Truck
 
Zurück