我正在使用 Apache Axis 将我的 Java 应用程序连接到 Web 服务器。我使用 wsdl2java 为我创建存根,但是当我尝试使用存根时,出现以下异常:
org.apache.axis.ConfigurationException: No service named `<web service name>` is available
发生了什么事?
根据@arnonym 链接的文档,这个例外有点误导。在第一次尝试查找服务时,将抛出并捕获 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 为本地主机上的服务创建了一个默认端点。如果您使用 WSDL2Java 创建客户端存根,那么存根的默认构造函数将指向本地主机。如果服务在其他端点上,则必须使用以端点作为参数的构造函数... 也许问题根本不在于此,但正如其他答案所说,如果没有您用作 WSDL2Java 输入的 WSDL,则很难说。