XML-RPC -> Exception $Proxy0-Unknown Source-No such handl

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Habe eine Exception bei dem Aufruf meines XML-RPC Clients, deren Ursache ich nicht finden kann.
Hier erstmal ein Teil der Exception:
Exception in thread "main" java.lang.reflect.UndeclaredThrowableException
at $Proxy0.getEcho(Unknown Source)
at client.Client.<init>(Client.java:27)
at client.Main.main(Main.java:16)
Caused by: org.apache.xmlrpc.XmlRpcException: No such handler: interfaces.Echo.getEcho ...

Mein PackageStruktur:
Package server: Bank
Package server: EchoImpl
Package server: Main

Package client: Client
Package client: Main

Package interfaces: Echo

Mein Server:
Code:
package server;

import java.io.IOException;

import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.server.*;
import org.apache.xmlrpc.webserver.*;

public class Bank {
	private static final int PORT = 4445;
	
	public Bank() throws  IOException, XmlRpcException {
		PropertyHandlerMapping phm = new PropertyHandlerMapping();
		phm.addHandler("Echo", server.EchoImpl.class);
		
		WebServer webServer = new WebServer(Bank.PORT);
		XmlRpcServer server = webServer.getXmlRpcServer();
		server.setHandlerMapping(phm);
		webServer.start();
		System.out.println("Webserver started!");
	}
}

Mein Client:
Code:
package client;

import interfaces.Echo;

import java.net.*;

import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.client.*;
import org.apache.xmlrpc.client.util.ClientFactory;

public class Client {
	private static final String SERVER_URL = "http://localhost:4445";
	
	public Client() throws MalformedURLException, XmlRpcException {
		URL url = new URL(Client.SERVER_URL);
		
		XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
		config.setServerURL(url);
		
		XmlRpcClient client = new XmlRpcClient();
		client.setConfig(config);
		
		ClientFactory factory = new ClientFactory(client);
		Echo echo = (Echo)factory.newInstance(interfaces.Echo.class);
		
		
		String s = echo.getEcho("Hallo");
		System.out.println(s);
		
		String t = echo.getEchoWithDate("Hallo");
		System.out.println(t);
	}
}

EchoImpl:
Code:
package server;


import interfaces.Echo;

import java.text.SimpleDateFormat;
import java.util.Date;

public class EchoImpl implements Echo {
	public String getEcho(String s) {
		return s;
	}
	
	public String getEchoWithDate(String s) {
		SimpleDateFormat f = new SimpleDateFormat("ss.MM.yyyy HH:mm:ss");
		return "["+f.format(new Date())+"] "+s;
	}

	
}

Mein Interface:
Code:
package interfaces;

public interface Echo {
	public String getEcho(String s);
	public String getEchoWithDate(String s);
}

Der Server läuft. Vielleicht könnt Ihr mir nochmal unter die Arme greifen.
Im Voraus vielen Dank.

Conrad
 
Nach langer Suche habe ich immer noch keine adäquate Idee. Vielleicht kann ja jemand von euch doch nochmal draufschauen.


Viele Grüsse
Conrad
 
Genau dieses Problem hae ich auch gerade. Weiß jemand zufälligerweise mittlerweile Rat? Bin knapp vor dem Verzweifeln.
 
Habt ihr mal nach der Fehlermeldung gegoogelt? Kan mich dunkel dran erinnern dass es irgendwas "verzwicktes" ist. Hatte das bei RMI auch schon. Kriegs aber nichtmehr zusammen was es war und wie mans behebt. Aber mit google bin ich damals recht schnell zur Lösung gekommen.

- Alex
 
Ah, wenn ich mir das INterface so ansehe: Fehlt da nicht bei den Methoden ein entsprechdes "trows XYZ" ???

Bei RMI ist es ein "throws RemoteException" ...Bei XML-RPC -> kein plan. Siehe deren Doku.

- Alex
 
So, ich habe die Lösung gefunden (zumindest bei mir):

In der XmlRpcProperties Datei muss link und rechts der name der Klasse und das package angegeben werden.

z.B.:

org.apache.Interface=org.apache.InterfaceImpl


Hoffe, geholfen zu haben.
 
Ïîíðàâèëîñü, íóæíî äåëàòü êëóá ïî èíòåðåñàì
 
Õîðîøî ÷òî óäàëîñü îòûñêàòü òàêîé çàìå÷àòåëüíûé áëîã, à òî ïîñëåäíåå âðåìÿ óæå íà÷àë äóìàòü ÷òî èíåò ýòî ìóñîðêà ñïëîøíàÿ.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben