webservice技术--服务器端
1.webservice实现单点登录具体逻辑为
①软通web端作为客户端,请求wi社区后台,进行登录请求
②wi社区后台验证t,核实无误后,走登录逻辑,直接进入欢迎页
③如果有错误,封装错误xml,返回给软通web端
2.wi社区后台实际上是要添加webservice服务端的代码
3.wi社区实际上也会写作为客户端的代码
这是由于我在自测的时候,需要模拟软通web端的客户端进行request的xml格式数据的请求,所以,实际自测的逻辑为:通过软通提供的接口测试工具生成请求xml—在wi社区后台项目的test类中发送这些xml请求—wi社区后台作为服务器进行相应的逻辑响应
4.作为服务器端首先需要编译一个最原始的初类
这个初始类其实就是一个入口,代码可以不写,只要有一个方法就可以了,生成服务器端代码后,可以重写这部分的代码,我的初始类的代码如下
package com.ht.ilcom.webservice;
public class HtWebService {
public void execute(String requestXML){
}
}
编译命令:
javac HtWebService.java
5.生成wsdl命令
%AXIS2_HOME%\bin\java2wsdl -cp . -cn com.ht.ilcom.webservice.HtWebService -of HtWebService.wsdl
(根据自己的目录改吧)
6.实际上我们需要通过一个wsdl生成服务器端的代码
①webservice服务器端代码最早是手工写的,需要对这方面的技术非常的了解,并且很容易出错。而现在因为有许多的框架技术,所以我们可以通过上面生成的wsdl文件,然后选择一门框架技术,直接生成webservice技术的代码,省去了学习底层webservice技术的时间,直接写自己的业务逻辑就可以了。(这是时好时坏呢,呵呵)
②因为我们这里使用的是axis2的技术,Apache官方提供了几种框架技术
axis2生成服务端代码有4中方式,包括Deploying POJOs、Building the service using AXIOM、Generating the service using ADB、Generating the service using XMLBeans、Generating the service using JiBX
这里使用的是ADB因为中国码友说好,时间有限,我们大多数时候要选择相信。
命令如下
%AXIS2_HOME%\bin\wsdl2java -uri resources\META-INF\HtWebService.wsdl -p com.ht.ilcom.webservice.adb -d adb -s -ss -sd -ssi -o build\service
bulid文件夹下的service就是我们刚刚生成的代码了
我们的逻辑要写入HtWebServiceSkeleton.java这个类中
注:写完逻辑后,在执行9的ant构建命令
7.这里补充说一下webservice的一些基础配置
①首先jdk是肯定要有的,最低版本1.5,并且配置好环境变量
②下载axis2项目,解压到目标文件
③你也可以下载axis2.war 放到你的项目引擎(如tomcat的webapp下)解压出项目
④设置axis2的环境变量AXIS2_HOME,这部很重要,很多命令都是基于这个的,不要忽略此步骤
⑤完成这几步后,我们才应该执行刚才的逻辑 初类–编译为class文件—通过java2wsdl生成wsdl文件—然后通过wsdl2java生成webservice服务器端的代码
8.生成代码后,需要写入自己的逻辑了
①写自己的逻辑,需要注意你所引用的所有类(要么是jar要么是项目中原来有的service),如果是jar中的东西,我们可以把用到的jar包拷贝到axis2的项目中的lib中,因为下一步使用ant的时候,会自己扫描lib中用到的jar包
②如果需要用到项目中别的service的方法,最好在webservice包中单独写一份。
9.我们需要通过ant构建一个aar文件
①首先理解这个原理
*首先是Java的编译和运行机制,从.java编译为.class的过程中,javac会默认按照编译所在操作系统的默认编码读取源代码,并编译成内部为UTF-8编码的.class,而在java虚拟机执行的过程中,会按照程序运行所在操作系统的默认编码,将UTF-8编码再次进行转换。通过这种两次转换的方式,Java实现了对多语言的支持。***
②解决方法
<javac encoding="utf-8" destdir="${compile.dir}" debug="on">
.......
</javac>
在ant的build.xml中使用到javac的地方加上这么一句encoding="utf-8"就可以了
③执行命令成功以后,我们得到目录build/service/build/lib中的HtWebServiceService.aar 文件,是最终文件
我们只需将HtWebServiceService.aar文件拷贝到项目的services文件夹中,如图
最后一步,修改service.list文件,如下图
验证
查看服务列表
http://localhost:8080/axis2/services/listServices
查看wsdl文件
http://localhost:8080/axis2/services/StockQuoteService?wsdl
查看xsd文件
http://localhost:8080/axis2/services/StockQuoteService?xsd
###其他记录###
①新建的表member_info、ec_info、order_info、client_ctid
②实际上,我没有用到初类,因为软通那边给我了一个他们生成好的wsdl文件,所需要的方法已经声明完成,我直接使用这个wsdl,通过wsdl2java生成了服务器的代码。
webservice技术--服务器端的更多相关文章
- Java--详解WebService技术
Java--详解WebService技术 一.什么是 webservice WebService是一种跨编程语言和跨操作系统平台的远程调用技术. 所谓跨编程语言和跨操作平台,就是说服务端程序采用jav ...
- Python的Web编程[2] -> WebService技术[0] -> 利用 Python 调用 WebService 接口
WebService技术 / WebService Technology 1 关于webservice / Constants WebService是一种跨编程语言和跨操作系统平台的远程调用技术. W ...
- webservice 技术改进
Webservice 技术改进 1.不同系统不同语言之间的交互 基于http协议进行传输,使用REST服务实现WS 2.不同系统相同语言之间的交互 使用RPC(romate process call) ...
- WebService技术,服务端发布到Tomcat(使用Servlet发布),客户端使用axis2实现(二)
还是在WebService技术,服务端and客户端JDK-wsimport工具(一)的基础上实现.新建一个包:com.aixs2client.目录结构如下: 一.服务端: 1.还是使用com.webs ...
- WebService技术(一)
前言:学习笔记,以供参考 1.认识 WebService就是一种跨编程语言和跨操作系统平台的远程调用技术. Webservice就是一个独立运行的应用程序,提供了可以进行远程调用的API接口. Web ...
- WebService技术简介
今天继续阅读<.Net 大局观>时看到一段关于WebService支持技术的论述,真是简明扼要: Web services的另一个重要应用是B2B整合,一般来说它也依赖Internet,将 ...
- WebService技术规则
1.基于web的系统级接口规范 - 一个普通适用标准 :http+xml - 任何网络通信的操作系统 - 自包含.自描述.模块化 - 发布.定位.通过web调用 2. ...
- WebService技术(二)— CXF
前言:学习笔记,以供参考 Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services .可以与Spring进行快速无 ...
- 利用Ajax+MSMQ(消息队列)+WebService实现服务器端向客户端的信息推送
需求: 每当数据库有数据更新时,推送到客户端 软需求: 1.服务器资源有限,要求资源占用尽可能小: 2.项目可控,不许调用第三方不可信不稳定的方法. 已有事例: 1.58到家采用的方法是TCP的长连接 ...
随机推荐
- vue点击跳转拨号界面
<a :href="'tel:' + VipInfo.HotelPhone" style="text-decoration:none;color:black;opa ...
- **JLink Warning: Mis-aligned memory write: Address: 0x20000000, NumBytes: 2, Alignment: 2 (Halfword-aligned)
网上也有同学遇到这个问题,http://www.openedv.com/thread-113049-1-3.html 根据他的经验我也重新安装了Jlink驱动: 顺便注意Dialog DLL:TARM ...
- hadoop系列(一)window10下hadoop安装
风闻win10不需要cygwin就能用hadoop了,赶紧试试. 去官网下载hadoop-2.8.3,然后去 https://github.com/steveloughran/winutils 下载h ...
- 5步减小你的CSS样式表
第一步:学会如何组合选择器 什么是选择器?如果你还不知道什么叫做”选择器”,你可以先参考一下w3schools.com的CSS语法概述. 未优化的CSS代码在下面的图例中,你会看到来自三个不同选择器的 ...
- iOS开发系列-NSFileManager
NSFileManager NSFileManager类主要对文件和目录的操作(删除.修改.移动.复制等等).
- [JZOJ3320] 【BOI2013】文本编辑器
题目 题目大意 给你一个文本,要删去其中所有的'e'. 有三种操作: h光标左移. x删除光标上面的字母(光标是横着的). fc跳到后面的第一个字符为'c'的位置. 问操作序列的最短长度. 思考历程 ...
- win 7 下安装GIT(亲测有效)
我首先是百度到了这个网站:https://git-scm.com/download/win 当然由于外网访问速度的缓慢 可以直接在百度搜索下载自己对应的版本 这个网站上有下载链接,你可以根据你的系统选 ...
- Sublime text2 + cygwin编译C++
1.安装cygwin2.安装sublime text23.将g++和gdb加入系统环境变量(windows系统)3.安装package control4.通过package control安装subl ...
- element table初始化默认选中以及切换页码的时候保留选中状态
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <!-- impor ...
- STM32 STM32F4 寄存器怎么配置不上, 无法往寄存器写入数据
当出现这个问题时,往往是因为你没有在RCC寄存器中把相关的时钟使能打开. 配置寄存器之前记得调用"RCC_AxxxPeriphClockCmd"先打开需要配置的时钟源,别调用了“R ...