在Weblogic 10.3上调用WebService时未实现的方法
我开发了一个Web服务客户端来连接部署在Weblogic 10.3上的Web服务。 尝试实例化客户端对象时,始终会获得相同的exception
java.lang.UnsupportedOperationException: Method not implemented. at java.net.URLStreamHandler.openConnection(URLStreamHandler.java:80) at java.net.URL.openConnection(URL.java:992)
从URLStreamHandler看到方法实现,我发现它只是抛出exception
protected URLConnection openConnection(URL u, Proxy p) throws IOException { throw new UnsupportedOperationException("Method not implemented."); }
我想WebLogic需要您传递一个带有子类UrlStreamHandler的库,它提供了一个openConnection实现,但不确定它应该是什么。
项目中的某些其他库可能已注册了一个URLStreamHandler实现,该实现未使用proxy参数实现openConnection方法。
默认的URLStreamHandler类是位于rt.jar中的sun.net.www.protocol.http.Handler。
在我的例子中,我使用了jcifs库,它注册了自己的http Handler但没有实现openConnection(URL,Proxy)方法。
因此,您应该为Handler提供openConnection(URL,Proxy)的实现,或者如果可能,您应该使用默认的Handler。
注意:在我的例子中,url.openConnection方法是从com.sun.xml.internal.ws.api.EndpointAddress(rt.jar)调用的。 在java 6中,这会抛出UnsupportedOperationException。 在java 7中,此exception在此EndpointAddress类中捕获,然后在不使用代理的情况下调用url.openConnection。 所以更新到java 7也应该解决这个问题。
当使用未覆盖openConnection(URL u,Proxy p)的旧WL客户端时,我遇到此exception,并且有时首先加载weblogic处理程序。 解决方案是升级到更新的WL版本,并将该方法覆盖。