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>

访问方式


最新文章

  1. 利用 HashSet 去过滤元素是否重复
  2. android 编译
  3. Unity3d与iOS交互开发——接入平台SDK必备技能
  4. mongodb初步使用
  5. HDU 5451 广义斐波那契数列
  6. 动态加载so文件
  7. CheckedListBox与CheckedListBox联动
  8. Codeforces Round #209 (Div. 2)
  9. [Webpack 2] Ensure all source files are included in test coverage reports with Webpack
  10. (转)php中GD库的配置,解决dedecms安装中GD不支持问题
  11. InnoSetup中枚举出INI文件的所有sections和键值
  12. Linux正則表達式-反复出现的字符
  13. Thymeleaf 笔记
  14. PLSQL触发器
  15. java aio nio bio
  16. Day4_迭代器
  17. 基于注解的SpringMVC自定义DispatcherServlet配置
  18. 设计前沿:16款扁平风格 iOS 7 图标设计
  19. Django 跨域请求 解决 axios 未完待续
  20. Major GC和Full GC的区别是什么?触发条件呢?

热门文章

  1. LeetCode_Isomorphic Strings
  2. sigmoid &amp; softmax、cross-entropy、relu
  3. Art of Android Develop. Activity的生命周期和启动模式。
  4. Jmeter(四)测试webservice脚本
  5. Spark2.0机器学习系列之12: 线性回归及L1、L2正则化区别与稀疏解
  6. Spark 2.0 PCA主成份分析
  7. (转)Spring整合Jpa
  8. C++实现不能继承的类
  9. IOS 此时无法安装XXX
  10. Jenkins系统+独立部署系统