一、开发工具
服务端:Apache Http Server2.2.15 + Tomcat6.0
+ Axis2C1.6.0 + VS2005
客户端:CXF2.2.8 + MyEclipse7.0
二、开发步骤
1.服务端
a.编写wsdl文档(假设为Test.wsdl)
b.用Axis2C的wsdl2c工具根据Test.wsdl生成服务端存根
wsdl2c -uri Test.wsdl -ss -sd -d none
c.b步骤生成两个文件夹(当前目录下),resources和src,在Axis2C的安装目录下找到services目录,在里面部署服务(就是建立一个和服务名相同的文件夹,该例中服务名为Test,因此该文件夹的名称也为Test),将resources目录下的services.xml拷贝到Test目录下(根据实际情况对其进行修改,本例中不修改)
d.将b步骤生成的src文件夹下的三个文件axis2_skel_Test.c、axis2_skel_Test.h、axis2_svc_skel_Test.c拷贝到用VS2005新建的工程中(该工程必须为DLL项目,且为空项目),添加文件到工程,编译
e.设置项目属性
确定项目属性包含Axis2C安装目录下的include目录下的所有头文件(其实本例只用到了几个),引用库目录里面包含那四个dll(lib),具体是哪四个参考上篇日志
f.修改axis2_svc_skel_Test.c
添加 #include "axiom_soap_envelope.h" 和 #include
"axiom_soap_header.h",使其包含这两个头文件
修改axis2_skel_Test.c里面的axis2_skel_Test_testString函数
添加如下代码:
axiom_node_t *node=NULL;
axiom_node_t *element=NULL;
axis2_char_t *str=NULL;
if(_testString==NULL)
{
AXIS2_ERROR_SET(env->error,AXIS2_ERROR_SVC_SKEL_INPUT_OM_NODE_NULL,AXIS2_FAILURE);
return
NULL;
}
node=axiom_node_get_first_child(_testString,env);
if(node==NULL)
{
AXIS2_ERROR_SET(env->error,AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST,AXIS2_FAILURE);
return
NULL;
}