Метод не реализован при вызове WebService в Weblogic 10.3
Я разработал клиент веб-службы для подключения к веб-службе, развернутой в Weblogic 10.3. При попытке создать экземпляр объекта клиента всегда получайте одно и то же исключение.
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, но не уверены, какой именно она должна быть.
2 ответа
Я получил это исключение, когда использовал старый клиент WL, который не переопределял openConnection(URL-адрес u, Proxy p), и иногда сначала загружался обработчик weblogic. Решение состояло в том, чтобы перейти на более новую версию WL с переопределением этого метода.
Некоторые другие библиотеки в вашем проекте, вероятно, зарегистрировали реализацию URLStreamHandler, которая не реализует метод openConnection с параметром proxy.
Класс URLStreamHandler по умолчанию - это sun.net.www.protocol.http.Handler, расположенный в rt.jar.
В моем случае я использовал библиотеку jcifs, которая зарегистрировала свой собственный обработчик http, но не реализовал метод openConnection(URL, Proxy).
Таким образом, вы должны предоставить обработчику реализацию openConnection(URL, Proxy) или использовать обработчик по умолчанию, если это возможно.
Примечание. В моем случае метод url.openConnection вызывался из com.sun.xml.internal.ws.api.EndpointAddress (rt.jar). В Java 6 это вызывает исключение UnsupportedOperationException. В Java 7 это исключение перехватывается в этом классе EndpointAddress, а затем вызывается url.openConnection без использования прокси. Таким образом, обновление до Java 7 также должно решить эту проблему.