【发布时间】:2010-09-09 01:58:09
【问题描述】:
我正在使用 Apache Axis 将我的 Java 应用程序连接到 Web 服务器。我使用 wsdl2java 为我创建存根,但是当我尝试使用存根时,出现以下异常:
org.apache.axis.ConfigurationException:没有名为
<web service name>的服务可用
有什么想法吗?
【问题讨论】:
我正在使用 Apache Axis 将我的 Java 应用程序连接到 Web 服务器。我使用 wsdl2java 为我创建存根,但是当我尝试使用存根时,出现以下异常:
org.apache.axis.ConfigurationException:没有名为
<web service name>的服务可用
有什么想法吗?
【问题讨论】:
根据@arnonym 链接的documentation,这个例外有点误导。在第一次尝试查找服务时,会抛出并捕获 ConfigurationException。它由 ConfigurationException 类在 DEBUG 级别记录。然后使用不同的方法进行另一次尝试以查找可能会成功的服务。解决方法是在 log4j.properties 中将 ConfigurationException 类的日志级别更改为 INFO:
log4j.logger.org.apache.axis.ConfigurationException = INFO
【讨论】:
只是猜测,但看起来该错误消息报告您已将服务名称留空。我想生成该错误消息的代码如下所示:
throw new ConfigurationException("No service named" + serviceName + " is available");
【讨论】:
这是 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 为 localhost 上的服务创建了一个默认端点。如果您使用 WSDL2Java 创建客户端存根,则存根的默认构造函数将指向 localhost。如果服务在其他端点上,则必须使用带有端点作为参数的构造函数... 也许问题根本不是那个问题,而是正如其他答案所说,如果没有您用作 WSDL2Java 输入的 WSDL,就很难说。
【讨论】: