【问题标题】:How to Handle Invalid (HTML) Messages in JAX-WS如何在 JAX-WS 中处理无效 (HTML) 消息
【发布时间】:2014-03-06 11:32:18
【问题描述】:

我的 SOAP 客户端基于 JAX-WS。服务器(由其他人编写和操作)通常会返回有效的 XML 消息,但偶尔会在遇到内部错误时返回带有错误代码 (HTTP 500) 的 HTML 消息。

不幸的是,在这种情况下,JAX-WS 客户端仅抛出 UnsupportedMediaException: "Unsupported Content-Type: text/html"

我现在需要一种方法来找出服务器报告的错误情况以便采取行动。我宁愿更换服务器,但这是不可能的,因为它超出了我的能力范围。

至少,我需要记录传入的原始响应。

我知道可以按照以下建议记录所有请求和响应:https://stackoverflow.com/a/5647686/578759

但这可能会溢出系统日志,因为我们通常每秒有几个请求。

所以我宁愿只在出现错误时记录响应。

我们已经有一个 SOAPHandler,它记录传入和传出的 SOAP 消息,但它只适用于有效的 SOAP 消息,即在成功解析 XML 之后。如果传入的响应是 HTML,我们甚至不会到达调用处理程序的位置。

有没有办法在这个阶段添加一个类似的处理程序?

【问题讨论】:

  • 您的客户端的运行环境是什么?它在一个servlet中吗?独立客户端等
  • @kolossus 客户端在 Linux 上的 Tomcat 6 中作为 Java 6 servlet 运行。
  • 您还有兴趣解决这个问题还是找到解决方案?

标签: java web-services soap jax-ws


【解决方案1】:

您可以添加自定义com.sun.xml.ws.api.pipe.TransportTubeFactory 来访问HTTP 响应的原始InputStream,请参阅我对这个问题的回答的最后一部分:UnsupportedMediaException -> how do you get the actual response?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    相关资源
    最近更新 更多