前面的几个系列已经说明了如何利用CXF创建SOAP应用,接下来我们需要把CXF创建SOAP的细节进行一些封装,只需要简单的利用注解就可以完成。那接下来就开始:
注解
既然我们提到只需要简单的利用注解,那么我们就需要创建一个注解@Soap
package org.iframework.plugin.soap;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Soap服务注解,默认为类名
* Created by lizhaoz on 2016/4/27.
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Soap {
String value() default "";
}
这里使用value来记录服务地址,默认为接口名。
重写CXFNonSpringServlet
这里我们不会再web.xml中再去配置,所以需要重写后写
@WebServlet(urlPatterns = SoapConstant.SERVLET_URL,loadOnStartup = 0)
接下来我们会重写loadBus方法也就是我们的发布Soap,这里简单的说一下BUS是什么:BUS是cxf的支架,它主要担当扩展及拦截器提供者的角色。代码如下:
package org.iframework.plugin.soap;
import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
import org.apache.cxf.transport.servlet.CXFNonSpringServlet;
import org.framework.helper.BeanHelper;
import org.framework.helper.ClassHelper;
import org.framework.util.CollectionUtil;
import