cxf webservice简单应用
Server端
server部署到一个端口号为80的tomcat中

CXFController.java
package com.lwj.controller;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.lwj.util.Privileges;
@WebServlet("/login")
public class CXFController extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Map<String, List<Integer>> privileges = Privileges.getPrivileges();
// 查询当前坐席所能管理的客户,假设为,在这里固定几个数据
List<Integer> ids1 = new ArrayList<Integer>();
ids1.add();
ids1.add();
ids1.add();
List<Integer> ids2 = new ArrayList<Integer>();
ids2.add();
ids2.add();
ids2.add();
privileges.put("fw1950", ids1);
privileges.put("fw1951", ids2);
}
}
CXFListener.java
package com.lwj.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import javax.xml.ws.Endpoint;
import com.lwj.service.ServerImpl;
import com.lwj.service.IServer;
@WebListener
public class CXFListener implements ServletContextListener{
@Override
public void contextDestroyed(ServletContextEvent arg0) {
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("web service start");
IServer implementor= new ServerImpl();
String address="http://localhost:8088/cxf";
Endpoint.publish(address, implementor);
System.out.println("web service started");
}
}
User.java
package com.lwj.po;
public class User {
private int id;
private String account;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User [id=" + id + ", account=" + account + ", name=" + name
+ "]";
}
}
IServer.java
package com.lwj.service;
import javax.jws.WebService;
@WebService
public interface IServer {
String getUserOnline();
}
ServerImpl.java
package com.lwj.service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.jws.WebService;
import com.google.gson.Gson;
import com.lwj.po.User;
import com.lwj.util.Privileges;
@WebService(endpointInterface="com.lwj.service.IServer")
public class ServerImpl implements IServer {
@Override
public String getUserOnline() {
Map<String, List<Integer>> privileges = Privileges.getPrivileges();
List<Integer> list = privileges.get("fw1950");
List<User> users = new ArrayList<User>();
))) {
User u = new User();
u.setId();
u.setAccount("fw1950");
u.setName("刘文举");
users.add(u);
}
Gson gson = new Gson();
return gson.toJson(users);
}
}
Privileges.java
package com.lwj.util;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Privileges {
private static Map<String, List<Integer>> privileges = new HashMap<String, List<Integer>>();
public static Map<String, List<Integer>> getPrivileges() {
return privileges;
}
public static void setPrivileges(Map<String, List<Integer>> privileges) {
Privileges.privileges = privileges;
}
}
Client端
client端部署到一个端口号为8082的tomcat上

User.java
package com.lwj.po;
public class User {
private int id;
private String account;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User [id=" + id + ", account=" + account + ", name=" + name
+ "]";
}
}
ClientService.java
package com.lwj.service;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
@WebServlet("/test")
public class ClientService extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient("http://localhost:8088/cxf?wsdl");
resp.setContentType("text/xml;charset=utf-8");
resp.setHeader("Cache-Control", "no-cache");
try {
Object[] os = client.invoke("getUserOnline");
for (Object o : os) {
System.out.println(o.toString());
resp.getWriter().write(o.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
如果调用的方法中存在参数,则只需要在invoke中第二个参数中加上,
如:server中方法,String getUserOnline(Integer id);
则在client中调用时:
client.invoke("getUserOnline",1);
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="${pageContext.request.contextPath}/resources/js/jquery-1.11.2.js"></script>
<style type="text/css">
#chartImage {
position: fixed;
right: ;
top: %;
z-index: ;
width: 50px;
height: 50px;
background-image: url(image/chart3.png);
cursor: pointer;
}
</style>
</head>
<body>
<div id="chartImage"></div>
aaaaa aaaa
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br />
</body>
<script type="text/javascript">
document.getElementById("chartImage").onclick=function(){
$.ajax({
type:"get",
url:"${pageContext.request.contextPath}/test",
data:{},
dataType:"json",
success:function(data){
alert(data[].name+].account+")");
}
});
}
</script>
</html>
一、启动server,发布webservice请求
二、访问:http://localhost/server/login,初始化privileges
三、访问:http://localhost:8082/client/,进到index主页,点击右方的聊天图标
(chart3.png),页面中弹出信息

测试成功。
cxf webservice简单应用的更多相关文章
- 使用 CXF 做 webservice 简单例子(转载)
使用 CXF 做 webservice 简单例子 Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构.它允许创建高性能和可扩展的服务,您可以将这 ...
- CXF WebService整合SpringMVC的maven项目
首先推荐博客:http://www.cnblogs.com/xdp-gacl/p/4259481.html http://blog.csdn.net/hu_shengyang/article/de ...
- Spring 3 整合Apache CXF WebService[转]
http://www.cnblogs.com/hoojo/archive/2012/07/13/2590593.html 在CXF2版本中,整合Spring3发布CXF WebService就更加简单 ...
- java调用CXF WebService接口的两种方式
通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了. 2.静态调用 // 创建WebService客户端代理工厂 ...
- 主题:Java WebService 简单实例
链接地址:主题:Java WebService 简单实例 http://www.iteye.com/topic/1135747 前言:朋友们开始以下教程前,请先看第五大点的注意事项,以避免不必要 ...
- WebService 简单安全验证
原文:WebService 简单安全验证 最近新接了一个需要调用第三方WebService的项目,看到这个第三方WebService被调用的时候,需要授权用户名和密码,于是自己也想对WebServic ...
- Spring整合CXF webservice restful 实例
webservice restful接口跟soap协议的接口实现大同小异,只是在提供服务的类/接口的注解上存在差异,具体看下面的代码,然后自己对比下就可以了. 用到的基础类 User.java @Xm ...
- 《转》CXF WebService 开发文档-目录索引
CXF WebService 开发文档-目录索引 上次介绍了Axis的WebService,现在我们来看看CXF是怎么完成WebService的. Axis1 WebService 在线博文: htt ...
- 使用 CXF 做 webservice 简单例子
Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构.它允许创建高性能和可扩展的服务,您可以将这样的服务部署在 Tomcat 和基于 Spring 的轻量 ...
随机推荐
- UVa2521
理解:max 记录的是有大牌的个数 mid 是有中断 而造成的不确定 我理解是一个间断点以下的 数和一个间断点抵消 在前面没有间断的情况下 才能确定这张牌稳赢 #include<iostrea ...
- 内网安全工具之cain劫持工具
满足arp的条件为:目标IP为动态IP(arp -a查看) 下载地址:cain4.9.zip 官网:http://www.oxid.it/cain.html 08专版:cain08安装版 把cain下 ...
- npm start 作用
在配置phonecat项目时需要运行npm start在本地配置一个服务器环境,npm start首先会安装一系列的必要程序,这些程序依赖package.json中的内容,package.json中的 ...
- [Linux]系统调用理解(1)
本文是Linux系统调用专栏系列文章的第一篇,对Linux系统调用的定义.基本原理.使用方法和注意事项大概作了一个介绍,以便读者对Linux系统调用建立一个大致的印象. 什么是系统调用? Linux内 ...
- ACM/ICPC 之 混合图的欧拉回路判定-网络流(POJ1637)
//网络流判定混合图欧拉回路 //通过网络流使得各点的出入度相同则possible,否则impossible //残留网络的权值为可改变方向的次数,即n个双向边则有n次 //Time:157Ms Me ...
- Outlook~设置
outlook2013 中帐户设置无法直接更改邮件投递位置到本地的.pst文件,“更改文件夹”选项已经删除. Exchange 传递到 Outlook 数据文件 (.pst) 升级到 Outlook ...
- FreeRTOS学习及移植笔记之一:开始FreeRTOS之旅
1.必要的准备工作 工欲善其事,必先利其器,在开始学习和移植之前,相应的准备工作必不可少.所以在开始我们写要准备如下: 测试环境:我准备在STM32F103平台上移植和测试FreeRTOS系统 准备F ...
- des (C语言)
/** * \file des.h * * \brief DES block cipher * * Copyright (C) 2006-2010, Brainspark B.V. * * This ...
- GD库处理图像
在PHP5中,动态图象的处理要比以前容易得多.PHP5在php.ini文件中包含了GD扩展包,只需去掉GD扩展包的相应注释就可以正常使用了.PHP5包含的GD库正是升级的GD2库,其中包含支持真彩图像 ...
- way.js - 轻量级、持久化的双向绑定JS库
AngularJS的双向绑定一直为人称道,但使用AngularJS需要对页面组件化,学习成本还是很高的. 本文源自 https://github.com/gwendall/way.js 边学边译. 使 ...