gpt4 book ai didi

java - 如何在 Apache XML-RPC 服务器应用程序中实现自省(introspection)?

转载 作者:行者123 更新时间:2023-12-01 15:44:49 28 4
gpt4 key购买 nike

我们有一个使用 Apache XML-RPC 的 Java 服务器后端使其服务可供 PHP 应用程序使用(别问我,当我到达时它已经以这种方式构建),并希望它遵守 unofficial XML-RPC introspection spec 。理论上,Apache XML-RPC 对此有支持,但是example given on their page :

public class MyXmlRpcServlet extends XmlRpcServlet {
protected XmlRpcHandlerMapping newXmlRpcHandlerMapping()
throws XmlRpcException {
PropertyHandlerMapping mapping =
(PropertyHandlerMapping) newXmlRpcHandlerMapping();
XmlRpcSystemImpl.addSystemHandler(mapping);
}
}

不会编译。它显然缺少 return 语句,并且我尝试返回创建的“映射”,但是在第一个请求时,服务器(递归地?)重复调用 newXmlRpcHandlerMapping() 直到抛出 java.lang.StackOverflowError

问题是:有谁知道如何向这样的应用程序添加内省(introspection)功能?要么修复这个例子,要么提供一个可用的例子,那就太棒了。它实际上并不需要是那个规范(任何允许我们生成方法及其参数列表的东西都很好),但它似乎是一个很酷的标准(在其他非-XML-RPC 的酷世界。:-) )

谢谢!

最佳答案

感谢同事的提示,我得到了答案:重写方法正在调用自身,而不是父类(super class)的版本。这是固定代码:

public class MyXmlRpcServlet extends XmlRpcServlet {
@Override
protected XmlRpcHandlerMapping newXmlRpcHandlerMapping()
throws XmlRpcException {
PropertyHandlerMapping mapping = (PropertyHandlerMapping) super
.newXmlRpcHandlerMapping();
XmlRpcSystemImpl.addSystemHandler(mapping);
return mapping;
}
}

添加该版本并用此版本替换 web.xml 中的 XmlRpcServlet 后,您就可以调用内省(introspection)方法!

关于java - 如何在 Apache XML-RPC 服务器应用程序中实现自省(introspection)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7274363/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com