- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试设置一个可用于异步调用 Web 服务的 servlet。在大多数情况下,它运行良好。我有一个带有 doGet 方法的 servlet 和一个调用它的 js。我在 js 中有一个回调方法,当 servlet 完成其操作时,它会正确调用该方法。
复杂的是,我调用的 Web 服务之一也是异步的,我希望能够在异步 ws 回调完成后再次调用 js 回调方法。例如,如果您有一个状态字段,当您调用同步 Web 服务时,它会立即更新为“开始同步调用”,然后当 Servlet 回调到达时,它会更改为回调值,这是 Web 服务的结果。
当您调用异步 Web 服务时,更新字段立即更新为“开始异步调用”,并很快收到来自 servlet 的第一个回调,表明已请求 Web 服务,因此我们将该字段更新为“处理 Web服务”什么的。问题是,一旦Web服务完成并回调到servlet,我似乎不知道如何将结果发送到js回调方法。
我对 AJAX 和 servlet 还很陌生,所以也许这是实现我想要的目标的一种糟糕方法。
Web 服务都在 Servlet 中调用,主要使用 Netbeans 自动生成的 WS 调用。 WS 调用本身工作正常,但是一旦我获得异步 WS 的结果,我就会陷入 webservice 回调的 handleResponse 方法中,并且不再引用我想要更新的文档的响应元素。
我尝试将原始响应变量存储为静态成员变量,并在handleResponse方法中使用它,如下所示:
javax.xml.ws.AsyncHandler<WsClients.Op11Response> asyncHandler = new javax.xml.ws.AsyncHandler<WsClients.Op11Response>() {
public void handleResponse(javax.xml.ws.Response<WsClients.Op11Response> asyncResponse) {
try {
storedResponse.setContentType("text/xml");
String returnString = asyncResponse.get().getReturn();
storedResponse.getWriter().write("<returnData><content>"
+ returnString + "</content></returnData>");
} catch (Exception ex) {
}
}
};
这不会在附加调试器的情况下进行编译,并且似乎无法分配引用。
有更好的方法吗?
最佳答案
HTTP 的本质是,除非客户端通过轮询或保持连接打开来请求此信息,否则您无法将任何内容发送回客户端。
启动异步调用的操作立即结束,您需要从 servlet doGet 方法返回(虽然从技术上讲,您可以留在 servlet 调用中直到异步调用完成,但我不建议这样做,因为它会占用服务器资源) . 通常,最好尽快从 servlet 返回)。
最好的行动方案是:
当您熟悉上述步骤 3 中的轮询实现时,您可能需要考虑 Comet, a.k.a. long poll取代客户端轮询。
关于java - 第二次调用 HttpServletResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5626381/
我使用 Spring mvc,我的问题是关于 sendError方法来自 HttpServletResponse . 有人可以告诉我哪个最好: @RequestMapping(method = Req
前言: Servlet 中的 doXXX 方法的目的就是根据请求计算得到相应,然后把响应的数据设置到 HttpServletResponse 对象中;然后 Tomcat 就会把这个 HttpServl
在 java 中向 HttpServletResponse 添加一些内容时,我可以获取响应编写器并附加: httpResponse.getWriter().append("Some Content")
我正在开发一个将 http 请求(GET 用于测试目的)发送到 java servlet 的设置。它的工作原理是,ser let 从浏览器获取请求,解析它并通过 TCP 套接字将其发送到“主”服务器,
我正在构建一个网络应用程序。 此 Web 应用程序的一部分是从客户端到服务器的 ajax 请求: $.ajax({ url: url, type: "get", d
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
在 servlet 应用程序中,Web 服务器将 HttpServletResponse 转发到浏览器,对吗?然后浏览器将渲染它并显示 html。 但是浏览器期望的 Response 对象的确切类型是
我在为我在 Web 应用程序上创建的 CSV 文件设置字符集时遇到问题(在 Tomcat9 服务器上的 Windows 笔记本电脑上进行测试)。这就是我所做的: byte[] data = resul
我有一个 Java 网络服务应用程序,我正在尝试执行导出功能以将一些数据从数据库导出到 excel 文件 为此,我使用了 HttpServletResponse,但即使我设置了文件名和编码类型,导出的
我正在尝试设置一个可用于异步调用 Web 服务的 servlet。在大多数情况下,它运行良好。我有一个带有 doGet 方法的 servlet 和一个调用它的 js。我在 js 中有一个回调方法,当
我使用doGet方法来获取参数,然后进行处理。发送回复时,其中包含状态数据。此外,当第二个客户端连接时,答案包含来自第一个客户端的数据。我希望在第二个客户端连接后发送新的数据。重置缓冲区并向第二个客户
编译以下代码时遇到问题 public void doGet(HttpServletRequest request, HttpServletResponse response) throws Servl
我有以下问题:我有一个 HttpServlet 创建一个文件并将其返回给必须以下载形式接收它的用户 byte[] byteArray = allegato.getFile(); InputStream
我正在寻找一种 Autowiring HttpServletResponse 的方法。它不适用于开箱即用的 Spring ,但我发现 this description .这可行,但有点烦人,在那个 S
我创建了一个自定义过滤器来修改 http 响应的内容。内容替换本身工作正常,但是当内容大小大于原始响应时,它会被截断为与原始响应相同的大小,同时丢失剩余字符。 这是我的自定义过滤器: public c
在我的应用程序中,我有 2 个过滤器: 1) 首先,抛出异常,我调用 response.sendError(UNAUTHORIZED.getStatusCode(), "My message"); 2
我有一个 HttpServletResponse 对象,需要编写一个包含在 jar 中的文件。以下代码段对我不起作用。 URI uri = .class.getResource("/" + filen
只是一个简短的问题 - sendRedirect 使用什么方法(例如 GET、POST 等)?它是否从请求中继承它?而且,如果是这样,是否可以将其更改为另一个?谢谢! 最佳答案 sendRedirec
我看到一些帖子说Servlet Filter中的repsonse.sendError之后需要返回,是否需要?如果是这样,为什么? public class AuthorizationSecurityF
我正在我的网络应用程序过滤器中运行,该过滤器从外部源接收有关用户的信息,无论他是否登录。这是我的过滤器: @Override public void doFilter( ServletRequest
我是一名优秀的程序员,十分优秀!