1.webservice实现单点登录具体逻辑为

①软通web端作为客户端,请求wi社区后台,进行登录请求

②wi社区后台验证t,核实无误后,走登录逻辑,直接进入欢迎页

③如果有错误,封装错误xml,返回给软通web端

2.wi社区后台实际上是要添加webservice服务端的代码

3.wi社区实际上也会写作为客户端的代码

这是由于我在自测的时候,需要模拟软通web端的客户端进行request的xml格式数据的请求,所以,实际自测的逻辑为:通过软通提供的接口测试工具生成请求xml—在wi社区后台项目的test类中发送这些xml请求—wi社区后台作为服务器进行相应的逻辑响应

4.作为服务器端首先需要编译一个最原始的初类

这个初始类其实就是一个入口,代码可以不写,只要有一个方法就可以了,生成服务器端代码后,可以重写这部分的代码,我的初始类的代码如下

  1. package com.ht.ilcom.webservice;
  2. public class HtWebService {
  3. public void execute(String requestXML){
  4. }
  5. }

编译命令:

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实现了对多语言的支持。***

②解决方法

  1. <javac encoding="utf-8" destdir="${compile.dir}" debug="on">
  2. .......
  3. </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技术--服务器端的更多相关文章

  1. Java--详解WebService技术

    Java--详解WebService技术 一.什么是 webservice WebService是一种跨编程语言和跨操作系统平台的远程调用技术. 所谓跨编程语言和跨操作平台,就是说服务端程序采用jav ...

  2. Python的Web编程[2] -> WebService技术[0] -> 利用 Python 调用 WebService 接口

    WebService技术 / WebService Technology 1 关于webservice / Constants WebService是一种跨编程语言和跨操作系统平台的远程调用技术. W ...

  3. webservice 技术改进

    Webservice 技术改进 1.不同系统不同语言之间的交互 基于http协议进行传输,使用REST服务实现WS 2.不同系统相同语言之间的交互 使用RPC(romate process call) ...

  4. WebService技术,服务端发布到Tomcat(使用Servlet发布),客户端使用axis2实现(二)

    还是在WebService技术,服务端and客户端JDK-wsimport工具(一)的基础上实现.新建一个包:com.aixs2client.目录结构如下: 一.服务端: 1.还是使用com.webs ...

  5. WebService技术(一)

    前言:学习笔记,以供参考 1.认识 WebService就是一种跨编程语言和跨操作系统平台的远程调用技术. Webservice就是一个独立运行的应用程序,提供了可以进行远程调用的API接口. Web ...

  6. WebService技术简介

    今天继续阅读<.Net 大局观>时看到一段关于WebService支持技术的论述,真是简明扼要: Web services的另一个重要应用是B2B整合,一般来说它也依赖Internet,将 ...

  7. WebService技术规则

    1.基于web的系统级接口规范     - 一个普通适用标准 :http+xml     - 任何网络通信的操作系统     - 自包含.自描述.模块化     - 发布.定位.通过web调用  2. ...

  8. WebService技术(二)— CXF

    前言:学习笔记,以供参考 Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services .可以与Spring进行快速无 ...

  9. 利用Ajax+MSMQ(消息队列)+WebService实现服务器端向客户端的信息推送

    需求: 每当数据库有数据更新时,推送到客户端 软需求: 1.服务器资源有限,要求资源占用尽可能小: 2.项目可控,不许调用第三方不可信不稳定的方法. 已有事例: 1.58到家采用的方法是TCP的长连接 ...

随机推荐

  1. 12-MySQL-Ubuntu-数据表的查询-数据准备和基本查询(一)

    一,数据准备 创建数据库.数据表 -- 创建数据库 create database python_test_1 charset=utf8; -- 使用数据库 use python_test_1; -- ...

  2. 【csp】2018-3

    第一题 跳一跳 题目: 题意:浅显.qwq 题解:2计数+1,到1就清空计数. 代码: #include<iostream> #include<cstdio> #include ...

  3. c++智能指针(unique_ptr 、shared_ptr、weak_ptr、auto_ptr)

    一.前序 什么是智能指针? ——是一个类,用来存储指针(指向动态分配对象也就是堆中对象的的指针). c++的内存管理是让很多人头疼的事,当我们写一个new语句时,一般就会立即把delete语句直接也写 ...

  4. (转)protobuf-----Mac 机器安装

    转自: https://blog.csdn.net/u014534808/article/details/80203018 安装之旅 1. 下载protobufprotobuf下载页面 在此页面选择合 ...

  5. python对urlEncode进行解码

    利用python自带的urlib进行编码和解码,没有什么问题.(https://www.hustyx.com/python/) 但如果是用url编码工具(http://tool.chinaz.com/ ...

  6. Vim模糊查找与替换

    例如要把 ( 1 ).( 2 ) - 全部替换成其他字符,可以用命令: :%s/(.*)/str/gn 其中,.* 表示匹配任何东西,如果只希望匹配应为字母和数字,可以用 \w\+. 有些特殊字符需要 ...

  7. SpringMVC的孪生兄弟WebFlux

    一.入门文字介绍 官方口水话简短翻译: Spring WebFlux是一个非阻塞的Web框架,用于利用多核,短时间可一处理大量并发连接. 非阻塞式 在servlet3.1提供了非阻塞的API,WebF ...

  8. 使用C++网络库libcurl

    libcurl使用问题记录 libcurl库的初始化和关闭 curl_global_init()和curl_global_cleanup().这两个函数并不是线程安全的.所以只能在主线程中进行一次的初 ...

  9. 如何HOOK桌面窗口消息

    代码详见:http://download.csdn.net/detail/swanabin/6771465 需求:截获桌面窗口鼠标单击事件,解析所选中的桌面 Item,并将解析后的 item 信息发送 ...

  10. 2017/8/4 SCJP学习

    2 Object Orientation . . . . . . . . . . . . . . . . . . . . . . . . . 85 Encapsulation (Exam Object ...