使用apache-cxf-2.2.10来制作一个极简版WebService程序

简介:

原想拿最新版cxf来制作的,无奈Apache的zip包总下不下来,国内的apache-cxf-2.2.10却一蹴而就,也就用了这个版本。下载地址是:http://pan.baidu.com/s/1tdgiW

整个程序的下载地址是:http://pan.baidu.com/s/1GdI5p ,里面包括服务器端和测试客户端,伸手党直接拿走就好了。

用cxf做Webservice还是很顺手的,感觉比以前的Axis1/2都要简单快捷。

首先,讲讲如何做服务器端。

先用MyEclipse创建一个Web工程,把apache-cxf-2.2.10里面lib目录的jar包都拷到web-inf下的lib目录里,再将所有lib引导到工程中。

其次,把Web.xml改写如下:

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      <display-name>Rts Cxf WebService</display-name>    
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
  
    <context-param>  
        <param-name>contextConfigLocation</param-name>  
        <param-value>WEB-INF/appctx.xml</param-value>  
    </context-param>  
  
    <listener>  
        <listener-class>  
            org.springframework.web.context.ContextLoaderListener  
        </listener-class>  
    </listener>  
  
    <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>/*</url-pattern>  
    </servlet-mapping>  
</web-app>
复制代码

然后,在WEB-INF下创建一个appctx.xml,内容如下:

复制代码
<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns:jaxws="http://cxf.apache.org/jaxws"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans   
    http://www.springframework.org/schema/beans/spring-beans.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" />  
  
    <!-- 上面不用管 ,id随意,implementor是实现类,address在客户端的地址中会用到-->
    <jaxws:endpoint id="getresponse" implementor="com.hy.TestImpl" address="/getResponse" />  
</beans>  
复制代码

然后,创建一个接口:

复制代码
package com.hy;

import javax.jws.WebService;

@WebService  
public interface Test{
    public String getResponse(String req);
}
复制代码

在实现一个类:

复制代码
package com.hy;

import javax.jws.WebService;

@WebService  
public class TestImpl implements Test{

    public String getResponse(String req) {

        return "Hello!"+req;
    }
}
复制代码

注意上面的Annotator “@WebService” 不能少,我都用粗体标识出来了,少了就玩不转了。

之后,把工程发布到Tomcat里,WebService就运转起来了。

在浏览器地址栏输入http://localhost:8080/cxfServer是这个效果:

 

服务端运转起来,需要客户端来测试一下。

这回是制作一个java工程,将lib同样倒一下。

然后把Test接口拷贝过来,再写一个测试程序就好了:

复制代码
package com.hy;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;


public class Main{
    public static void main(String[] args){
        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();  
        factory.setServiceClass(Test.class);  
        factory.setAddress("http://localhost:8080/cxfServer/getResponse");  // localhost:8080/ + appname+/+address(appctx.xml里写的)
        Test t = (Test) factory.create();  
        System.out.println(t.getResponse("逆火狂飙"));  
    }
}
复制代码

这个跑完的效果是:Hello!逆火狂飙

 

就是这些内容,确实简单。你可以以此为基础发明自己的WebService。












本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/xiandedanteng/p/3436473.html,如需转载请自行联系原作者



相关文章
|
7月前
|
Java API Apache
Apache CXF生成WebService的客户端
Apache CXF生成WebService的客户端
252 0
|
XML Java API
彻底了解|利用Apache CXF框架开发WebService
前言WebService是为了支持网络的机器间操作交互而设计用来开发分布式的交互操作的应用程序组件,通常被定义为一组模块化的API,他们可以通过网络进行调用,来执行远程系统的请求服务,而...
519 0
|
Java 测试技术 应用服务中间件
一起谈.NET技术,Silverlight访问Apache服务器(Tomcat,Geronimo)中部署的Webservice
  开发环境   Vs2010 、 Silverlight4 、 Java Jdk1.6 U 21 、 Apache-tomcat-6.0.20 、 Myeclipse8.5 、 Apache-ant-1.
1119 0
|
Web App开发 Java Apache
|
4天前
|
存储 人工智能 大数据
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
237 33
The Past, Present and Future of Apache Flink
|
2月前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
789 13
Apache Flink 2.0-preview released
|
2月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
88 3

热门文章

最新文章

推荐镜像

更多