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 的轻量 ...
随机推荐
- 什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI?
什么是CGI CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上. CGI可以用 ...
- Linux C 字符串输出函数 puts()、fputs()、printf() 详解
一.puts() 函数详解 puts()函数用来向 标准输出设备 (屏幕)写字符串并换行,调用格式为: puts(s); 其中s为字符串变量(字符串数组名或字符串指针). puts()函数的作用与语 ...
- 最大堆 最小堆 解决TOPK问题
堆:实质是一颗完全二叉树,最大堆的特点:父节点值均大于子节点:最小堆的父节点值均小于子节点: 一般使用连续内存存储堆内的值,因而可以根据当前节点的索引值推断子节点的索引值: 节点i的父节点为(i-1) ...
- .net WebServer例
新建.asmx页面 using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...
- poj 1170
很高兴,这道题刚编译成功提交就AC了. 简单的多重背包,标算估计是5.6维动规.其实可以通过6进制压成一维.判定是一个特价方式是否可行只需自己推一下就行了,很简单(对应位上的数目标不小于特价所需条件) ...
- python FileError
>>> ls1=["nihia"] >>> ls1 ['nihia'] >>> ls1.pop() 'nihia' >& ...
- Python里*arg 和**kwargs的作用
Hi,伙计们.我发现Python新手们在理解*args和**kwargs这两个魔法变量时都有些困难.他们到底是什么?首先,我先告诉大家一个事实,完整地写*args和**kwargs是不必要的,我们可以 ...
- iOS 获取沙盒路径方法
//获取家目录路径的函数: NSString *homeDir = NSHomeDirectory(); //获取Documents目录路径的方法: NSArray *paths = NSSearch ...
- WCF X.509验证
1.证书的制作 makecert.exe -sr LocalMachine -ss My -a sha1 -n CN=ParkingServer -sky exchange -pe makecert. ...
- .NET LINQ 相等运算
相等运算 如果两个序列的对应元素相等且这两个序列具有相同数量的元素,则视这两个序列相等. 方法 方法名 说明 C# 查询表达式语法 Visual Basic 查询表达式语法 更多信息 Seq ...