springboot整合axis2生成webservice的wsdl文档的例子,这个是我在网上找到的 ,请参考:https://github.com/donghc/demo https://blog.csdn.net/dong945221578/article/details/71429735
错误描述:在生成wsdl文档后,服务端想在程序中调用其他service的方法 ,但使用@autowired注入是发现是null,无法使用service中的方法
客户端调用异常:
AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: java.lang.NullPointerException faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace: java.lang.NullPointerException at java.util.Hashtable.put(Unknown Source) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.setProperty(Unknown Source) at org.apache.axis.encoding.DeserializationContextImpl.parse(DeserializationContextImpl.java:246) at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:538)解决办法:使用SpringContextUtils工具类注入 在调用方法
SpringContextUtils代码:
package com.chaoju.common; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; /** * Spring容器工具类 * @author lv * */ @Component("springContextUtils") public class SpringContextUtils implements ApplicationContextAware { /** * Spring应用上下文环境 */ private static ApplicationContext applicationContext; /** * 实现ApplicationContextAware接口的回调方法,设置上下文环境 * * @param applicationContext */ public void setApplicationContext(ApplicationContext applicationContext) { SpringContextUtils.applicationContext = applicationContext; } /** * @return ApplicationContext */ public static ApplicationContext getApplicationContext() { return applicationContext; } /** * 获取对象 * * @param name * @return Object * @throws BeansException */ public static Object getBean(String name) throws BeansException { return applicationContext.getBean(name); } /** * 根据class获取对应的bean对象 * @param clz * @return */ public static Object getBean(Class<?> clz){ return applicationContext.getBean(clz); } }使用方式:
Webservice webservice = (Webservice) SpringContextUtils.getBean(Webservice.class);