Webservice现在已经不是什么新技术了,用java建立webservice是快捷的,但是用java在制作客户端的感觉上总是不如 Delphi的(个人感觉,java高手们不要笑话我),那我们就用java实现webservice的服务端程序,delphi制作客户端。

一.环境搭建

jdk和tomcat的安装和配置我在这里不进行行介绍了。说明一点我的tomcat是安装在D:\tomcat,设定端口是8099。

安装Axis

1.可以从http://ws.apache.org/axis/下载axis的最新版本,我使用的是axis1.2。

2.解压缩axis-bin-1_2beta.zip,将axis-1_2beta目录中webapps下的axis目录全部拷贝到tomcat的安装目录中webapps下。

3.将axis\lib中的所有jar文件都添加到classpath系统变量中。

注(用户需根据自己的安装路径进行更改):

.;

d:\tomcat\webapps\axis\WEBINF\lib\axis.jar;

d:\tomcat\webapps\axis\WEB-INF\lib\saaj.jar;

d:\tomcat\webapps\axis\WEB-INF\lib\commons-logging.jar;

d:\tomcat\webapps\axis\WEB-INF\lib\commons-discovery.jar;

d:\tomcat\webapps\axis\WEB-INF\lib\wsdl4j.jar;

d:\tomcat\webapps\axis\WEBINF\lib\jaxrpc.jar;

4.启动tomcat访问http://cbf107:8099/axis/index.html(这里使用的主机名和端口号和使用的tomcat所配置一致)。

可以见到如下页面:

二.Web Service服务端开发

写一个java小程序:

public class Test{

public int add(int p1, int p2) {

return p1 + p2;

}

public int subtract(int p1, int p2) {

return p1 - p2;

}

}

在D:\Tomcat\webapps\axis 目录下新建一个test文件夹,将它保存在里面,注意:后缀名改为jws,也就是Test.jws 。

在浏览器里访问:http://cbf107:8099/axis/test/Test.jws可以看到

点击“Click to see the WSDL”出现

将这页另存为xml文档(我们在使用delphi制作客户端的时候会使用)

三.delphi实现Web Service客户端开发

打开delphi新建工程,在form上放置两个edit和两个button,button的name命名为

btnadd和btnsubtract,caption命名为add和subtract。

再file->new->other,选择webservice里的WSDL importer

在search UDDI..里选择前面我们保存的那个xml文件,点击next最后finish

全部保存,我们发现delphi的工程中多了test1.pas

打开发现有这样一段接口申明:

Test = interface(IInvokable)

[‘{52882FF0-46E2-6644-A77B-CE714D4CBFD5}‘]

function  add(const p1: Integer; const p2: Integer): Integer; stdcall;

function  subtract(const p1: Integer; const p2: Integer): Integer; stdcall;

end;

那我们可以直接调用这个接口了,这时候我们回到界面,从delphi的webservices面版中托放一个soap到form上。

设置属性如图:

最后我们可以完成我们的代码了:

1.在uses里添加test1因为我们要引用这个单元。

2.添加全局变量t1:test;(t1是一个test接口)

3.为两个button添加click事件

procedure TForm1.btnaddClick(Sender: TObject);

var

i,j,z:integer;

begin

i:=strtoint(edit1.Text);

j:=strtoint(edit2.Text);

t1:=(HttPRIO1 as test);

z:=t1.add(i,j);

t1._Release;

showmessage(inttostr(z));

end;

procedure TForm1.btnsubstractClick(Sender: TObject);

var

i,j,z:integer;

begin

i:=strtoint(edit1.Text);

j:=strtoint(edit2.Text);

t1:=(HttPRIO1 as test);

z:=t1.subtract(i,j);

t1._Release;

showmessage(inttostr(z));

end;

4.F9运行程序进行测试

看我们有用delphi实现了java写的那段程序,不是吗。

5.也许到这里你认为应该已经完成了,没错!不过对webservice还不够了解的

朋友你再修改一下那个java程序,也就是将Test.jws里的这个方法

public int add(int p1, int p2) {

return p1 + p2;

}

改为

public int add(int p1, int p2) {

return p1 + p2+10;

}

再运行一下你的客户端程序看看。

四.注:unit1的所有代码

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Rio, SOAPHTTPClient,Test1;

type

TForm1 = class(TForm)

HTTPRIO1: THTTPRIO;

Edit1: TEdit;

Edit2: TEdit;

btnadd: TButton;

btnsubstract: TButton;

procedure Edit2KeyPress(Sender: TObject; var Key: Char);

procedure btnaddClick(Sender: TObject);

procedure btnsubstractClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

t1:test;

implementation

{$R *.dfm}

//这里是为了让 两个edit只能输入数字,edit1的onkeypress直接调用这个就可以了。

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);

begin

if key in [‘0‘..‘9‘]=false then

key:=#0;

end;

procedure TForm1.btnaddClick(Sender: TObject);

var

i,j,z:integer;

begin

i:=strtoint(edit1.Text);

j:=strtoint(edit2.Text);

t1:=(HttPRIO1 as test);

z:=t1.add(i,j);

t1._Release;

showmessage(inttostr(z));

end;

procedure TForm1.btnsubstractClick(Sender: TObject);

var

i,j,z:integer;

begin

i:=strtoint(edit1.Text);

j:=strtoint(edit2.Text);

t1:=(HttPRIO1 as test);

z:=t1.subtract(i,j);

t1._Release;

showmessage(inttostr(z));

end;

end.

inttostr java_Delphi和Java实现webservice架构相关推荐

  1. java调用webservice_笃学私教:Java开发网站架构演变过程-从单体应用到微服务架构详解...

    原标题:笃学私教:Java开发网站架构演变过程-从单体应用到微服务架构详解 Java开发网站架构演变过程,到目前为止,大致分为5个阶段,分别为单体架构.集群架构.分布式架构.SOA架构和微服务架构.下 ...

  2. .NET调用JAVA的WebService方法

    调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader的处理,在网上也有相关资料, ...

  3. 一文看懂Java微服务架构,WEB2.0,垂直架构,分布式架构,微服务架构

    Java微服务架构 目录: 了解开发环境&生成环境 WEB1.0 & WEB2.0 垂直架构 分布式架构 微服务架构 1.了解开发环境&生产环境 1.1 开发环境 平时在写代码 ...

  4. java的WebService实践(cxf)

    java的WebService实践(cxf) Java发布WebService,结合Spring,通过cxf的方式 难点:1.引用什么jar包: 1.创建接口 源码如下: package com.na ...

  5. java 学习写架构必会几大技术点

    java 学习写架构必会几大技术点 关于学习架构,必须会的几点技术  1. java反射技术  2. xml文件处理  3. properties属性文件处理  4. 线程安全机制  5. annoc ...

  6. 如何避免贫穷和忙碌,在2018年你需要这样提升自己 2018年01月07日 00:00:00 2099 热文导读 | 点击标题阅读 Java和Android架构2017年总结:文章精选 吊炸天!74

    如何避免贫穷和忙碌,在2018年你需要这样提升自己 2018年01月07日 00:00:00 2099 热文导读 | 点击标题阅读 Java和Android架构2017年总结:文章精选 吊炸天!74款 ...

  7. linux java远程调试_[转]JPDA:Java平台调试架构(常用的远程调试方法)

    原文出处:http://www.javaeye.com/topic/75128 最近使用WTP的Server功能很不爽,连tomcat服务器时java类中的任何改动都要重启服务器,一怒之下就改用JPD ...

  8. java用mvvm,[Java教程]MVVM架构~使用boxy和knockoutjs实现编辑功能

    [Java教程]MVVM架构~使用boxy和knockoutjs实现编辑功能 0 2014-04-24 14:00:08 返回目录 这个功能我认为非常有用,尤其在后台管理系统中,它对用户来说,使用体验 ...

  9. Java开发WebService(使用Java-WS)

    前言: 初学Java,因为工作需要,直接跳到开发WebService.以前用.NET开发过WebService,对比一下,Java的WebService开发部署难度高了不止一个档次.网上的教程各式各异 ...

最新文章

  1. Android Studio快速的接受一个项目
  2. gson 自定义对象转换格式
  3. 读取工作流程中的表单物件
  4. 常用的 WEB 服务器
  5. Cytoscape可视化物种分类树结构
  6. 推荐几个2021年在Redis、Go和Rust领域异军突起的技术公众号
  7. 数据库sql创建标量值函数_使用JSON_VALUE()从JSON数据中提取标量值
  8. linux caffe ssd 编译,Ubuntu 16.04 编译 Caffe SSD
  9. 如何查看jdkApi在线帮助文档(下载)
  10. BT5无法启动图形界面问题
  11. 有监督学习(supervised learning))与无监督学习(unsupervised learning)之间有何区别?
  12. python爬取某音乐歌词,将内容保存制作词云图
  13. iphone6s html5没声音,iphone6s没有声音了怎么办(解决苹果机来电没声音的3种方式)...
  14. android百度地图路线查询,Android百度地图——路线规划搜索
  15. 一份非常完整的 MySQL 规范非原创(ps:我怕论坛会删掉 自己拿来用了)
  16. 「思考人生」未来的路该怎么走下去
  17. arm体系结构总结笔记10-arm汇编
  18. [转]网站整合Ucenter详细流程
  19. 超级计算机应用于石油勘测等方面,算天算地 算人——国家超级计算天津中心主任刘光明解读超级计算机系统应用(二)...
  20. SUSAN角点检测与匹配算法代码(OpenCV)

热门文章

  1. 在eclipse中创建第一个java应用程序,并在控制台输出“hello world”。
  2. Scapy之ARP询问
  3. 洛谷P4777 【模板】扩展中国剩余定理(EXCRT)
  4. 如何给 mongodb 设置密码
  5. STL-容器库101--array【C11】
  6. 深搜——数字划分问题
  7. java分布式学习路线
  8. 前端面试之Vue相关总结
  9. CentOS7 上安装 Zookeeper-3.4.9 服务
  10. 【暴力】Codeforces Round #398 (Div. 2) A. Snacktower