2

我开发了一个 Web 服务客户端来连接部署在 Weblogic 10.3 上的 Web 服务。尝试实例化客户端对象时总是得到相同的异常

java.lang.UnsupportedOperationException: Method not implemented.
    at java.net.URLStreamHandler.openConnection(URLStreamHandler.java:80)
    at java.net.URL.openConnection(URL.java:992)

查看来自 URLStreamHandler 的方法实现,我发现它只是抛出异常

protected URLConnection openConnection(URL u, Proxy p) throws IOException {
throw new UnsupportedOperationException("Method not implemented.");
}

我想 WebLogic 需要你传递一个带有 UrlStreamHandler 子类的库,提供一个 openConnection 实现,但不确定它应该是哪个。

4

2 回答 2

0

您项目中的其他一些库可能已经注册了一个 URLStreamHandler 实现,它没有实现带有代理参数的 openConnection 方法。

默认的 URLStreamHandler 类是位于 rt.jar 中的 sun.net.www.protocol.http.Handler。

在我的例子中,我使用了 jcifs 库,它注册了自己的 http 处理程序,但没有实现 openConnection(URL, Proxy) 方法。

因此,您应该为 Handler 提供 openConnection(URL, Proxy) 的实现,或者尽可能使用默认的 Handler。

注意:在我的例子中,url.openConnection 方法是从 com.sun.xml.internal.ws.api.EndpointAddress (rt.jar) 调用的。在 java 6 中,这会引发 UnsupportedOperationException。在 java 7 中,此异常在此 EndpointAddress 类中被捕获,然后在不使用代理的情况下调用 url.openConnection。所以更新到 java 7 也应该可以解决这个问题。

于 2014-12-08T08:26:32.713 回答
0

我在使用未覆盖 openConnection(URL u, Proxy p) 的旧 WL 客户端时遇到此异常,并且有时会先加载 weblogic 处理程序。解决方案是升级到更新的 WL 版本,并覆盖该方法。

于 2017-11-02T15:27:16.670 回答