- 浏览: 1476983 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (691)
- linux (207)
- shell (33)
- java (42)
- 其他 (22)
- javascript (33)
- cloud (16)
- python (33)
- c (48)
- sql (12)
- 工具 (6)
- 缓存 (16)
- ubuntu (7)
- perl (3)
- lua (2)
- 超级有用 (2)
- 服务器 (2)
- mac (22)
- nginx (34)
- php (2)
- 内核 (2)
- gdb (13)
- ICTCLAS (2)
- mac android (0)
- unix (1)
- android (1)
- vim (1)
- epoll (1)
- ios (21)
- mysql (3)
- systemtap (1)
- 算法 (2)
- 汇编 (2)
- arm (3)
- 我的数据结构 (8)
- websocket (12)
- hadoop (5)
- thrift (2)
- hbase (1)
- graphviz (1)
- redis (1)
- raspberry (2)
- qemu (31)
- opencv (4)
- socket (1)
- opengl (1)
- ibeacons (1)
- emacs (6)
- openstack (24)
- docker (1)
- webrtc (11)
- angularjs (2)
- neutron (23)
- jslinux (18)
- 网络 (13)
- tap (9)
- tensorflow (8)
- nlu (4)
- asm.js (5)
- sip (3)
- xl2tp (5)
- conda (1)
- emscripten (6)
- ffmpeg (10)
- srt (1)
- wasm (5)
- bert (3)
- kaldi (4)
- 知识图谱 (1)
最新评论
-
wahahachuang8:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
websocket的helloworld -
q114687576:
http://www.blue-zero.com/WebSoc ...
websocket的helloworld -
zhaoyanzimm:
感谢您的分享,给我提供了很大的帮助,在使用过程中发现了一个问题 ...
nginx的helloworld模块的helloworld -
haoningabc:
leebyte 写道太NB了,期待早日用上Killinux!么 ...
qemu+emacs+gdb调试内核 -
leebyte:
太NB了,期待早日用上Killinux!
qemu+emacs+gdb调试内核
java的版本请看我的http://haoningabc.iteye.com/blog/975976
参考http://axis.apache.org/axis2/c/core/docs/axis2c_manual.html#quick_start
1.下载axis2c-src-1.6.0.tar.gz
2.添加.bashrc
mkdir /root/Desktop/axis
3.编译
在$AXIS2C_HOME下生成 axis2c一堆东西
4.To build the samples:
在$AXIS2C_HOME下生成sample目录
5.测试例子:
启动服务:$AXIS2C_HOME/bin/axis2_http_server
客户端测试:$AXIS2C_HOME/samples/bin/echo
6.做个官方的例子:
服务端:hello_svc.c:
用这个编译成so
wsdl----services.xml:
把service.xml和hello_svc.c生成的libhello.so放到$AXIS2_HOME/service/hello/
启动axis2_http_server
使用http://192.168.1.118:9090/axis2/services查看webservice
具体wsdl用http://192.168.1.118:9090/axis2/services/echo?wsdl等
客户端:
hello.c:
用这个编译
执行.hello
参考http://axis.apache.org/axis2/c/core/docs/axis2c_manual.html#quick_start
1.下载axis2c-src-1.6.0.tar.gz
2.添加.bashrc
mkdir /root/Desktop/axis
export AXIS2C_HOME=/root/Desktop/axis export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${AXIS2C_HOME}/lib/
3.编译
$tar zxvf axis2c-src-1.6.0.tar.gz $cd axis2c-src-1.6.0 $./configure --enable-auththila=yes --enable-libxml2=yes --prefix=${AXIS2C_HOME} $make $make install
在$AXIS2C_HOME下生成 axis2c一堆东西
4.To build the samples:
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${AXIS2C_HOME}/lib/ $ cd samples $ ./configure --prefix=${AXIS2C_HOME} --with-axis2=${AXIS2C_HOME}/include/axis2-1.6.0 $ make $ make install
在$AXIS2C_HOME下生成sample目录
5.测试例子:
启动服务:$AXIS2C_HOME/bin/axis2_http_server
客户端测试:$AXIS2C_HOME/samples/bin/echo
root@test-linux:~/Desktop/axis/samples/bin# ./echo Using endpoint : http://localhost:9090/axis2/services/echo Sending OM : <ns1:echoString xmlns:ns1="http://ws.apache.org/axis2/services/echo"><text>Hello World!</text></ns1:echoString> Received OM : <ns1:echoString xmlns:ns1="http://ws.apache.org/axis2/c/samples"><text>Hello World!</text></ns1:echoString> echo client invoke SUCCESSFUL! Sending OM : <ns1:echoString xmlns:ns1="http://ws.apache.org/axis2/services/echo"><text>Hello World!</text></ns1:echoString> Received OM : <ns1:echoString xmlns:ns1="http://ws.apache.org/axis2/c/samples"><text>Hello World!</text></ns1:echoString> echo client invoke SUCCESSFUL! root@test-linux:~/Desktop/axis/samples/bin#
6.做个官方的例子:
服务端:hello_svc.c:
#include <axis2_svc_skeleton.h> #include <axutil_log_default.h> #include <axutil_error_default.h> #include <axutil_array_list.h> #include <axiom_text.h> #include <axiom_node.h> #include <axiom_element.h> #include <stdio.h> axiom_node_t *axis2_hello_greet(const axutil_env_t *env,axiom_node_t *node); int AXIS2_CALL hello_free(axis2_svc_skeleton_t *svc_skeleton,const axutil_env_t *env); axiom_node_t* AXIS2_CALL hello_invoke(axis2_svc_skeleton_t *svc_skeleton,const axutil_env_t *env,axiom_node_t *node,axis2_msg_ctx_t *msg_ctx); int AXIS2_CALL hello_init(axis2_svc_skeleton_t *svc_skeleton,const axutil_env_t *env); axiom_node_t* AXIS2_CALL hello_on_fault(axis2_svc_skeleton_t *svc_skeli,const axutil_env_t *env, axiom_node_t *node); axiom_node_t *build_greeting_response(const axutil_env_t *env,axis2_char_t *greeting); axiom_node_t *axis2_hello_greet(const axutil_env_t *env, axiom_node_t *node){ axiom_node_t *client_greeting_node = NULL; axiom_node_t *return_node = NULL; AXIS2_ENV_CHECK(env, NULL); if (node){ client_greeting_node = axiom_node_get_first_child(node, env); if (client_greeting_node &&axiom_node_get_node_type(client_greeting_node, env) == AXIOM_TEXT){ axiom_text_t *greeting = (axiom_text_t *)axiom_node_get_data_element(client_greeting_node, env); if (greeting && axiom_text_get_value(greeting , env)){ const axis2_char_t *greeting_str = axiom_text_get_value(greeting, env); printf("Client greeted saying \"%s\" \n", greeting_str); return_node = build_greeting_response(env, "Hello Client!"); } } } else{ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST, AXIS2_FAILURE); printf("ERROR: invalid XML in request\n"); return_node = build_greeting_response(env, "Client! Who are you?"); } return return_node; } axiom_node_t *build_greeting_response(const axutil_env_t *env, axis2_char_t *greeting){ axiom_node_t* greeting_om_node = NULL; axiom_element_t * greeting_om_ele = NULL; greeting_om_ele = axiom_element_create(env, NULL, "greetResponse", NULL, &greeting_om_node); axiom_element_set_text(greeting_om_ele, env, greeting, greeting_om_node); return greeting_om_node; } static const axis2_svc_skeleton_ops_t hello_svc_skeleton_ops_var = { hello_init, hello_invoke, hello_on_fault, hello_free }; axis2_svc_skeleton_t *axis2_hello_create(const axutil_env_t *env){ axis2_svc_skeleton_t *svc_skeleton = NULL; svc_skeleton = AXIS2_MALLOC(env->allocator,sizeof(axis2_svc_skeleton_t)); svc_skeleton->ops = &hello_svc_skeleton_ops_var; svc_skeleton->func_array = NULL; return svc_skeleton; } int AXIS2_CALL hello_init(axis2_svc_skeleton_t *svc_skeleton,const axutil_env_t *env){ svc_skeleton->func_array = axutil_array_list_create(env, 0); axutil_array_list_add(svc_skeleton->func_array, env, "helloString"); return AXIS2_SUCCESS; } axiom_node_t* AXIS2_CALL hello_invoke(axis2_svc_skeleton_t *svc_skeleton,const axutil_env_t *env,axiom_node_t *node,axis2_msg_ctx_t *msg_ctx){ return axis2_hello_greet(env, node); } axiom_node_t* AXIS2_CALL hello_on_fault(axis2_svc_skeleton_t *svc_skeli,const axutil_env_t *env, axiom_node_t *node){ axiom_node_t *error_node = NULL; axiom_node_t* text_node = NULL; axiom_element_t *error_ele = NULL; error_ele = axiom_element_create(env, node, "EchoServiceError", NULL,&error_node); axiom_element_set_text(error_ele, env, "Echo service failed ",text_node); return error_node; } int AXIS2_CALL hello_free(axis2_svc_skeleton_t *svc_skeleton,const axutil_env_t *env){ if (svc_skeleton->func_array){ axutil_array_list_free(svc_skeleton->func_array, env); svc_skeleton->func_array = NULL; } if (svc_skeleton){ AXIS2_FREE(env->allocator, svc_skeleton); svc_skeleton = NULL; } return AXIS2_SUCCESS; } AXIS2_EXPORT intaxis2_get_instance(axis2_svc_skeleton_t **inst,const axutil_env_t *env){ *inst = axis2_hello_create(env); if (!(*inst)){ return AXIS2_FAILURE; } return AXIS2_SUCCESS; } AXIS2_EXPORT intaxis2_remove_instance(axis2_svc_skeleton_t *inst,const axutil_env_t *env){ axis2_status_t status = AXIS2_FAILURE; if (inst){ status = AXIS2_SVC_SKELETON_FREE(inst, env); } return status; }
用这个编译成so
gcc -shared -olibhello.so -I$AXIS2C_HOME/include/axis2-1.6.0/ -L$AXIS2C_HOME/lib -laxutil -laxis2_axiom -laxis2_parser -laxis2_engine -lpthread -laxis2_http_sender -laxis2_http_receiver hello_svc.c
wsdl----services.xml:
<service name="hello"> <parameter name="ServiceClass" locked="xsd:false">hello</parameter> <description> Quick start guide hello service sample. </description> <operation name="greet"/> </service>
把service.xml和hello_svc.c生成的libhello.so放到$AXIS2_HOME/service/hello/
启动axis2_http_server
使用http://192.168.1.118:9090/axis2/services查看webservice
具体wsdl用http://192.168.1.118:9090/axis2/services/echo?wsdl等
客户端:
hello.c:
#include <stdio.h> #include <axiom.h> #include <axis2_util.h> #include <axiom_soap.h> #include <axis2_client.h> axiom_node_t * build_om_request(const axutil_env_t *env); const axis2_char_t * process_om_response(const axutil_env_t *env, axiom_node_t *node); int main(int argc, char** argv) { const axutil_env_t *env = NULL; const axis2_char_t *address = NULL; axis2_endpoint_ref_t* endpoint_ref = NULL; axis2_options_t *options = NULL; const axis2_char_t *client_home = NULL; axis2_svc_client_t* svc_client = NULL; axiom_node_t *payload = NULL; axiom_node_t *ret_node = NULL; env = axutil_env_create_all("hello_client.log", AXIS2_LOG_LEVEL_TRACE); options = axis2_options_create(env); address = "http://localhost:9090/axis2/services/hello"; if (argc > 1) address = argv[1]; if (axutil_strcmp(address, "-h") == 0) { printf("Usage : %s [endpoint_url]\n", argv[0]); printf("use -h for help\n"); return 0; } printf("Using endpoint : %s\n", address); endpoint_ref = axis2_endpoint_ref_create(env, address); axis2_options_set_to(options, env, endpoint_ref); client_home = AXIS2_GETENV("AXIS2C_HOME"); if (!client_home && !strcmp(client_home, "")) client_home = "../.."; svc_client = axis2_svc_client_create(env, client_home); if (!svc_client) { printf("Error creating service client\n"); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Stub invoke FAILED: Error code:" " %d :: %s", env->error->error_number, AXIS2_ERROR_GET_MESSAGE(env->error)); return -1; } axis2_svc_client_set_options(svc_client, env, options); payload = build_om_request(env); ret_node = axis2_svc_client_send_receive(svc_client, env, payload); if (ret_node) { const axis2_char_t *greeting = process_om_response(env, ret_node); if (greeting) printf("\nReceived greeting: \"%s\" from service\n", greeting); axiom_node_free_tree(ret_node, env); ret_node = NULL; } else { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Stub invoke FAILED: Error code:" " %d :: %s", env->error->error_number, AXIS2_ERROR_GET_MESSAGE(env->error)); printf("hello client invoke FAILED!\n"); } if (svc_client) { axis2_svc_client_free(svc_client, env); svc_client = NULL; } if (env) { axutil_env_free((axutil_env_t *) env); env = NULL; } return 0; } axiom_node_t * build_om_request(const axutil_env_t *env) { axiom_node_t* greet_om_node = NULL; axiom_element_t * greet_om_ele = NULL; greet_om_ele = axiom_element_create(env, NULL, "greet", NULL, &greet_om_node); axiom_element_set_text(greet_om_ele, env, "Hello Server!", greet_om_node); return greet_om_node; } const axis2_char_t * process_om_response(const axutil_env_t *env, axiom_node_t *node) { axiom_node_t *service_greeting_node = NULL; axiom_node_t *return_node = NULL; if (node) { service_greeting_node = axiom_node_get_first_child(node, env); if (service_greeting_node && axiom_node_get_node_type(service_greeting_node, env) == AXIOM_TEXT) { axiom_text_t *greeting = (axiom_text_t *)axiom_node_get_data_element(service_greeting_node, env); if (greeting && axiom_text_get_value(greeting , env)) { return axiom_text_get_value(greeting, env); } } } return NULL; }
用这个编译
gcc -o hello -I$AXIS2C_HOME/include/axis2-1.6.0/ -L$AXIS2C_HOME/lib -laxutil -laxis2_axiom -laxis2_parser -laxis2_engine -lpthread -laxis2_http_sender -laxis2_http_receiver hello.c -ldl -Wl,--rpath -Wl,$AXIS2C_HOME/lib
执行.hello
root@test-linux:~/Desktop/axis2c/mytest# ./hello Using endpoint : http://localhost:9090/axis2/services/hello Received greeting: "Hello Client!" from service root@test-linux:~/Desktop/axis2c/mytest#
发表评论
-
weak_ptr解决循环引用问题
2021-03-08 21:12 1170C++11引入的三种智能指 ... -
gcc链接顺序
2019-10-12 18:25 631代码在 https://github.com/killinux ... -
c++11的function和bind
2019-09-10 16:12 532参考:https://www.cnblogs.co ... -
opengl的helloworld
2014-10-22 19:41 9021.我提供一个不需要配置环境就可运行的源码。 glut.h放在 ... -
画图板用c++实现和用js实现的websocket版本
2014-10-17 13:02 2129画图板 opencv的c++ #include <o ... -
c语言内存
2014-07-02 10:26 6941、C中内存分为五个区 栈:用来存放函数的形参和函数内的局部变 ... -
重定向stdout到文件
2014-03-05 18:37 5484把stdout重定向到文件 两种方法: 第一种方法没有恢复 ... -
通过nginx远程执行shell
2014-03-03 10:26 5083saltstack远程执行shell,远程管理等返回json已 ... -
c的urldecode
2014-02-28 18:22 1363#include <stdio.h> #in ... -
pthread的pthread_mutex_lock 的使用
2014-02-25 16:54 26142参考http://haoningabc.iteye.com/b ... -
c调用c++
2013-10-12 15:24 1177参考 http://www.cppblog.com/frank ... -
用C语言,实现接收管道输出的结果,并显示
2013-04-23 21:35 1946在shell里利用“|”管道干的事情就是io重定向,把“|”命 ... -
关于char * 与 char[]
2013-04-22 21:56 961问题引入: 在实习过程中发现了一个以前一直默认的错误,同样ch ... -
单向链表翻转
2012-12-25 23:41 1019临时笔记,创建一个链表 #include <stdl ... -
trie 树 的代码
2012-12-14 23:20 1139想起搜狐老大的一句话 看代码先看h文件,擦,当初感觉他这句话很 ... -
指针函数与函数指针的区别
2012-12-14 22:44 1195一、 1、指针函数是指带指针的函数,即本质是一个函数。函数返回 ... -
指针和数组
2012-11-14 22:40 1066转载http://kan.weibo.com/con/3512 ... -
js备份
2012-10-31 23:56 1725<!DOCTYPE HTML PUBLIC " ... -
线程的helloworld
2012-10-30 21:51 1603#include<stdio.h> #inc ... -
c的书籍
2012-10-30 10:56 1128http://www.acm.uiuc.edu/webmonk ...
相关推荐
Axis2是Apache软件基金会开发的一个开放源码的Web服务框架,它主要用于构建高效、可扩展且灵活的Web服务。在Web服务的世界里,Axis2扮演着核心的角色,它支持SOAP和RESTful两种通信模式,是Service-Oriented ...
gcc -I${AXIS2C_HOME}/include -L${AXIS2C_HOME}/lib -laxis2 -laxutil -lxml2 -lz -lcrypto -lssl -o client generated_directory/*.c ``` 3. **测试客户端**:运行编译后的客户端程序,测试其功能是否正常。 #...
标题中的“Axis2_Service_Archiver_1.3.0”指的是一个针对MyEclipse集成开发环境的Axis2 Web服务插件,版本为1.3.0。这个插件是Axis2框架的一部分,用于简化在MyEclipse中创建、部署和管理Axis2 Web服务的过程。 ...
axis2c-bin-1.6.0-linux.tar.gz axis2c-bin-1.6.0-win32.zip axis2c-src-1.6.0.tar.gz axis2c-src-1.6.0.zip 加md5
- **配置AXIS2C_HOME**:在系统环境变量中新增一个名为`AXIS2C_HOME`的变量,将其值设置为Axis2c的安装目录,例如`D:\axis2c`。 ##### 编译与安装 - **源码目录构建**:进入源码文件目录下的`build\win32`子目录,...
MyEclipse下开发Web Service(Axis)所需要的插件,加压缩后直接放在eclipse/plugins下。注意版本是1.3.0,之前我用的是1.1.1打包代码是出现了filesets错误,换成1.3.0就ok了。axis2-1.5.4-war解压放在Tomcat WebApp...
标题 "Axis2_Code_Generator Axis2_Service_Archiver" 指的是Apache Axis2框架中的两个关键工具,用于简化Web服务开发过程。Apache Axis2是一个高效、可扩展且灵活的Web服务引擎,它构建在Apache Axis之上,提供了更...
MyEclipse下开发Web Service(Axis)所需要的插件,解压缩后直接放在eclipse/plugins下,注意这是1.3.0版本。当您生产java代码报异常时,请将axis2/web-inf/lib下的backport-util-concurrent-2.2.jar和stax-api-1.0.1....
先配置好JDK 和Tomcat。...安装AXIS 解压开axis1_ 4.zip ,将axis1_ 4/webapps/axis 拷贝到 $TOMCAT_HOME/webapps/ 下启动tomcat,打开页面http://localhost:8080/axi s 页面正常,表示axis 安装正确。
标题"client_axis.rar_AxisClient_axis client_axis.client_webservice客户端"暗示了这个压缩包包含了一个与Axis相关的Web服务客户端。这个客户端可能是一个Java项目,包含了必要的类库和配置文件,用于与远程Web...
axisServer.deploy("HelloWorld", "/WEB-INF/classes/HelloWorld.class"); } } ``` 3. 在`web.xml`中配置Servlet,并设置映射路径。 4. 将项目部署到Tomcat服务器。 步骤四:测试Web Service 1. 访问浏览器中...
【标题】"Axis2_Codegen_Wizard_1.3.0"是一款专为MyEclipse Web开发设计的Axis插件,其主要功能是自动化生成与Web服务相关的代码,极大地简化了开发过程,提高了开发效率。该插件是基于Apache Axis2框架的,Axis2是...
【标题】"AxisServer_axisservice_" 涉及的核心知识点是 Axis2 和 AxisService,在这里我们主要讨论这两个概念以及如何在Web服务器上部署和测试AxisService。 **Axis2** 是一个高性能、灵活且可扩展的Web服务引擎,...
myeclipse的axis插件,找了很久找到的。1.3.0版的,因为官网上1.6.0版本的在myeclipse中使用起来会有很多问题。 下载下来后直接放到dropins下就可以了,不用修改plugin.xml 包含: Axis2_Service_Archiver_1.3.0 ...
标题中的"axis-src-1_4.zip_axis 1 source_axis 1.4_axis src 1_axis-src_axis"指的是Axis 1.4的源代码压缩包,这是一个与Java XML Web服务处理相关的开源项目。Axis是Apache软件基金会开发的一个SOAP(简单对象访问...
Axis2是Apache软件基金会开发的一个开放源码的Web服务平台,专门用于构建和部署Web服务。这个平台基于Java,提供了一种高效、灵活且可扩展的方式来处理Web服务生命周期的各个阶段,包括创建、部署和执行。Codegen...
标题中的"axis2-idea-plugin-1.7.9.zip_axis2_axis2-idea-plugin_idea导入axis2_"提到了几个关键元素,分别是"axis2"、"idea-plugin"和"idea导入axis2",这暗示了这个压缩包是用于在IntelliJ IDEA这款集成开发环境...
Axis2_Codegen_Wizard_1.3.0在使用时报错,根据网上的方法(从Axis2的lib库中复制"geronimo-stax-api_1.0_spec-1.0.1.jar"和"backport-util-concurrent-3.1.jar"文件到lib目录中,同时修改plugin.xml文件)改好的...
标题中的“axis2 webservice for myeclipse插件Axis2_Codegen_Wizard_1.2.1”是指一个专门用于MyEclipse集成开发环境的Axis2 Web服务生成向导插件,版本为1.2.1。这个插件极大地简化了在MyEclipse中创建和操作Axis2 ...
标题中的“spring-axis2-test.rar_Axis2 Spring3_axis2_axis2 spring3_axis2 s”指的是一个关于Spring和Axis2集成的示例项目,它包含了一组用于演示如何在Spring框架中使用Apache Axis2来开发和部署Web服务的源代码...