我是WS和CXF的初学者。我想使用AsyncHandler创建异步客户端,但无法获得响应消息。
我有使用 CXF wsdl2java 生成的 Web 服务类和接口,如下所示:
@WebService(...)
@XmlSeeAlso({ObjectFactory.class})
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public interface TestInterface {
@WebMethod(operationName = "update")
public Response<?> updateAsync(
@WebParam(partName = "MyMessage", mode = WebParam.Mode.INOUT, name = "MyMessage", targetNamespace = "...")
javax.xml.ws.Holder myMessage
);
@WebMethod(operationName = "update")
public Future<?> updateAsync(
@WebParam(partName = "MyMessage", mode = WebParam.Mode.INOUT, name = "MyMessage", targetNamespace = "...")
javax.xml.ws.Holder myMessage,
@WebParam(name = "asyncHandler", targetNamespace = "")
AsyncHandler<MyMessage> asyncHandler
);
@Action(input = "urn:...", output = "urn:...")
@WebMethod
public void update(
@WebParam(partName = "MyMessage", mode = WebParam.Mode.INOUT, name = "MyMessage", targetNamespace = "...")
javax.xml.ws.Holder<MyMessage> myMessage
);
}
-
@javax.jws.WebService(...)
public class TestInterfaceImpl implements TestInterface {
public Future<?> updateAsync(javax.xml.ws.Holder MyMessage, AsyncHandler<MyMessage> asyncHandler) {
public Response<?> updateAsync(javax.xml.ws.Holder MyMessage) {
return null;
/* not called */
}
public Future<?> updateAsync(javax.xml.ws.Holder MyMessage,AsyncHandler<MyMessage> asyncHandler) {
return null;
/* not called */
}
public void update(javax.xml.ws.Holder<MyMessage> MyMessage) {
LOG.info("Executing operation update");
...
}
}
客户类别
public class Updater {
@Inject
private RequestInterface requestInterfaceClient;
public void sendRequest(){
Holder<MyMessage> message = createNewMessage();
MyResponseHandler handler = new MyResponseHandler();
RequestInterfaceClient.updateAsync(message, handler);
}
private Holder<MyMessage> createNewMessage() {
...
}
}
和处理程序
public class MyResponseHandler implements AsyncHandler<MyMessage>{
@Override
public void handleResponse(Response<MyMessage> response) throws Exception {
MyMessage message = response.get();
// ^^^
// returns instance of Object instead of MyMessage
}
}
调用< code>response.get()时,会出现< code > Java . lang . classcastexception:Java . lang . object无法转换为MyMessage的情况。
当我调试代码时,我可以看到响应
包含结果
,即 Object 数组。有 2 个对象:第 1 个是对象的实例(它由 result.get() 返回),第 2 个是 MyMessage 的实例。
我的问题如下:
>
响应没有任何带有索引的获取。如何获取第二个对象?
为什么响应有这两个对象和结果。get()不工作?
谢谢你的任何建议。
我阻止了CXF使用javax.xml.ws生成方法。Holder(如果有多个输出或输入/输出消息包含相同的消息部分,我根据:CXF生成Holder更改了WSDL)。现在它工作了(response.get()
返回MyMessage
)的实例。
但如果有人能告诉我霍尔德的解决办法,那就太好了。
问题内容: 我正在尝试为通过map函数创建的自定义组件创建动态引用。 在返回正确的DOM节点,但在循环的那些,它返回一个对象。 有人可以指出我正确的方向吗? 问题答案: 似乎是一个连接的组件,而您实际上需要包装的组件。 与连接 然后通常添加一个引用: 从文档: 如果已传递给,则向连接的包装器组件添加一个ref实际上将返回被包装组件的实例。 与连接 然后用于获取基础的连接组件: 从文档: [with
我有一个sql select查询,它只从数据库中检索单个列(组)(即),我在对象数组列表中接收上面列表的结果 , 理想情况下,结果应该包含一个对象数组列表,但是当我检查时,结果的第0个索引包含String object而不是object数组。 但是,如果我使用多个列(假设在查询的select子句中有2个列),我可以看到结果的第0个索引作为对象数组,即 即使查询的select子句中只提到一列,如何获
问题内容: 我有一个元素定义为 我想读取此元素中的文本,即“ ABC”,但这样做是:var client = page.clientRowName.getText(); 返回一个对象而不是一个字符串。还有什么其他方法可以获取元素的文本 问题答案: 返回一个promise,您需要 解决 它: 或者,如果您只想声明文本,请为您解决承诺: 承诺和“控制流”文档页面应清除所有内容。
我已经在Java DSL中编写了一个集成流 我正在丰富消息的标题,使其包含一个原子整数: 如果我在同一个流中的后续handle方法上放置断点,我可以看到标头,它是一个字符串,而不是原子整数。 因此,如果我尝试在另一个流中检索它,例如,我会得到一个非法参数异常: 如果我在Kotlin DSL中做同样的事情,一切都很好: 有人知道我做错了什么吗?
问题内容: 我有一个$ .ajax()请求,其dataType设置为“ json”。服务器返回的JSON具有正确的mime类型“ application / json”。但是,我的jqXHR对象中的responseText始终是字符串。我究竟做错了什么?这是应该如何工作的吗? 这是我拨打电话的方式: 所以我必须做一个才能得到一个实际的对象。这似乎没有必要,因为$ .ajax()应该根据文档自动转换