![在 tomcat6 服务器上使用 JAX-WS 客户端时权限被拒绝](https://linux22.com/image/796191/%E5%9C%A8%20tomcat6%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E4%BD%BF%E7%94%A8%20JAX-WS%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%97%B6%E6%9D%83%E9%99%90%E8%A2%AB%E6%8B%92%E7%BB%9D.png)
我在使用 wsimport 生成的 webservice 存根的 Java 客户端时遇到了奇怪的行为。
客户说某事
Got Permission denied: connect while opening stream from http://dev:8080/LicenseServer/services/ServerImpl?wsdl
但是我可以在浏览器中打开 URL,并且 wsdl 可以正确显示。我还可以从浏览器控制 Soap11Binding/HttpSoap11Endpoint。
一个提示可能是主机名“dev”由 C:\Windows\System32\driver\etc\hosts 解析。
在与服务器相同的网络内运行 java 客户端不会有任何麻烦。
也许存根的初始化过程依赖于主机名的“真实” DNS 解析?
答案1
这个问题与 jax-ws 或 wsdl 无关。这只是因为 jre7 和 ipv6stacks 在大多数硬件上无法兼容。另请参阅https://forums.oracle.com/forums/thread.jspa?threadID=2395610或者http://jonathangiles.net/blog/?p=1126
我通过将-Djava.net.preferIPv4Stack=true
我的 JVM 参数来解决了这个问题