关于java:Apache Axis ConfigurationException

关于java:Apache Axis ConfigurationException

Apache Axis ConfigurationException

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

org.apache.axis.ConfigurationException: No service named is available

任何想法?


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

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

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

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


这是Axis控制流使用的例外。

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


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


这就是我的代码。似乎工作正常。
您是使用服务定位器还是只是创建服务?

1
2
3
4
5
6
7
8
9
10
SomeServiceLocator locator = new SomeServiceLocator();
SomeService service = null;
try
{
    service = locator.getSomeServiceImplPort();
}
catch (ServiceException e)
{
    e.printStackTrace();
}


推荐阅读