Hi,
ich arbeite gerade an einer Java Software, die mit einem am Netzwerk angebundenen Gerät per XML-RPC kommunziert. Das Gerät macht Callbacks auf einen XML-RPC Server, den ich bereitstellen muss. Und da liegt das Problem: Diese Callbacks sehen etwa so aus:
Das Problem liegt darin, dass der Method Name keinen Handler spezifiziert. Apache XMP-RPC ist so gebaut, dass der Methoden Name eigentlich so aussehen sollte: Handler.name wobei ein Handler dann eine Klasse ist und der name der Name einer Methode.
Weiss jemand ob und wie ich mit solchen Calls überhaupt etwas anfangen kann bzw sie irgendwie behandeln kann?
Grüße
serow
EDIT: Um es mal auf ein Minibespiel herunterzubrechen habe ich hier einen EchoServer und EchoClient. Der EchoClient ruft auf dem Server die Methode "echo" auf, aber genauso wie mein Gerät hier ohne einen Handler angzugeben.
Laut dem Server Code würde jetzt erwartet werden, dass ich die Methode als "EchoServer.echo" anspreche und nicht nur mit "echo". Leider kann ich mir das nicht aussuchen
ich arbeite gerade an einer Java Software, die mit einem am Netzwerk angebundenen Gerät per XML-RPC kommunziert. Das Gerät macht Callbacks auf einen XML-RPC Server, den ich bereitstellen muss. Und da liegt das Problem: Diese Callbacks sehen etwa so aus:
Code:
mathias@mini:~$ nc -l 8000
POST /xmlrpc HTTP/1.1
User-Agent: XMLRPC++ 0.7
Host: 10.0.0.211:8000
Content-Type: text/xml
Content-length: 141
<?xml version="1.0"?>
<methodCall><methodName>listDevices</methodName>
<params><param><value>someID</value></param></params></methodCall>
Das Problem liegt darin, dass der Method Name keinen Handler spezifiziert. Apache XMP-RPC ist so gebaut, dass der Methoden Name eigentlich so aussehen sollte: Handler.name wobei ein Handler dann eine Klasse ist und der name der Name einer Methode.
Weiss jemand ob und wie ich mit solchen Calls überhaupt etwas anfangen kann bzw sie irgendwie behandeln kann?
Grüße
serow
EDIT: Um es mal auf ein Minibespiel herunterzubrechen habe ich hier einen EchoServer und EchoClient. Der EchoClient ruft auf dem Server die Methode "echo" auf, aber genauso wie mein Gerät hier ohne einen Handler angzugeben.
Code:
public class EchoServer {
public static void main(String[] args) throws Exception {
WebServer webServer = new WebServer(8080);
EchoService echo = new EchoServiceImpl();
PropertyHandlerMapping phm = new PropertyHandlerMapping();
phm.setRequestProcessorFactoryFactory(new EchoRequestProcessorFactoryFactory(echo));
phm.setVoidMethodEnabled(true);
phm.addHandler("EchoService", EchoService.class);
XmlRpcServer xmlRpcServer = webServer.getXmlRpcServer();
xmlRpcServer.setHandlerMapping(phm);
XmlRpcServerConfigImpl serverConfig = (XmlRpcServerConfigImpl) xmlRpcServer.getConfig();
serverConfig.setEnabledForExtensions(true);
serverConfig.setContentLengthOptional(false);
webServer.start();
}
}
public class EchoClient {
public static void main(String[] args) throws Exception {
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL("http://127.0.0.1:8080/xmlrpc"));
config.setEnabledForExtensions(true);
config.setConnectionTimeout(60 * 1000);
config.setReplyTimeout(60 * 1000);
XmlRpcClient client = new XmlRpcClient();
client.setConfig(config);
Object[] params = new Object[] {"bla"};
client.execute("echo", params);
}
}
Laut dem Server Code würde jetzt erwartet werden, dass ich die Methode als "EchoServer.echo" anspreche und nicht nur mit "echo". Leider kann ich mir das nicht aussuchen

Zuletzt bearbeitet: