栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

jax ws获取客户端IP

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jax ws获取客户端IP

如何获取jax-ws服务的Web服务客户端地址取决于您是否:

  • 将Web服务作为servlet运行(在Java EE容器中),或者
  • 将Web服务作为独立应用程序运行(Java SE 6或7)。

Servlet Web服务如果您的Web服务是Servlet,请使用第一篇文章的解决方案,其中包含以下内容:

HttpServletRequest req = (HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST);

应用程序Web服务:JAX-WS 2.1 如果您使用的是Java应用程序(Java
SE),则没有servlet上下文,因此

HttpServletRequest
它将为null。您需要使用后面的文章中的方法,该方法包含以下行:

HttpExchange exchange = (HttpExchange)msgx.get(JAXWSProperties.HTTP_EXCHANGE);

注意:这仅适用于JAX-WS 2.1堆栈/引用实现。

应用程序Web服务:JAX-WS 2.2

在JAX-WS 2.2中,的值

JAXWSProperties.HTTP_EXCHANGE
已从“
com.sun.xml.ws.http.exchange”(在JAX-WS 2.1中为该值)更改为“
com.sun.xml.internal.ws.http.exchange” ”。这意味着致电

HttpExchange exchange = (HttpExchange)msgx.get(JAXWSProperties.HTTP_EXCHANGE);InetSocketAddress remoteAddress = exchange.getRemoteAddress();String remoteHost = remoteAddress.getHostName();

在JAX-WS 2.2中将返回null,

NullPointerException
第二行将显示一个,更重要的是,无法获取客户端的远程地址。

如果改用以下调用(使用文字值ugh!):

HttpExchange exchange = (HttpExchange)msgx.get("com.sun.xml.ws.http.exchange");InetSocketAddress remoteAddress = exchange.getRemoteAddress();String remoteHost = remoteAddress.getHostName();

您将获得一个非空值,并且将能够获得客户地址。

因此,如何获取客户端的远程地址取决于您如何部署代码(servlet或应用程序)以及所使用的JAX-WS版本(JAX-WS 2.1或2.2)。

推荐建议

  • Servlet :如果要在 Servlet 中部署JAX-WS Web服务,则

    MessageContext.SERVLET_REQUEST
    无论使用什么版本的JAX-WS 2,都可以始终使用该调用来获取属性。

  • 应用程序 :如果要在 应用程序 中部署JAX-WS Web服务,则

    HttpExchange exchange = (HttpExchange)msgx.get("com.sun.xml.ws.http.exchange");
    无论您使用的是JAX-WS 2.1还是2.2,都可以始终使用该调用,因此在代码中使用字符串文字而不是符号文字可能更好
    JAXWSProperties.HTTP_EXCHANGE

与使用文字一样令人厌烦的是,最好有更健壮的代码可以在JAX-WS版本中工作,而不是不能使用更漂亮的代码。

我希望JAX-WS团队在某个时候纠正该问题,然后

JAXWSProperties.HTTP_EXCHANGE
再次将其值恢复为有用的值。

非常感谢早期的海报,这些海报显示了找到JAX-WS客户端的远程地址的各种方法。该信息非常有用:)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/617073.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号