因为本人项目是在已有的ssh项目上二次开发集成,则对于ssh框架的搭建不在做解释。
一、导入cxf所需jar包
二、编写接口
<span style="font-size:18px;">package com.xxx.cxf; import javax.jws.WebParam; import javax.jws.WebService; @WebService public interface CxfWsdl { public String getCurrentOnline(@WebParam(name="xml") String xml); }</span>
注意,使用@WebParam(name="xml")来解决生成wsdl时参数名为arg0的问题
三、编写实现类
注意的是和Spring集成,这里一定要完成接口实现,如果没有接口的话会有错误的。
<span style="font-size:18px;">package com.xxx.cxf; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; @WebService(endpointInterface = "com.xxx.cxf.CxfWsdl") public class CxfWsdlImpl implements CxfWsdl { @WebMethod @Override public String getCurrentOnline(String xml) { System.out.println("-----getCurrentOnline----"+xml); return "getCurrentOnline"; } }</span>
四、配置web.xml
<span style="font-size:18px;"><!-- 加载spring容器配置 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 设置spring容器加载配置文件路径 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:applicationContext-server.xml</param-value> </context-param> <!-- 防止内存泄露 --> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <!--配置cxf访问路径 --> <servlet> <servlet-name>CXFService</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>CXFService</servlet-name> <url-pattern>/cxf/*</url-pattern> </servlet-mapping></span>
配置applicationContext-server.xml文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd" 划线的为新增加配置语句 <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"/>
导入文件,其中这三个文件在l三个文件都在cxf-2.0.7.jar中把它们拷贝到meta-inf/目录下,粘贴复制即可
<bean id="cxfImpl" class="com.xxx.cxf.CxfWsdlImpl"/> <bean id="inMessageInterceptor" class="org.apache.cxf.interceptor.LoggingInInterceptor"> <!-- <constructor-arg value="receive"/> --> </bean> <bean id="outLoggingInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor"/> <!-- 注意下面的address,这里的address的名称就是访问的WebService的name --> <jaxws:serverid="cxfWsdl" serviceClass="com.xxx.cxf.CxfWsdl" address="/cxfWsdl"> <jaxws:serviceBean> <!-- 要暴露的 bean 的引用 --> <ref bean="cxfImpl"/> </jaxws:serviceBean> <jaxws:inInterceptors> <ref bean="inMessageInterceptor"/> </jaxws:inInterceptors> <jaxws:outInterceptors> <ref bean="outLoggingInterceptor"/> </jaxws:outInterceptors> </jaxws:server>
截图如下:
访问地址
http://localhost:8080/hrss3/cxf/cxfWsdl?wsdl
其中cxf为web中配置的拦截路径
cxfWsdl为application文件中配置的address
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。