别问我为什么是CXF,项目要用这个
一、首先,原始的项目模式要使用新的功能板块,肯定需要加入对应的jar包
现在这些是借鉴其他博客的架包,至于真正需要哪些架包我现在实际根本不清楚,只能等后期彻底熟悉之后再为大家补上了
二、 核心文件web.xml ,配置请求过滤的规则。 这里要开始明白的一点规则是,这里的过滤词语究竟是做什么用的,什么时候用
<!--加入cxf过滤规则--> <servlet> <servlet-name>cxfService</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <load-on-startup>30</load-on-startup> </servlet> <servlet-mapping> <servlet-name>cxfService</servlet-name> <url-pattern>/gxWS/*</url-pattern> </servlet-mapping>
示例,现在我的过滤路径为/gxWS/* 对比最终的wsdl访问路径 http://localhost:8080/gxksxt/gxWS/downloadingWS?wsdl
可以发现 这里的gxWS是整个cxf过滤中必不可少的一部分。当然说出来的话大家都觉得理所当然,而且这个也不一定准确,后面再看
三、修改struts2过滤规则,因为其他的板块访问规则还是原始的*.action 所以这一步我还没有进行,但是仍然能完好的访问wsdl,后期再这么改的时候会
持续更新 .不过测试改为自己的重写过滤器没有什么问题,先不改变规则即可
<filter> <filter-name>struts2</filter-name> <filter-class>com.gx.filter.WebserviceFilter</filter-class> <init-param> <param-name>config</param-name> <param-value> struts-default.xml ,struts-plugin.xml,../struts/struts.xml </param-value> </init-param> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping>
四、再application中加入cxf依赖配置,这个文件是从架包中直接读取的,而且一般的spring标签都有对其的支持,所以照搬copy即可
<!--引入webservice头文件--> <import resource="classpath*:META-INF/cxf/cxf.xml"/> <import resource="classpath*:META-INF/cxf/cxf-extension-soap.xml"/> <import resource="classpath*:META-INF/cxf/cxf-servlet.xml"/>
若有报错,可能是文件头的标签缺失 加上即可
五、开始测试功能,因为为了读取的方便,首先建立一个interface,然后建立一个实现类即可
例如 webService接口 和 webServiceImpl实现 在每个类名上加一个注解@WebService即可
@WebService
public class WebServiceImpl implements WebService {
}
六、 暴露自己的功能访问路径 ,在application中配置 注意名称
<!--暴露webservice接口--> <jaxws:endpoint id="down" implementor="com.gx.service.impl.QcBaseServiceImpl" address="/downloadingWS" > </jaxws:endpoint>
1、 id可以自己定义 2、address可以自己定义,这是指向wsdl文件的最终标识。具有唯一性 3、implementor 即实现过程 必须是完整的定义类