从Apache官网下载httpd2.2版本,安装。网上说安装后把安装目录保留了,就是现成的绿色版,需要在其他机器上使用,直接执行批处理:bin\httpd -k install,就可以。安装后,自动启动httpd,在桌面右下角的启动栏中,有个httpd的图标,可点击这个图标重启、停止服务。
启动DelphiXE7,创建新项目,项目类型选择WebServices-->SOAP Server Application-->ISAPI dynamic linklibrary-->后面的步骤一路确定,填写服务名称,勾选上创建范例方法。创建ISAPI成功,添加自己的接口方法并实现后,编译出dll,拷贝到D:\ws目录。
打开Apache安装目录,在conf目录中找到httpd.conf.
在#AddHandler type-map var后面添加 AddHandler isapi-isa .dll (注意.dll前面有个空格)
在httpd.conf最后面添加自己的isapi库配置:
Alias /ws "D:/ws" #Alias语法 Alias /URL二级域名 "制定isapi库目录"
<Directory "D:/ws"> #配置isapi目录的权限
Options ExecCGI #必须设置 否则无权限访问目录中的动态库
Allow from all
</Directory>
ISAPICacheFile D:\ws\Project1.dll #让动态库预先加载,只是为提高效率
至此,配置完毕,在IE浏览器中输入 http://localhost/ws/Project1.dll,将看到熟悉的wsdl。现在可以让任意语言调用我们的webservice了。
RO服务端部署到Apache:
安装好RO后,创建新Delphi项目,选择RemObjects SDK中的ISAPI/NSAPI Server模板,启动向导创建ISAPI服务端和exe客户端。实现自动生成的接口后,编译得到服务端dll和客户端exe。
将服务端dll部署到Apache中:
打开httpd.conf文件,在上面所述配置的基础上,添加如下设置:
Alias /ro "D:/RO_ISAPI"
<Directory "D:/RO_ISAPI">
Options ExecCGI
Allow from all
</Directory>
ISAPICacheFile D:/RO_ISAPI/ROServer.dll
保存配置文件,重启Apache服务后,在IE浏览器中输入 http://127.0.0.1/ro/ROServer.dll
可以看到生成的rodl接口。
修改客户端ROChannel控件的TargetURL为http://127.0.0.1/ro/ROServer.dll/Bin
启动客户端测试,成功。