WebServices - Type mismatch

MrCastle

Mitglied
Hi,

nochmal eine Frage zu WebServices. Bisher dachte ich, dass ich nach Generierung des Java Clients für einen WebService mittels wsimport die Daten in der gleichen Form auf Seite des Clients wieder annehmen kann. Im Moment sieht es für mich so aus als würde das nicht funktionieren, denn wsimport legt neue Klassen für alle Typen an die irgendwas mit dem Datenaustausch in diesem Service zu tun haben, die aber nicht wirklich der Form entsprechen wie ich sie bräuchte, nämlich der ursprünglichen.
Casten funktioniert nicht und den ursprünglichen Typ als Rückgabewert im Service anzugeben bringt auch nichts.

Ist das überhaupt möglich oder darf ich mich jetzt wieder mit Sockets herumquälen?

Vielen Dank im Voraus

MfG
MrCastle
 
Es scheint so als wäre es so nicht möglich wie ich mit das vorstelle, daher habe ich mich von WebServices abgewandt und bin zu RMI übergegangen, wo ich allerdings auch wieder hänge...

Problem ist in diesem Fall die Syntax des Namen wie es scheint. Ich finde auch keine genaue Anleitung wie dieser Name aussehen muss wenn ich einen variablen Port für die Registry benutze.


Server:
Code:
try 
    	{ 
    		int port = Integer.parseInt(getConfigValue("n-port"));
    		
			LocateRegistry.createRegistry(port);
					    	  
			NRemoteImpl nImpl = new NotifierRemoteImpl(this); 
			INRemote stub = (INotifierRemote) UnicastRemoteObject.exportObject( nImpl, 0 ); 
			RemoteServer.setLog( System.out ); 
					    	 
			Registry registry = LocateRegistry.getRegistry(); 
			registry.rebind( "rmi://127.0.0.1:"+port+"/INRemote", stub );
    	} 
    	catch ( RemoteException e )  { /* ... */ }

Client:
Code:
int port = Integer.parseInt(a.getConfigValue("n-port"));
System.setProperty("java.security.policy", "policy.file");
		        System.setSecurityManager(new RMISecurityManager());
		        
		        Registry registry = LocateRegistry.getRegistry(port);
		        INRemote n = (INRemote) registry.lookup( "rmi://127.0.0.1:"+port+"/INRemote" );


Fehlerausgabe:
Code:
21.08.2009 09:34:24 sun.rmi.server.UnicastServerRef logCall
FEINER: RMI TCP Connection(1)-XXX.XXX.XXX.XXX: [XXX.XXX.XXX.XXX: sun.rmi.registry.RegistryImpl[0:0:0, 0]: java.rmi.Remote lookup(java.lang.String)]
21.08.2009 09:34:24 sun.rmi.server.UnicastServerRef logCallException
FEIN: RMI TCP Connection(1)-XXX.XXX.XXX.XXX: [XXX.XXX.XXX.XXX] exception: 
java.rmi.NotBoundException: rmi://127.0.0.1:5555/INRemote
	at sun.rmi.registry.RegistryImpl.lookup(RegistryImpl.java:106)
	at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
	at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:386)
	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250)
	at sun.rmi.transport.Transport$1.run(Transport.java:159)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)

Policy Datei:
Code:
grant
{
	permission java.net.SocketPermission
	"*:1024-65535", "connect";

};

Ich finde kein ordentliches Beispiel wie der Name in meinem Fall auf der Clientseite aussehen müsste, hat da einer eine Idee?

Vielen Dank im Voraus.

MfG
MrCastle
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück