我正在使用 Apache Axis 将我的 Java 应用程序连接到 Web 服务器。我使用 wsdl2java 为我创建存根,但是当我尝试使用存根时,出现以下异常:

org.apache.axis.ConfigurationException:没有命名的服务 <web service name> 可用

任何想法?

有帮助吗?

解决方案

只是猜测,但看起来该错误消息报告您已将服务名称留空。我想象生成该错误消息的代码如下所示:

throw new ConfigurationException("No service named" + serviceName + " is available");

其他提示

根据 文档 由 @arnonym 链接,此异常有些误导。在第一次尝试查找服务时,会抛出并捕获 ConfigurationException。它由 ConfigurationException 类记录在 DEBUG 级别。然后使用不同的方法进行另一次尝试来查找可能会成功的服务。解决方法是在 log4j.properties 中将 ConfigurationException 类的日志级别更改为 INFO:

log4j.logger.org.apache.axis.ConfigurationException = INFO

这是 Axis 控制流使用的异常。

http://wiki.apache.org/ws/FrontPage/Axis/DealingWithCommonExceptions--> org.apache.axis.ConfigurationException:没有名为 XXX 的服务可用

这就是我的代码的样子。看起来效果很好。您正在使用服务定位器还是只是创建您的服务?

SomeServiceLocator locator = new SomeServiceLocator();
SomeService service = null;
try
{
    service = locator.getSomeServiceImplPort();
}
catch (ServiceException e)
{
    e.printStackTrace();
}

我不知道您使用的是哪个版本的 Axis,但我使用 Axis2 作为服务器和客户端,并且 Java2WSDL 在本地主机上为服务创建默认端点。如果您使用 WSDL2Java 创建客户端存根,则存根的默认构造函数将指向 localhost。如果服务位于其他端点,则必须使用以端点作为参数的构造函数...也许问题根本不是这个,但正如其他答案所述,如果没有您用作 WSDL2Java 输入的 WSDL,就很难说。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top