所以我想讓我的Apache xmlrpc客戶端/服務器實現玩球。一切工作正常,除了一個關鍵問題:Apache的Java XMLRPC庫問題
我的處理程序類(通過屬性文件org.apache.xmlrpc.webserver.XmlRpcServlet.properties
映射)作出反應,因爲它應該但它的構造函數在每個方法調用時調用。看起來處理程序類在每次調用時都是實例化的,因爲我有數據存儲在實例變量中,我需要在調用之間進行保存。
如何保存對實例化處理程序的引用,以便可以訪問它的實例變量?
所以我想讓我的Apache xmlrpc客戶端/服務器實現玩球。一切工作正常,除了一個關鍵問題:Apache的Java XMLRPC庫問題
我的處理程序類(通過屬性文件org.apache.xmlrpc.webserver.XmlRpcServlet.properties
映射)作出反應,因爲它應該但它的構造函數在每個方法調用時調用。看起來處理程序類在每次調用時都是實例化的,因爲我有數據存儲在實例變量中,我需要在調用之間進行保存。
如何保存對實例化處理程序的引用,以便可以訪問它的實例變量?
也許與javax.xml.rpc.session.maintain
設置爲true?
從我收集你的評論之後googleing你收集的是,這是一個JAX-RPC特定的技術?我想我可以考慮將我的所有代碼從Apache XML-RPC移到JAX-RPC,但街上的字是JAX-RPC更復雜。這是一個正確的評估? – 2009-10-30 10:48:04
這是Apache XMLRPC 3.x的標準行爲。 http://ws.apache.org/xmlrpc/handlerCreation.html:
默認情況下,Apache的XML-RPC來處理每個 請求創建一個新對象在服務器側接收到。
但是,您可以模擬XMLRPC 2.x的行爲,其中使用RequestProcessorFactoryFactory註冊處理程序對象而不是處理程序類。我已經編寫了一個可以使用的自定義RequestProcessorFactoryFactory:
public class CustomHandler implements RequestProcessorFactoryFactory {
Map<Class<?>, RequestProcessorFactory> handlers =
Collections.synchronizedMap(
new HashMap<Class<?>, RequestProcessorFactory>());
@Override
public RequestProcessorFactory getRequestProcessorFactory(Class pClass)
throws XmlRpcException {
return handlers.get(pClass);
}
public void addHandler(final Object handler) {
handlers.put(handler.getClass(), new RequestProcessorFactory() {
@Override
public Object getRequestProcessor(XmlRpcRequest pRequest)
throws XmlRpcException {
return handler;
}
});
}
}
然後,可以將其與例如像這樣的XMLRPC WebServer
WebServer server = ...
PropertyHandlerMapping phm = new PropertyHandlerMapping();
server.getXmlRpcServer().setHandlerMapping(phm);
Custom sh = new CustomHandler();
phm.setRequestProcessorFactoryFactory(sh);
Object handler = ... /** The object you want to expose via XMLRPC */
sh.addHandler(handler);
phm.addHandler(serverName, handler.getClass());
謝謝你的男人。你爲我節省了很多時間! – Dime 2017-02-21 13:58:01
你真的想/需要使用XmlRpc嗎?這是嚴重的老。 – skaffman 2009-10-30 10:58:07
在這一點上,我正在做他們在學校告訴我的東西;)所以你會建議拋擲XMLRPC並在JAX-RPC中寫同樣的東西? – 2009-11-03 18:31:20
JAX-RPC和XML-RPC都已過時。 JAX-WS和其他現代框架就是它的所在。 – skaffman 2010-03-23 10:34:18