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的长连接 ...
随机推荐
- 17-MySQL-Ubuntu-数据表的查询-分页(六)
分页(limit) 注: (1)limit位于SQL语句的最后面; (2)limit 2; 2表示查询前两条数据; (3)limit 0,2; 0表示查询第1页的起始数据的下标,2表示每页有两条数据 ...
- Ubuntu 最简单的方式安装chrome
1.指定安装目录如下: cd opt/ 2.下载包: sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current ...
- css---过渡天坑
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 【转载】99%的人都理解错了HTTP中GET与POST的区别
作者:Larry链接:https://zhuanlan.zhihu.com/p/22536382来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 原文链接 作者:WebT ...
- linxu(centos)安装php-fpm
编译安装php-fpm 安装前准备 yum -y install gcc automake autoconf libtool make yum -y install gcc gcc-c++ glibc ...
- 实现客户端连接Mysql数据库服务器
以前学习mysql的时候,都是部署在本机,这样不存在客户端主机与服务器主机连接的问题,都是直接用localhost登录就行. 今天因项目需要,我们把mysql部署在服务器上,然后客户端装了client ...
- HTML引入CSS的方法
1.嵌入式 通过<style>标记,来引入CSS样式. 语法格式:<style type = “text/css”></style> 提示:<style> ...
- 深入理解Android-清晰的理解Service
1.什么是Service 2.Service的生命周期 3.Service的工作过程 4.Service的start和bind状态有什么区别? 5.同一个Service,先startService,然 ...
- 第四周课堂笔记2th
2. 在函数中*对于形参的作用是聚合,对于实参的作用是打散 3. 加载顺序:内置——全局——局部空间 取值顺序:局部——全局——内置空间 左上角的答案: 123 666 888 777 右边的答案:7 ...
- 基础数据类型汇总补充,python集合与深浅拷贝
一.基础数据类型汇总补充 1.查看str所有方法方式 2.列表:在循环中删除元素,易出错或报错(飘红) lis = [11,22,33,44,55] # for i in range(len(lis) ...