1、新建一个java项目

2、导入cxf相关的jar包,并部署到项目中

3、bean类

 package com.xiaostudy;

 import javax.xml.bind.annotation.XmlRootElement;

 /**
* @desc bean类
* @author xiaostudy
*
*/
@XmlRootElement(name = "user")
public class User { private int id;
private String name;
private int age; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} }

4、服务接口

 package com.xiaostudy;

 import java.util.List;

 import javax.jws.WebService;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType; /**
* @desc 服务器接口
* @author xiaostudy
*
*/
@WebService//表示发布服务
@Path("/user")//类访问数据的路径
public interface Test_service { @GET//访问方式
//"application/json;charset=utf-8"是JSon数据类型,MediaType.APPLICATION_XML是xml数据类型
//两个同时用的话,get访问方式默认是xml数据类型,post默认是JSon数据类型,访问的时候可以自己设置数据类型
@Produces({"application/json;charset=utf-8",MediaType.APPLICATION_XML})
@Path("/getUser/{name}")//方法访问数据的路径,{}表示是参数
public User getUser(@PathParam("name")String name);//设置参数名称 @GET//访问方式
@Produces("application/json;charset=utf-8")//只用JSon数据类型
@Path("/getUserList/{names}")//方法访问数据的路径,{}表示是参数
public List<User> getUserList(@PathParam("names")String... names);//设置参数名称 }

5、服务接口实现类

 package com.xiaostudy;

 import java.util.List;
import java.util.Vector; /**
* @desc 服务器接口实现类
* @author xiaostudy
*
*/
public class Test_serviceImpl implements Test_service { /**
* @desc 处理客户端的数据,并返回数据
* @param name 参数
* @return String 返回数据类型
*/
@Override
public User getUser(String name) {
User user = new User();
user.setId(1111);
user.setName(name);
user.setAge(23);
return user;
} @Override
public List<User> getUserList(String... names) {
List<User> list = new Vector<User>();
for(int i = 0; i < names.length; i++) {
User user = new User();
user.setId(1+i);
user.setName(names[i]);
user.setAge(23+i);
list.add(user);
}
return list;
} }

6、开启服务

 package com.xiaostudy;

 import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxrs.JAXRSServerFactoryBean; /**
* @desc 开始服务器类
* @author xiaostudy
*
*/
public class MyService { public static void main(String[] args) {
// JaxWsServerFactoryBean发布服务
JAXRSServerFactoryBean jAXRSServerFactoryBean = new JAXRSServerFactoryBean();
// 设置服务实现类
jAXRSServerFactoryBean.setServiceBean(new Test_serviceImpl());
//设置资源类
jAXRSServerFactoryBean.setResourceClasses(Test_serviceImpl.class);
// 设置服务地址
jAXRSServerFactoryBean.setAddress("http://127.0.0.1:9998/test");
// 拦截器
jAXRSServerFactoryBean.getInInterceptors().add(new LoggingInInterceptor());
jAXRSServerFactoryBean.getOutInterceptors().add(new LoggingOutInterceptor()); // 发布服务
jAXRSServerFactoryBean.create(); } }

7、测试是否发布成功,wsdl是w3c标准,wadl是REST的


结合spring整合发布

就是把这java的main发布转到Tomcat服务器上

applicationContext.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"
xmlns:jaxrs="http://cxf.apache.org/jaxrs" xmlns:cxf="http://cxf.apache.org/core"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd"> <!-- <jaxrs:server发布REST的服务 ,对JAXRSServerFactoryBean类封装-->
<jaxrs:server address="/test">
<jaxrs:serviceBeans>
<ref bean="test_serviceImpl"/>
</jaxrs:serviceBeans>
</jaxrs:server> <!-- 配置服务实现类 -->
<bean name="test_serviceImpl" class="com.xiaostudy.Test_serviceImpl"/>
</beans>

web.xml

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>ws_2_cxf_spring_server</display-name> <!-- 设置spring的环境 -->
<context-param>
<!--contextConfigLocation是不能修改的 -->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <!-- 配置CXF的Servlet -->
<servlet>
<servlet-name>CXF</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CXF</servlet-name>
<url-pattern>/rs/*</url-pattern>
</servlet-mapping> <welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>

访问方式


webservice用cxf发布REST的更多相关文章

  1. So easy Webservice 7.CXF 发布WebService

    (一)使用ServerFactoryBean 方式实现发布WS服务 1.新建项目,添加cxf jar包到项目中 2.编写服务实现类 /** * CXF WebService * 不用注解 * @aut ...

  2. webservice用cxf发布SOAP

    cxf的安装,就是把文件解压,然后配置环境变量 http://cxf.apache.org/download.html这是官网下载 解压到这里 环境变量 wsdl2java命令测试 1.新建java项 ...

  3. Spring集成CXF发布WebService并在客户端调用

    Spring集成CXF发布WebService 1.导入jar包 因为官方下载的包里面有其他版本的sprring包,全导入会产生版本冲突,所以去掉spring的部分,然后在项目根目录下新建了一个CXF ...

  4. 使用CXF发布WebService

    这里普及一下WebService和cxf的知识.关于webservice和cxf:   WebService.各种提供服务的组件     .企业总线.通讯总线(ESB)CXF:是一个SOA框架,Axi ...

  5. CXF发布webService服务以及客户端调用

    这篇随笔内容是CXF发布webService服务以及客户端调用的方法 CXF是什么? 开发工作之前需要下载CXF和安装 下载地址:http://cxf.apache.org 安装过程: <1&g ...

  6. CXF发布restful WebService的入门例子(客户端)

    上篇说了怎么用cxf发布restful webservice,由于浏览器只能对该service发送http的GET请求,所以如果想对服务器上的数据,还需要实现客户端. 客户端的实现方式有无数种...可 ...

  7. CXF发布restful WebService的入门例子(服务器端)

    研究了两天CXF对restful的支持.   现在,想实现一个以 http://localhost:9999/roomservice 为入口, http://localhost:9999/roomse ...

  8. 使用CXF发布WebService服务简单实例

    一.说明: 前面介绍了使用axis2来发布Webservice服务,现在介绍一种更popular,更高效的Webservice服务发布技术:CXF Apache CXF = Celtix + XFir ...

  9. [置顶] 利用CXF发布webService的小demo

    其实webService的发布不仅仅只有xfire,今天,给大家介绍一下用CXF发布一个webService的小demo,CXF也是我做webService用的第一个框架... 先将相关的jar引进来 ...

随机推荐

  1. datasnap 授权验证DSAuthenticationManager方法应用

    服务端 1.服务端只需要增加DSAuthenticationManager1并且把dshttpservice的AuthenticationManager属性设置为DSAuthenticationMan ...

  2. MPI Maelstrom---poj1502(最短路模板)

    题目链接:http://poj.org/problem?id=1502 题意:求从处理器1到其它处理器所需的最少时间是多少: 输入是下三角,如果是x表示A[i][j]不能直接联系: #include ...

  3. Android 查看自己的keystore的别名及相关信息

    1.在DOS窗口下进入自己的keystore所在位置,输入 keytool -list  -v -keystore xxxx.keystore -storepass 密码 xxxx.keystore是 ...

  4. HTTP API 设计指南(转)

    add by zhj (2014-12-16): 今天才知道,原画HeroKu是国外一个很有名的PaaS提供商,公司很可能会将app迁移到他们那里 英文原文: HTTP API Design Guid ...

  5. Linux上安装rz和sz命令

    简介 lrzsz 官网入口:http://freecode.com/projects/lrzsz/ lrzsz是一个unix通信套件提供的X,Y,和ZModem文件传输协议 windows 需要向ce ...

  6. Elasticsearch.js 发布 —— 在Node.js和浏览器中调用Elasticsearch(1)

    继PHP.Ruby.Python和Perl之后,Elasticsearch最近发布了Elasticsearch.js,Elasticsearch的JavaScript客户端库.可以在Node.js和浏 ...

  7. Linux环境下NodeJS的安装配置(HelloWorld)

    Linux环境下NodeJS的安装配置(HelloWorld) 最简单的环境安装,测试helloworld.给初学者!! 安装脚本,请仔细阅读逐行执行: #!/bin/bash #检查是否已经安装 r ...

  8. 二进制x&(x-1);

    求下面函数的返回值(微软) int func(x) {     int countx = 0;     while(x)     {           countx ++;           x ...

  9. 剑指offer-基本思想学习(未包括代码)

    转自:https://blog.csdn.net/Together_CZ/article/details/74906427 1.面试7:使用两个栈实现一个队列. //猛一看有点晕,实际上很简单. 使用 ...

  10. Linux打包压缩与安装卸载

     一.打包压缩 (1)tar:打包拆包命令 tar -cxzjvf 打包后的文件 欲打包的目录  -c:打包文件夹  -x:拆开文件夹  -z:以gzip格式压缩,默认压缩倍数为6倍  -j:以bzi ...