我在使用 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 参数来解决了这个问题