2013-07-22 41 views
2

不可用我嘗試使用Jersey客戶端的REST服務連接。
當我使用IPv4地址時,一切正常。
當我試圖替換其IPv6服務器地址下面的異常被拋出:Jesey客戶:協議家族的IPv6地址

com.sun.jersey.api.client.ClientHandlerException: java.net.SocketException異常:協議系列不可用 在com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:128) 在com.sun.jersey.api.client.Client.handle(Client.java:551) 在com.sun.jersey .api.client.WebResource.handle(WebResource.java:556) 在com.sun.jersey.api.client.WebResource.access $ 200(WebResource.java:69) 在com.sun.jersey.api.client。 WebResource $構建er.put(WebResource.java:475) 在com.bmc.aps.agent.jersey.JerseyClient.put(JerseyClient.java:169) 在com.bmc.aps.agent.portal.PortalConnection.handshake(PortalConnection。的java:304) 在com.bmc.aps.agent.portal.PortalConnection.run(PortalConnection.java:786) 在java.lang.Thread.run(Thread.java:636)產生的原因:java.net.SocketException異常:協議系列不可用 在java.net.PlainSocketImpl.socketConnect(本機方法) 在java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:310) 在java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:176) 在java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:163) at java.net.Socket.connect(Sock et.java:537) 在java.net.Socket.connect(Socket.java:487) 在sun.net.NetworkClient.doConnect(NetworkClient.java:174) 在sun.net.www.http.HttpClient。 openserver(HttpClient.java:409) at sun.net.www.http.HttpClient.openServer(HttpClient.java:530) at sun.net.www.http.HttpClient。(HttpClient.java:240) at sun .net.www.http.HttpClient.New(HttpClient.java:321) 在sun.net.www.http.HttpClient.New(HttpClient.java:338) 在sun.net.www.protocol.http.HttpURLConnection .getNewHttpClient(HttpURLConnection.java:806) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:747) at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection。 java:672) at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:850) at com.sun.jersey.client.urlconnection.URLConnectionClientHandler $ 1 $ getOutputStream(URLConnectionClientHandler.java:200) at com.sun.jersey.api.client.CommittingOutputStream.commitWrite(CommittingOutputStream.java:114) at com.sun.jersey.api.client.CommittingOutputStream.write(CommittingOutputStream.java:86) at sun.nio。 cs.StreamEncoder.writeBytes(StreamEncoder.java:220) at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:290) at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:294) at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:140) 位於java.io.OutputStreamWriter.fl ush(OutputStreamWriter.java:229) at java.io.BufferedWriter.flush(BufferedWriter.java:253) at com.sun.jersey.core.util.ReaderWriter.writeToAsString(ReaderWriter.java:178) at com。 sun.jersey.core.provider.AbstractMessageReaderWriterProvider.writeToAsString(AbstractMessageReaderWriterProvider.java:125) at com.sun.jersey.core.impl.provider.entity.StringProvider.writeTo(StringProvider.java:85) at com.sun。 jersey.core.impl.provider.entity.StringProvider。writeTo(StringProvider.java:57) at com.sun.jersey.api.client.TerminatingClientHandler.writeRequestEntity(TerminatingClientHandler.java:291) at com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke(URLConnectionClientHandler.java: 179) 在com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:126) ... 8個

我試着用-Djava.net.preferIPv4Stack=false-Djava.net.preferIPv6Stack=true運行,但它並沒有幫助。

與IPv6相同的代碼在Weblogic上的同一臺機器上工作。

有什麼建議嗎?

回答

0

這個問題確實解決是不夠的,因爲這值在standalone.confstandalone.sh改寫。

因此,應該做的是在這兩個文件中搜索-Djava.net.preferIPv4Stack=true並將它們修改爲-Djava.net.preferIPv4Stack=false

0

啓動JBoss以這種方式

的JBoss 7:./standalone.sh -Djava.net.preferIPv4Stack =假

的JBoss 7:./standalone .sh -Djava.net.preferIPv6Stack = true

默認情況下,IPv 4在Java功能,你需要告訴明確設置-Djava.net.preferIPv4Stack=false,但通過它作爲參數傳遞給./standalone.sh使用IPv6

+0

我在我的問題結尾寫道,我試過這個,但它沒有幫助... – danieln

+0

您使用的是JDK/JRE? – Reddy

+0

Sun Microsystems Inc.,'OpenJDK Server VM',1.6.0 – danieln

相關問題