我正在使用Spring的ContextLoaderListener来初始化Web服务客户端,但是如果在应用程序启动期间wsdl文档不可用,那么我的应用程序的一部分就会被破坏,我不知道如何修复它。应用程序成功启动,只记录该点的大堆栈跟踪。例外是:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myWebService' defined in class path resource [spring-myapp-jaxws.xml]: Invocation of init method failed; nested exception is javax.xml.ws.WebServiceException: The following WSDL exception occurred... etc.
几个问题......
答案 0 :(得分:3)
尝试将bean定义为lazy="true"
,以便在未引用它时不进行初始化。
否则,您必须创建一个进行此检查的代理。代理可以通过以下方式创建:
java.lang.reflect.Proxy
答案 1 :(得分:0)
您的选项似乎归结为以下几点:
javax.xml.ws.WebServiceException
异常传播出您的控件。您将通过在代码中的某处捕获异常来实现此目的。
以下是一个例子:
public interface MyWebServiceCallingInterface
{
String callTheWebService();
}
public class MyWebService extends something,
implements MyWebServiceCallingInterface
{
public MyWebService()
throws javax.xml.ws.WebServiceException
{
... do stuff, maybe throw exception ...
}
public String callTheWebService()
{
... do stuff ...
}
}
public class MyWebServiceWrapper
implements MyWebServiceCallingInterface
{
private MyWebService myWebService;
public MyWebServiceWrapper()
{
createWebService();
}
public String callTheWebService()
{
if (myWebService == null)
{
createWebService();
}
if (myWebService != null)
{
return myWebService.callTheWebService();
}
else
{
...error handling stuff...
return ... something meaningful ...
}
}
private void createWebService()
{
try
{
myWebService = new MyWebService();
}
catch (javax.xml.ws.webServiceException exception)
{
myWebService = null;
}
}
}