CXF webservice 示例程序及详解

来源:互联网 发布:淘宝没有货源怎么办 编辑:程序博客网 时间:2024/06/05 21:15

1.CXF 所需jar包列表如下(如不全,请根据报错信息适当的增加jar

cxf-2.7.4.jar

stax2-api-3.1.1.jar

woodstox-core-asl-4.2.0.jar

wss4j-1.6.10.jar

xml-resolver-1.2.jar xmlschema-core-2.0.3.jar

geronimo-javamail_1.4_spec-1.7.1.jar

geronimo-jaxws_2.2_spec-1.1.jar

geronimo-jms_1.1_spec-1.1.1.jar

geronimo-servlet_3.0_spec-1.0.jar

jetty-server-8.1.7.v20120910.jar

neethi-3.0.2.jar

2.web.xml配置的说明

增加如下代码:

<!-- cxf配置 -->

 <servlet>

<servlet-name>CXFServlet</servlet-name>

<servlet-class> org.apache.cxf.transport.servlet.CXFServlet </servlet-class> <load-on-startup>1</load-on-startup>

 </servlet>

<servlet-mapping>

<servlet-name>CXFServlet</servlet-name>

<url-pattern>/services/*</url-pattern>

 </servlet-mapping>

配置说明:

servlet-name:servlet的名称

servlet-classservlet的对应处理类

load-on-startup:设置程序启动时自动加载此servlet

url-pattern:要匹配的url链接

3.spring-service.xml配置的说明

beans中增加xml效验脚本

需要加入xmlns:jaxws="http://cxf.apache.org/jaxws"

http://cxf.apache.org/jaxwshttp://cxf.apache.org/schemas/jaxws.xsd

需要引入CXF的官方配置文件

<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" />

内容中增加如下代码:

<!-- 请求的参数等相关日志记录拦截器-->

<bean id="inMessageInterceptor" class="org.apache.cxf.interceptor.LoggingInInterceptor"> </bean>

<!-- 返回的参数等相关日志记录拦截器--> <bean id="outLoggingInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor" />

<!-- 采用jaxws:server方式 --> <jaxws:server id="jkfwService" serviceClass="webservice.declare.IJkfwService" address="/IJkfwService" bindingId="http://schemas.xmlsoap.org/wsdl/soap/http"> <jaxws:serviceBean> <bean class="webservice.declare.impl.JkfwService" /> </jaxws:serviceBean>

<jaxws:inInterceptors> <ref bean="inMessageInterceptor" /> </jaxws:inInterceptors> <jaxws:outInterceptors> <ref bean="outLoggingInterceptor" /> </jaxws:outInterceptors>

</jaxws:server>

配置说明:

serviceClasswebservice对应的接口类

address:请求的WSDL的请求路径

bindingIdwebservice请求使用的协议类型

jaxws:serviceBeanwebservice的实现类

jaxws:inInterceptors:请求的参数等相关日志记录拦截器

jaxws:outInterceptors:返回的参数等相关日志记录拦截器

4.webservice接口配置说明示例代码如下:

/**

 * <ol>

 * date:2012-1-11 editor:fanlei

 * <li>健康卡信息采集的WebService服务接口</li>

 * </ol>

 * @author <a href="mailto:ifanvip@gmail.com">fanlei</a>

 * @version 1.0

 * @since 1.0

 */

@WebService (targetNamespace="http://webservice.web.jkfw",name="IJkfwServicePortType",portName="IJkfwServiceHttpPort" ,serviceName="IJkfwService")

public interface IJkfwService {

 public @WebResult(name="out",targetNamespace ="http://webservice.web.jkfw") String call(@WebParam(name="in0",targetNamespace ="http://webservice.web.jkfw")  String user, @WebParam(name="in1",targetNamespace ="http://webservice.web.jkfw")  String password, @WebParam(name="in2",targetNamespace ="http://webservice.web.jkfw")  String xmlStr);

}

代码说明:

@WebService必选的标注。用于导出的服务接口及其实现类

targetNamespace定义导出的服务接口的名域(namespace),默认是倒置的服务接口Java包名

name定义导出的服务接口的名字,对应于WSDL文档中

wsdl:portType。默认是服务接口的Java类名加PortType

serviceName定义服务名,与名域一起唯一标识一个服务。默认是其Java类名

portName:对应WSDL文档中的wsdl:port元素。默认是Java类名加Port

@WebResult可选的标注,用于指定返回值的使用方式

name:返回值在WSDL文件中的名字。默认是return

targetNamespace对应的名域。默认是服务接口的名域

header: true或者false(默认),指定该参数是否在SOAP消息头部发送

@WebParam,可选的标注,用于指定方法参数的使用方式

             Name:在WSDL文档中的名字,默认是arg0,arg1…

targetNamespace对应的名域。默认是服务接口的名域

header: true或者false(默认),指定该参数是否在SOAP消息头部发送

4.webservice实现类配置说明示例代码如下:

       @WebService(endpointInterface ="webservice.declare.IJkfwService")

publicclass JkfwServiceimplements IJkfwService {

。。。。。。。。(具体实现代码不在书写)

}

代码说明:

@WebService(endpointInterface = "webservice.declare.IJkfwService")

 

实现类中只需指定该实现类知道的webservice接口即可

 

温馨提示:如果你读了这篇文章对你有所启发,请评论下,你的支持是我的无限动力!谢谢!

 示例及其源码请去本人资源库下载,下载地址:http://download.csdn.net/detail/sunbaojin5213344/5444659!

原创粉丝点击