在使用 axis2c 开发 Web 服务时,如何访问轴骨架代码中的服务参数



我正在使用 c++ 中的 apache axis2c 开发一个 SOAP Web 服务。我使用 services.xml 来设置一些特定于服务的参数,我需要在界面axis2_svc_skeleton(例如在函数中)获取这些参数的值axis2_get_instance。但我不知道我该怎么做?
以下是我的服务的一些部分.xml我想在我的代码中访问myreadonlyparam的值:

<service name="myservice">
    <parameter name="myreadonlyparam" locked="xsd:true">myparamvalue</parameter>
    ...
</service>

这是我代码的一部分

AXIS2_EXPORT int axis2_get_instance( axis2_svc_skeleton_t ** inst, const axutil_env_t * env )
{
   *inst = axis2_myservice_create(env);
   if (!(*inst))
   {
      return AXIS2_FAILURE;
   }
   //HERE I NEED SERVICE PARAMETER VALUE
   ...
}

知道吗?

怕没有对象就无法获取服务配置axis2_confaxis2_conf对象只能在init_with_conf函数中访问。

如何获取服务参数的示例:

int AXIS2_CALL my_service_init_with_conf(
    axis2_svc_skeleton_t* skel, const axutil_env_t* env, axis2_conf* conf)
{
    const axis2_char_t* service_name = "myservice";
    /* get service by name */
    struct axis2_svc* service = axis2_conf_get_svc(conf, env, service_name);
    /* get service param */
    axutil_param_t* param = axis2_svc_get_param(service, env, "myreadonlyparam");
    /* get param value */
    const char* value = (const char*) axutil_param_get_value(param, env);
    printf("PARAM VALUE: %sn", value);
    return AXIS2_SUCCESS;
}
/* Skeleton options */
static axis2_svc_skeleton_ops_t skel_ops =
{
    my_service_init,
    my_service_invoke,
    my_service_on_fault,
    my_service_free,
    my_service_init_with_conf
};

AXIS2_EXPORT int axis2_get_instance(
    axis2_svc_skeleton** skel, axutil_env_t* env)
{
    *skel = (axis2_svc_skeleton_t*) AXIS2_MALLOC(
            env->allocator, sizeof(axis2_svc_skeleton_t));
    if (!*skel)
        return AXIS2_FAILURE;
    (*skel)->ops = &skel_ops;
    (*skel)->func_array = NULL;
    return AXIS2_SUCCESS;
}

输出:

$ ./axis2_http_server参数值:我的参数值已启动简单轴2 HTTP 服务器...

相关内容

  • 没有找到相关文章

最新更新