axis2c_helloworld
编程技术  /  houtizong 发布于 3年前   65
export AXIS2C_HOME=/root/Desktop/axisexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${AXIS2C_HOME}/lib/
$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
$ 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
root@test-linux:~/Desktop/axis/samples/bin# ./echoUsing endpoint : http://localhost:9090/axis2/services/echoSending 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#
#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;}
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
<service name="hello"> <parameter name="ServiceClass" locked="xsd:false">hello</parameter> <description> Quick start guide hello service sample. </description> <operation name="greet"/></service>
#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
root@test-linux:~/Desktop/axis2c/mytest# ./hello Using endpoint : http://localhost:9090/axis2/services/helloReceived greeting: "Hello Client!" from serviceroot@test-linux:~/Desktop/axis2c/mytest#
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成
网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];
文章归档
文章标签
友情链接