javax.xml.ws.Service конструктор не возвращает - PullRequest
2 голосов
/ 30 июня 2011

У меня проблема с развертыванием веб-приложения Glassfish, которое периодически вызывает веб-службу. Похоже, в основном проблема заключается в том, что вызов javax.xml.ws.Service никогда не возвращается. Исключений нет.

Код выглядит следующим образом (имена объектов / переменных изменены):

  MyService ss = new MyService(wsdlURL, SERVICE_NAME);

где wsdlURL - это объект URL для локального файла WSDL (также пытался использовать удаленно размещенный WSDL), а SERVICE_NAME - строка с именем веб-службы.

Фактический конструктор для объекта MyService просто вызывает super для javax.xml.ws.Service

public class MyService extends Service {
    public MyService(URL wsdlLocation, QName serviceName) {
        super(wsdlLocation, serviceName);
    }
}

На моей машине для разработки это работает точно так, как ожидалось, но при развертывании вызов Конструктор MyService никогда не возвращается.

Я пытаюсь развернуть это на сервере Glassfish v3.1, работающем на Red Hat Enterprise Linux Server версии 5.6 (Tikanga).

Версия Java 1.6 для среды разработки и развертывания.

У кого-нибудь есть идеи о том, что здесь может происходить? Отсутствие каких-либо исключений затрудняет отладку. Я полагаю, что это может потенциально быть проблемой WSDL, так как если я правильно понимаю, javax.xml.ws.Service выполняет некоторую интерпретацию во время вызова конструктора, который, как я полагаю, может вызывать зависание. Тем не менее, кажется странным, что он отлично работает на моей машине для разработки, но не на сервере развертывания.

Любая помощь очень ценится!

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

У меня был похожий опыт, и это потому, что данный URL был недействительным.

0 голосов
/ 20 июля 2011

Возможно, проблема в том, что прокси-сервер используется на компьютере развертывания. Я столкнулся с той же проблемой и позже выяснил, что это связано с настройками прокси.

Попробуйте настроить прокси перед созданием класса Stub, т.е.

 System.setProperty("http.proxyHost", "xxx.x.xx.xx");
 System.setProperty("http.proxyPort", "8080");
 MyService ss = new MyService(wsdlURL, SERVICE_NAME);
...