Я использую Apache Axis для подключения своего Java-приложения к веб-серверу. Я использовал wsdl2java для создания заглушек, но когда я пытаюсь использовать заглушки, я получаю следующее исключение:
org.apache.axis.ConfigurationException: No service named
<web service name>is available
любая идея?




Вот как выглядит мой код. Вроде нормально работает. Вы используете локатор услуг или просто создаете свою услугу?
SomeServiceLocator locator = new SomeServiceLocator();
SomeService service = null;
try
{
service = locator.getSomeServiceImplPort();
}
catch (ServiceException e)
{
e.printStackTrace();
}
Просто предположение, но похоже, что это сообщение об ошибке сообщает, что вы оставили пустое имя службы. Я полагаю, что код, который генерирует это сообщение об ошибке, выглядит так:
throw new ConfigurationException("No service named" + serviceName + " is available");
Я не знаю, какую версию Axis вы используете, но я использую Axis2 как для сервера, так и для клиента, а Java2WSDL создает конечную точку по умолчанию для службы на localhost. Если вы создаете клиентскую заглушку с помощью WSDL2Java, конструктор заглушки по умолчанию будет указывать на localhost. Если служба находится на другой конечной точке, вы должны использовать конструктор с конечной точкой в качестве параметра ... Возможно, проблема вовсе не в этом, а, как сказано в других ответах, без WSDL, который вы используете в качестве ввода WSDL2Java, трудно сказать.
Это исключение, используемое потоком управления Axis.
http://wiki.apache.org/ws/FrontPage/Axis/DealingWithCommonExceptions -> org.apache.axis.ConfigurationException: служба с именем XXX недоступна
Согласно документация, на который ссылается @arnonym, это исключение несколько вводит в заблуждение. При первой попытке найти службу генерируется и перехватывается исключение ConfigurationException. Он регистрируется на уровне DEBUG классом ConfigurationException. Затем предпринимается еще одна попытка с использованием другого метода найти службу, которая затем может быть успешной. Чтобы решить эту проблему, просто измените уровень журнала в классе ConfigurationException на INFO в вашем log4j.properties:
log4j.logger.org.apache.axis.ConfigurationException = INFO